用迭代法解非线性方程的通用程序题
发布网友
发布时间:2024-03-15 18:52
我来回答
共1个回答
热心网友
时间:2024-04-08 12:11
现在我只用了牛顿迭代法和二分法作出来了。用迭代法我解不出来!呵呵,你先用着!
牛顿迭代法:
#include<stdio.h>
#include<math.h>
main()
{
float x,x0,f,f1;
x0=1.5;
do
{
x=x0;
f=x*x*x-2*x*x+10*x-20;
f1=3*x*x-4*x+10;
x0=x-f/f1;
}
while(fabs(x0-x)>=1e-5);
printf("x=%6.2f\n",x);
}
二分法:
#include<stdio.h>
#include<math.h>
main()
{float x0,x1,x2,fx0,fx1,fx2;
do{printf("Enter x1 & x2:");
scanf("%f,%f",&x1,&x2);
fx1=x1*x1*x1-2*x1*x1+10*x1-20;
fx2=x2*x2*x2-2*x2*x2+10*x2-20;
}
while((fx1*fx2)>0);
do{x0=(x1+x2)/2;
fx0=x0*x0*x0-2*x0*x0+10*x0-20;
if((fx0*fx1)>0)
{x1=x0;
fx1=fx0;
}
else
{x2=x0;
fx2=fx0;
}
}
while(fabs(fx0)>=1e-5);
printf("x0=%6.2f\n",x0);
}