计算方法牛顿迭代法
周三3-5节 水利三班 张同庆 2015301580072
题目
求1+3*x-x*x*x=0在x附近满足精度要求e下的根
(x,e均为输入,这里输入数据为x=2.0,e=0.0001)
程序源码
#include
#include
double f(double x)
{
return (1.0+3.0*x-x*x*x);
}
double g(double x)
{
return (3.0-3.0*x*x);
}
double h(double y,double t)
{
double x1,x0;
int n=0;
x0=y;
printf("x%d=%lf\n",n,x0);
while (fabs(f(x0))>t)
{
x1=x0-f(x0)/g(x0);
if( fabs(x1-x0)
y=x1;
printf("x%d=%lf\n",n+1,x1);
return y;
}
else
{
x0=x1;
n++;
printf("x%d=%lf\n",n,x0);
}
}
}
int main()
{
double x,e;
printf("输入初始迭代值x0:");
scanf("%lf",&x);
printf("输入迭代要求的精度:");
scanf("%lf",&e);
e=fabs(e);
printf("%lg旁边满足精度要求的根是%lf",x,h(x,e));
return 0;
}
程序分步数据
x0=2.000000
x1=1.888889
x2=1.879452
x3=1.879385
2旁边满足精度要求的根是1.879385
相关主题