/**
***定步长复化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;
}