您的位置:首页 > 其它

牛顿迭代法求方程根

2005-06-14 21:08 155 查看
/**
***牛顿迭代法求方程根***
牛顿公式:x(k+1) = x(k) - f(x(k)) / f'(x(k))
迭代函数:Ф(x) = x - f(x) / f'(x)
属性:方程求根迭代法

此时的迭代函数必须保证X(k)有极限,即迭代收敛。
《数值分析简明教程》-2 Editon -高等教育出版社 -page 136 -算法流程图
代码维护:2005.6.14 DragonLord
**/
#include<iostream.h>
#include<math.h>
#include<stdio.h>
//范例程序中方程为:x*exp(x)-1=0
double f1(double x) //方程一阶求导的形式
{
return 1+x;
}
double f0(double x) //原方程形式
{
return x-exp(-x);
}
int main()
{
double x0,x1,e;
int N,k;
while(cin>>x0>>e>>N)
{
k=1;
loop: if(f1(x0)==0){cout<<"函数异常!"<<endl;break;}
else
{

x1=x0-f0(x0)/f1(x0); //key step
printf("x%d=%.5f/n",k,x1);
}

if(x1-x0<e&&x1-x0>-e)
{
printf("final result: x%d=%.5f/n",k,x1);
break;
}
else
{
if(k!=N)
{
k++;
x0=x1;
goto loop;
}
else
cout<<"迭代计算失败!"<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: