返回首页
当前位置: 主页 > 编程语言 > Matlab教程 >

简单迭代法

时间:2014-09-25 23:14来源:电脑教程学习网 www.etwiki.cn 编辑:admin

/*f(x)=x^3-3x+1=0;
x(k+1)=[x(k)^3+1]/3;
x(0)=0.5;
(0,1)searching*/
#include<iostream.h>//简单迭代法
#include<math.h>
double fai(double x)//函数f(x)=x^3-3x+1=0解的隐式表达式
{
double f;
f=(pow(x,3)+1)/3;
return f;
}
void main()
{
double x0;//迭代初值
double x;
double c;//最小限
int N;//最大迭代次数;
int k;
int flag;
int tap=0;
cout<<"演示简单迭代法求解函数的根"<<endl<<"求解函数f(x)=x^3-3x+1=0在(0,1)上的根,迭代公式:x(k+1)=[x(k)^3+1]/3"<<endl<<"初值x(0)=0.5,精确到5位"<<endl;
cout<<"Please input x0,c,N:"<<endl;//x0=0.5,c=0.5*10^(-5),N=50
//1.
cin>>x0>>c>>N;//输入初值
//2.
x=fai(x0);
//3.
flag=1;
//4.
for(k=1;k<N;k++)
{
//5.
if(fabs(x-x0)>c)
{
x0=x;
x=fai(x0);
tap++;
}
else
{
break;
}
}
//6.
if(k>=N)
{
flag=0;
}
if(flag==1)
{
cout<<"x="<<x<<endl;
cout<<"简单迭代法求解的迭代步数是:"<<tap<<endl;
}
else
{
cout<<"求解失败flag="<<flag<<endl;
}
}
/*
简单迭代算法:
1.输入x0,c,N(最大迭代次数)
2.fai(x0)->x,1->k
3.1->flag
4.k<N?
是,k+1->k,转5.
否,转6.
5.|x-x0|>c?
是,x->x0,fai(x0)->x,转4.
否,转6.
6.若k>=N,0->flag
若flag=1,则输出x, stop
若flag=0,则输出flag(算法失败)
*/

------分隔线----------------------------
标签(Tag):简单迭代法
------分隔线----------------------------
推荐内容
猜你感兴趣