/** ***定步长复化Simpson解积分方程*** n-1 定步长复化Simpson公式:Sn=h/6{f(a)-f(b)+ ∑ [ 4f(x(k-1/2)) + 2f(x(k)) ]} k=0 属性:数值积分法 误差(精度):I - Sn ≈ - 1/180 * (h*h*h*h)/2 * [ f'''(b) - f'''(a) ] h = ( b - a ) / n 《数值分析简明教程》-2 Editon -高等教育出版社- page 65 算法流程图 代码维护:2005.6.14 DragonLord **/ **/ #include<iostream.h> #include<math.h> #include<stdio.h> double f(double x) { double f; if(x==0)f=1; // 1 else f=sin(x)/x; // 举例方程 I = ∫ sin(x)/x dx return f; // 0 } int main() { double h,s,a,b,n,x; while(cin>>a>>b>>n) { h=(b-a)/n; s=f(a)-f(b); x=a; for(int i=0;i<n;i++) { x=x+h/2; s=s+4*f(x); x=x+h/2; s=s+2*f(x); printf("x=%.7f f(x)=%.7f,x=%.7f f(x)=%.7f s=%.7f\n",x-h/2,f(x-h/2),x,f(x),h*s/6); } } return 0; }
|