用牛顿迭代法求下面方程y=x^3-5x^2+16x-80的实根的过程是:
1.你想在谁附近求解,这个范围或者这个数值大多是题目已经给定了的(本例是根据输入的数值来计算的)
2.令f(x)=x*x*x-5*x*x+16*x-80
3.x1=X
c语言算法书籍 4.求f(x1)
5.对f(x)求导,得到f1(x),求f1(x1)
6.调整x,使x=x1-f(x1)/f1(x1)
7.符合条件x-x1>1e-5,转到第3步
8.不符合条件x-x1>1e-5,则x1就是我们要求的实根
#include <stdio.h>
#include <math.h>
//y=x^3-5x^2+16x-80
float f(float x)
{
return (pow(x,3)-5*pow(x,2)+16*x-80);
}
float f1(float x)
{
return (3*pow(x,2)-10*x+16);
}
void main()
{
float x,x1,y1,y2;
printf("请输入一个任意实数:X=");
scanf("%f",&x);
printf("我可以帮你到这个方程的解\n");
do{
x1=x;
y1=f(x);
y2=f1(x1);
x=x1-y1/y2;
}
while (fabs(x-x1)>=1e-5);
printf("A root is %f\n",x1);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论