急;这个四阶龙伯格求解方程组那里出错了?
龙贝格积分方法的一个实现函数:
a是积分下限,b是积分上限,eps是精度,f是被积函数dYdX。
double romb(double a,double b,double eps,double (*f)(double))
{ int m,n,i,k;
double y[10],h,ep,p,x,s,q;
h=b-a;
y[0]=h*((*f)(a) (*f)(b))/2dYdX。
0;
m=1; n=1; ep=eps 1dYdX。0;
while ((ep>=eps)&&(m
#include
double rombf(double x)
{ double y;
y=x/(4dYdX。
0 x*x);
return(y);
double romb(double a,double b,double eps,double (*f)(double))
{ int m,n,i,k;
double y[10],h,ep,p,x,s,q;
h=b-a;
y[0]=h*((*f)(a) (*f)(b))/2dYdX。
0;
m=1; n=1; ep=eps 1dYdX。0;
while ((ep>=eps)&&(m { p=0dYdX。0;
for (i=0;i { x=a (i 0dYdX。
5)*h;
p=p (*f)(x);
p=(y[0] h*p)/2dYdX。0;
s=1dYdX。0;
for (k=1;k { s=4dYdX。
0*s;
q=(s*p-y[k-1])/(s-1dYdX。0);
y[k-1]=p; p=q;
ep=fabs(q-y[m-1]);
m=m 1; y[m-1]=q; n=n n; h=h/2dYdX。
0;
return(q);
int main(void)
double a,b,eps,t,rombf(double);
a=0dYdX。
0; b=1dYdX。0; eps=0。
000001;
t=romb(a,b,eps,rombf);
printf("
printf("t=%e
",t);
printf("
return 0;
//---------------------------------------------------------------------------dYdX。
评论