1、编写程序,分别用二分法和牛顿迭代法求解方程x3 – 3x – 1 = 0在x = 2附近的实根,要求计算精确到小数点后七位数字为止,并将求出的近似结果与理论值2cos20 相比较,二分法的初始迭代

来源:互联网 发布:淘宝双十一红包不中 编辑:程序博客网 时间:2024/05/21 06:37

二分法:

#include<stdio.h>

#include<math.h>
void main()
{
    double x,x1=1,x2=3,f1,f2,f;
    f1=x1*x1*x1-3*x1-1;
    f2=x2*x2*x2-3*x2-1;
    if(f1*f2>0)
        printf("在此区间没有根!");
    else
    {
        do
        {x=(x1+x2)/2;
        f=x*x*x-3*x-1;
        if(f==0)
            break;
        else if(f1*f>0)
        {x1=x;
        f1=f;}
        else
        {
            x2=x;
        }}
        while(fabs(x1-x2)>=0.000001);
            printf("近似值为: %.7f\n",x);    
            printf("与理论值相差为: %.7f",x-1.8793852);
            
    }

}  

牛顿迭代法:    

#include<stdio.h>
#include<math.h>
void main()
{double f0,f1,x0,x1=2;
do{
    x0=x1;
    f0=3*x0*x0-3;
f1=x0*x0*x0-3*x0-1;
x1=x0-f1/f0;
}
while(fabs(x1-x0)>=0.0000001);
printf("近似值为: %.7f",x1);
printf("与理论值相差: %.7f",x1-1.8793852);
    
}        



0 0
原创粉丝点击