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 + -
显示快捷键?