二分法:
#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);
}
这篇博客介绍了如何利用二分法和牛顿迭代法来求解方程x3 - 3x - 1 = 0在x = 2附近的实根,直到达到小数点后七位的精度。通过编程实现这两种方法,并将得到的近似解与理论值2cos20进行比较,展示了两种数值计算方法的精度和效果。

1万+

被折叠的 条评论
为什么被折叠?



