计算方法 实验二 非线性方程求根

一、问题提出

设方程f(x)=x^3-3x-1=0 有三个实根X1=18739,X2=-0.34727,X3=-1.53209,现采用下面六种不同计算格式,求f(x)=0的根X1,X2;

二、要求

1、编制一个程序进行运算,最后打印出每种迭代格式的敛散情况;
2、用事后误差估计|X(k+1)-Xk|
3、初始值的选取对迭代收敛有何影响;
4,分析迭代收敛和发散的原因;

三、目的和意义

1、通过实验进一步了解方程求根算法;
2、认识选择计算格式的重要性;
3,掌握迭代算法和精度控制;
4,明确迭代收敛性与初值选取的关系;

四、代码

#include 
#include 
#include 
#include 
using namespace std;
const int maxn=10000;
#define eps 1e-10
double g(double x)
{
    //return (3*x+1)/pow(x,2);
    //return (pow(x,3)-1)/3;
    //return pow((3*x+1),1.0/3.0);
    //return 1/(x*x-3);
    //return sqrt(3+1/x);
    //return (x-((1.0/3.0)*((x*x*x-3*x-1)/(x*x-1))));
}


double abs(double x)
{
    return x<0?-x:x;
}


int main()
{
    //freopen("in.txt","r",stdin);
    int cnt=0;
    double x1=-0.5,x2=2;
    while((fabs(x2-x1)>=eps)&&cnt<=maxn)
    {
        double temp=g(x1);
        x2=x1;
        x1=temp;
        cnt++;
    }
    if(cnt




你可能感兴趣的:(计算方法 实验二 非线性方程求根)