#include<stdio.h>
#include<math.h>
//要求使用函數(shù)嵌套
//這道題屬于非線性方程的數(shù)值解法:弦截法
//數(shù)值分析上講的,跟程序書里講的不太一樣,程序書里還要求f(x1)*f(x2)<0
float f(float x)
{
return(x*x*x-5*x*x+16*x-80);
}
float xp(float x1,float x2)
{
return((x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)));
}
float root(float x1,float x2)
{float x,y;
do
{
x=xp(x1,x2);
y=f(x);
if(f(x)*f(x1)>0)
x1=x;
else if(f(x)*f(x2)>0)
x2=x;
}while(fabs(y)>=1e-6);
return(x);
}
void main()
{float x1,x2;
do
{
scanf("%f%f",&x1,&x2);
}
while(f(x1)*f(x2)>0);
printf("root=%f\n",root(x1,x2));
}
|