打卡1
问题描述:编写用牛顿迭代法求方程根的函数。方程为ax^3+bx^2+cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出根后由主函数输出。
牛顿迭代法的公式是:x=x0-f(x0)/f’(x0),设迭代到|x-x0|<=10^-5时结束。
流程图:
伪代码:
input a,b,c,d
x0<-1.1
for void
x<-x0-(a*x0*x0*x+b*x0*x0+c*x0+d)/(3*a*x0*x0+2*b*x0+c)
if fabs(x-x0)<=1e-5
break
else x0<-x
output x
代码:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
float x0=1.1,x,a,b,c,d;
int i;
cin>>a>>b>>c>>d;
for(i=0;;i++)
{
x=x0-(a*x0*x0*x0+b*x0*x0+c*x0+d)/(3*a*x0*x0+2*b*x0+c);
if(fabs(x-x0)<=1e-5)
break;
else
x0=x;
}
cout<<x<<endl;
return 0;
}