Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- //fact
- double fact(int n) {
- if (n == 0) return 1;
- return n * fact(n - 1);
- }
- //taylor series for sin(x)
- double myfunc(double x) {
- double sum = 0;
- double previous_result;
- for (int i = 0; i < 10; i++) {
- double result = pow(-1, i) * pow(x, 2 * i + 1) / fact(2 * i + 1);
- if(abs(result - previous_result) < 1e-15) {
- break;
- }
- previous_result = pow(-1, i) * pow(x, 2 * i + 1) / fact(2 * i + 1);
- sum += previous_result;
- }
- return sum;
- }
- int main() {
- int n = 15;
- // array of arguments x
- double *x = new double[n];
- for (int i = 0; i < n; i++ ) x[i] = 0.1 * (i+1); // x=0.1,0.2,...,0.5
- // setup result arrays for your function
- double *fmy = new double[n];
- double *std = new double[n];
- for (int i = 0; i < n; i++ ) {
- fmy[i] = myfunc(x[i]);
- std[i] = sin (x[i]);
- }
- // output the result of standard deviation
- double dev = 0.0;
- for (int i = 0; i < n; i++ ) {
- double diff = std::abs(fmy[i] - std[i]);
- std::cout << i << ") sin(x=" << x[i] << ")=" << fmy[i]
- << " C++ sin(x)=" << std[i] << " diff=" << diff
- << std::endl;
- dev += diff * diff;
- }
- dev = sqrt(dev / n);
- std::cout << "dev = " << dev << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement