(一)牛顿迭代法
又称为牛顿-雷夫生方法(Newton-Raphson method),是一种在实数域和复数域上通过迭代计算求出非线性方程的数值解方法。方法的基本思路是利用一个根的猜测值x0做初始近似值,使用函数f(x)在x0处的泰勒级数展式的前两项做为函数f(x)的近似表达式。由于该表达式是一个线性函数,通过线性表达式替代方程f(x)= 0中的f(x)求得近似解 x1。即将方程f(x)= 0在x0处局部线性化计算出近似解x1,重复这一过程,将方程f(x)= 0在x1处局部线性化计算出x2,求得近似解x2,……。
#include <iostream>
#include <math.h>
using namespace std;
double f(float x)
{
return pow(x,6)-x-1;
}
double fdao(float x)
{
return 6*pow(x,5)-1;
}
int main()
{
int k;
cout<<"请输入需要迭代的次数K"<<endl;;
cin>>k;
float e;
cout<<"请输入给定的精度e"<<endl;
cin>>e;
double x[10];
cout<<"请输入方程f(x)=0的一个根X0="<<endl;
cin>>x[0];
if(fdao(x[0])!=0)
{
for(int i=1;i<=k;i++)
x[i]=x[i-1]-f(x[i-1])/fdao(x[i-1]);
cout<<" k Xk f(Xk) "<<endl;
for(int i=0;i<=k;i++)
{
printf("/n %d %10.8f %8.9e",i,x[i],f(x[i]));
if(fabs(x[i]-x[i-1])>=e)
{
cout<<" 精度不满足";
}
}
}else
cout<<"曲线y=f(x)与x轴平行,故方程无解。"<<endl;
return 0;
}