Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.82 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <time.h>
  5.  
  6.  
  7. double solve (double x, double eps);
  8. double power (double x, double y);
  9. double taylor_series (double exponent1, double x, double eps);
  10.  
  11.  
  12.  
  13.  
  14. double solve (double x, double eps)
  15. {
  16.     double res = x;
  17.     double fl, fraction_part;
  18.     double exponent1, exponent2;
  19.     int i;
  20.    
  21.    
  22.     fl = floor(x);
  23.     fraction_part = x - fl;
  24.    
  25.    
  26.     exponent1 = power(M_E, fl);
  27.    
  28.     exponent2 = taylor_series(exponent1, fraction_part, eps);
  29.    
  30.    
  31.    
  32.     res = exponent1 * exponent2;
  33.    
  34.     return res;
  35. }
  36.  
  37.  
  38.  
  39.  
  40. double power (double x, double y)
  41. {
  42.     double res = 1;
  43.     int i;
  44.     double pos = fabs(y);
  45.    
  46.    
  47.    
  48.     for (i = 0; i < y; ++i)
  49.         res *= x;
  50.    
  51.    
  52.     if (y < 0)
  53.         res = 1 / res;
  54.    
  55.    
  56.    
  57.     return res;
  58. }
  59.  
  60.  
  61.  
  62. double taylor_series (double exponent1, double x, double eps)
  63. {
  64.     double monomial = 1;
  65.     double s = monomial;
  66.     int k;
  67.    
  68.    
  69.     if (fabs(exponent1 * monomial) < eps)
  70.         return s;
  71.    
  72.    
  73.     for (k = 1; ; ++k) {
  74.        
  75.         monomial *= x / k;
  76.        
  77.         if (fabs(exponent1 * monomial) < eps)
  78.             break;
  79.        
  80.         s += monomial;
  81.     }
  82.    
  83.    
  84.    
  85.     return s;
  86. }
  87.  
  88.  
  89.  
  90.  
  91. int main (void)
  92. {
  93.     double t, res, x, eps;
  94.    
  95.    
  96.    
  97.     printf("Input \"x\" and \"eps\": ");
  98.    
  99.     if (scanf("%lf %lf", &x, &eps) != 2)
  100.         return 1;
  101.    
  102.    
  103.     if (eps <= 0)
  104.         return 2;
  105.    
  106.    
  107.    
  108.     t = clock();
  109.    
  110.     res = solve(x, eps);
  111.    
  112.     t = (clock() - t) / CLOCKS_PER_SEC;
  113.    
  114.    
  115.    
  116.     printf("\nThe answer is %.16f\n", res);
  117.     printf("The difference = %.16f", fabs(res - exp(x)));
  118.     printf("\nElapsed = %.2f\n", t);
  119.    
  120.    
  121.    
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement