迭代程序改错

C语言 码拜 7年前 (2017-04-16) 962次浏览
题目要求:
利用以下所示的简单迭代方法求方程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);{

#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;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明迭代程序改错
喜欢 (0)
[1034331897@qq.com]
分享 (0)