5_2.cpp
资源名称:c.rar [点击查看]
上传用户:puke2000
上传日期:2022-07-25
资源大小:912k
文件大小:1k
源码类别:

C#编程

开发平台:

Visual C++

  1. //5_2
  2. #include <iostream.h>
  3. #include <iomanip.h>
  4. #include <math.h>
  5. double f(double x);
  6. double integral(double a, double b);
  7. const double eps = 1e-8;
  8. void main()
  9. {
  10.   double a=0, b=1;
  11.   cout <<"the integral of f(x) from "
  12.        <<a <<" to " <<b <<" is n"
  13.        <<setiosflags(ios::fixed)
  14.        <<setprecision(8)
  15.        <<setw(8) <<integral(a,b) <<endl;
  16. }
  17. double f(double x)
  18. {
  19.   return exp(x)/(1+x*x);
  20. }
  21. double integral(double a, double b)
  22. {
  23.   int n=1;
  24.   double h,tn,t2n,i2n,in=0;
  25.   h = b-a;
  26.   t2n = i2n = h*(f(a)+f(b))/2;
  27.   while(fabs(i2n-in)>=eps){
  28.     tn = t2n;
  29.     in = i2n;
  30.     double sigma = 0.0;
  31.     for(int k=0; k<n; k++){
  32.       double x = a+(k+0.5)*h;
  33.       sigma += f(x);
  34.     }
  35.     t2n = (tn+h*sigma)/2.0;   //变步长梯形
  36.     i2n = (4*t2n-tn)/3.0;     //辛普生公式
  37.     n *= 2;
  38.     h /= 2;
  39.   }
  40.   return i2n;
  41. }