题目要求:
利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。
迭代公式:
Xn+1=cos(Xn)
迭代步骤如下:
(1)取x1初值为0.0;
(2)令x0=x1;
(3)求指导得到x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于给定阈值d,则执行步骤(5),否则执行步骤(2);
(5)所求的x1就是方程cos(x)-x=0的一个实根,作为结果返回。
输入为一个小数,即阈值d,0<d<1。
输出迭代法算出的x值,保留2位小数。
本人的代码:
#include<stdio.h>
#include<math.h>
int main()
{
double x0,x1,d;
scanf(“%lf”,&d);
x1=0.0;
do{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)<d);{
printf(“%.2f\n”,x1);
}
return 0;
}
当输入d=0.5时,输出应该为0.54 而本人的代码输出为1
不知该怎么样修改
利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。
迭代公式:
Xn+1=cos(Xn)
迭代步骤如下:
(1)取x1初值为0.0;
(2)令x0=x1;
(3)求指导得到x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于给定阈值d,则执行步骤(5),否则执行步骤(2);
(5)所求的x1就是方程cos(x)-x=0的一个实根,作为结果返回。
输入为一个小数,即阈值d,0<d<1。
输出迭代法算出的x值,保留2位小数。
本人的代码:
#include<stdio.h>
#include<math.h>
int main()
{
double x0,x1,d;
scanf(“%lf”,&d);
x1=0.0;
do{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)<d);{
printf(“%.2f\n”,x1);
}
return 0;
}
当输入d=0.5时,输出应该为0.54 而本人的代码输出为1
不知该怎么样修改
解决方案
100
while(fabs(x0-x1)<d);{
改成
while(fabs(x0-x1)>=d);{
改成
while(fabs(x0-x1)>=d);{
#include<stdio.h> #include<math.h> int main() { double x0,x1,d; scanf("%lf",&d); x1=0.0; do{ x0=x1; x1=cos(x0); } while(fabs(x0-x1)>=d);{ printf("%.2f\n",x1); } return 0; }