数值分析课程设计,编制一般迭代法、牛顿法、弦截法求解方程组的计算机程序,并分析它们的特点

2024-11-27 12:00:50
推荐回答(1个)
回答1:

C++才是主流语言。。
你是建模用的吗?那可根据语法稍加修改,这个编程实现的难度不大。

#include //弦截法
using namespace std;

static int count=1;

double f(double x)
{
return (x*x*x-x-1);

}
int main()
{
double x0,x1,x2;
double e=0.00001;

cout<<"请输入两个初值X0,X1"< cin>>x0>>x1;

x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));
while(x2-x1>e||x1-x2>e)
{
x0=x1;
x1=x2;

x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));
count+=1;
}
cout<<"方程的根为:"< cout<<"迭代的次数为:"< return 0;
}
#include//简单迭代法
#include
using namespace std;
double f(double t0)
{ double t=t0+1;
return pow(t,1.0/3);
}
int main()
{
double a,b,x0,x1,e;
static int count=1;
cout<<"请输入A,B的值"< cin>>a>>b;
cout<<"请输入E的值"< cin>>e;
x0=(a+b)/2;
x1=f(x0);
while((x1-x0)>e||(x0-x1)>e)
{
count+=1;
x0=x1;
x1=f(x0);
}
cout<<"方程的根为:"< cout<<"迭代次数"< return 0;
}
#include //牛顿迭代法
using namespace std;
static k=0;
static int count=1;

double newt(double x)
{
return (x*x*x-x-1);

}
int main()
{
double x0,x1,x2;

cout<<"请输入两个初值X0,X1"< cin>>x0>>x1;

x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));
while(x2-x1>e||x1-x2>e)
{
x0=x1;
x1=x2;

x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));
count+=1;
}
cout<<"方程的根为:"< cout<<"迭代的次数为:"< return 0;
}
牛顿迭代法是求方程根的重要方法之一,,方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。另外该方法广泛用于计算机编程中。

简单迭代法又称逐次迭代法,基本思想是构造不动点方程,以求得近似根。即由方程f(x)=0变换为x=F(x), 然后建立迭代格式

弦截法计算x(k+1)时需要利用前两步信息x(k),x(k-1).免去了Newton法中需要求解一阶导函数的繁琐.
但收敛速度比牛顿法要慢