编写用牛顿迭代法求方程根的函数。方程为a*x的三次方+b*x的平方+c*x+d=0,系数a,b,c,d有主函数输入。求x在1附近的一个实根。求出根后,有主函数输出。牛顿迭代法的公式是:x=x。-f(x。)/f’(x。),设迭代到 |x-x。|<=10的-5次方时结束。
牛顿迭代法是在已知x0的基础上寻找更接近方程的根的值,从而找到更近似的值。设m为f(x)=0的根,我们先选取x0作为m的近似值,利用导数求出x1作为更接近m的值,利用条件判断求出符合范围内的x的值。
#include<iostream>
#include<cmath>//函数中用了fabs取绝对值函数,要写这个头文件
using namespace std;
float solution(float a,float b,float c,float d)//定义求值函数并接受传入的值
{
float x0,x=1.5,y,y1,z;
do
{
x0=x;
y=a*x0*x0*x0+b*x0*x0+c*x0+d;
y1=3*a*x0*x0+2*b*x0+c;
z=y/y1;
x=x0-z;
}while(fabs(x-x0)>=1e-5);
return x;
}
int main()
{
float a,b,c,d,x;//a,b,c,d 表示系数,x用来获取结果
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"c=";
cin>>c;
cout<<"d=";
cin>>d;
x=solution(a,b,c,d);
cout<<"方程x的根为x="<<x<<endl;
return 0;
}
运行结果如下:
标签:方程,cout,float,牛顿,cin,迭代法,x0,函数 From: https://www.cnblogs.com/618zyk/p/17320115.html