Advertisement
Joporezka1

Untitled

Jun 20th, 2022
762
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4.  
  5.  //fact
  6. double fact(int n) {
  7.     if (n == 0) return 1;
  8.     return n * fact(n - 1);
  9. }
  10.  
  11. //taylor series for sin(x)
  12. double myfunc(double x) {
  13.     double sum = 0;
  14.  
  15.     double previous_result;
  16.     for (int i = 0; i < 10; i++) {
  17.         double result = pow(-1, i) * pow(x, 2 * i + 1) / fact(2 * i + 1);
  18.         if(abs(result - previous_result) < 1e-15) {
  19.             break;
  20.         }
  21.         previous_result = pow(-1, i) * pow(x, 2 * i + 1) / fact(2 * i + 1);
  22.         sum += previous_result;
  23.     }
  24.     return sum;
  25. }
  26. int main() {
  27.     int n = 15;
  28.     // array of arguments x
  29.     double *x = new double[n];
  30.     for (int i = 0; i < n; i++ ) x[i] = 0.1 * (i+1); // x=0.1,0.2,...,0.5
  31.     // setup result arrays for your function
  32.     double *fmy = new double[n];
  33.     double *std = new double[n];
  34.     for (int i = 0; i < n; i++ ) {
  35.         fmy[i] = myfunc(x[i]);
  36.         std[i] = sin (x[i]);
  37.     }
  38.     // output the result of standard deviation
  39.     double dev = 0.0;
  40.     for (int i = 0; i < n; i++ ) {
  41.         double diff = std::abs(fmy[i] - std[i]);
  42.         std::cout << i << ") sin(x=" << x[i] << ")=" << fmy[i]
  43.                   << " C++ sin(x)=" << std[i] << " diff=" << diff
  44.                   << std::endl;
  45.         dev += diff * diff;
  46.     }
  47.     dev = sqrt(dev / n);
  48.     std::cout << "dev = " << dev << std::endl;
  49.     return 0;
  50. }
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement