急;这个四阶龙伯格求解方程组那里出错了?

Connor binance交易所 2022-09-01 174 0

  龙贝格积分方法的一个实现函数:

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

评论