root.c
来自「由c语言编写的解非线性方程」· C语言 代码 · 共 46 行
C
46 行
#include<stdio.h>
#include<math.h>
double fun(double x)
{
double y;
y=log10(x-1)-1;
return y;
}
double root(double h,double e,double rt0)
{
double y1,y2,xa,xb,xc,ya,yb,yc,xd=0.0;
y1= fun(rt0);
do
{
rt0=rt0+h;
y2=fun(rt0);
if((y1*y2)<=0.0) break;
y1=y2;
}while(1);
ya=y1;yb=y2;xa=rt0-h;xb=rt0;
do
{
xc=xb-(xb-xa)*yb/(yb-ya);
if(fabs(xd-xc)<=e) break;
yc=fun(xc);
if(yc*ya>0.0)
{
ya=yc;
xa=xc;
}
if(yc*yb>0.0)
{
yb=yc;
xb=xc;
}
xd=xc;
}while(1);
return xc;
}
void main()
{
double x;
x=root(0.01,0.000001,2.0);
printf("%f",x);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?