一数值计算关于传递参数的问题
我这个程序是对分法求方程的根,源代码引自徐士良的《数值分析》一书。一共两个c文件,整个流程:
1、将算法单独写成一个独立的c文件(dhrt.c),供下面调用
2、主main函数,调用1步骤的算法,并在(dhrt0.c)这个c文件的末尾定义了要解得方程,原先的例子,方程式编译前提前在代码里定义好。由于我想解得是一个固定格式的多项式方程,因此想在计算时互动的输入多项式方程的系数。
无奈不知道怎么调用,下面是我的源程序:
算法(dhrt.c):
#include "math.h"
int dhrt(a,b,h,eps,x,m,f)
int m;
double a,b,h,eps,x[],(*f)();
{ int n,js;
double z,y,z1,y1,z0,y0;
n=0; z=a; y=(*f)(z);
while ((z<=b+h/2.0)&&(n!=m))
{ if (fabs(y)<eps)
{ n=n+1; x[n-1]=z;
z=z+h/2.0; y=(*f)(z);
}
else
{ z1=z+h; y1=(*f)(z1);
if (fabs(y1)<eps)
{ n=n+1; x[n-1]=z1;
z=z1+h/2.0; y=(*f)(z);
}
else if (y*y1>0.0)
{ y=y1; z=z1;}
else
{ js=0;
while (js==0)
{ if (fabs(z1-z)<eps)
{ n=n+1; x[n-1]=(z1+z)/2.0;
z=z1+h/2.0; y=(*f)(z);
js=1;
}
else
{ z0=(z1+z)/2.0; y0=(*f)(z0);
if (fabs(y0)<eps)
{ x[n]=z0; n=n+1; js=1;
z=z0+h/2.0; y=(*f)(z);
}
else if ((y*y0)<0.0)
{ z1=z0; y1=y0;}
else { z=z0; y=y0;}
}
}
}
}
}
return(n);
}
主