问答题
下列程序的功能是:利用以下所示的简单迭代方法求方程:cos(X)-X=0的一个实根。
Xn+1=cos(Xn)
迭代步骤如下:
(1)取X1初值为0.0;
(2)X0=X1,把X1的值赋给X0;
(3)X1=cos(X0),求出一个新的X1;
(4)若X0-X1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);
(5)所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。
请编写函数countValue()实现程序的要求,最后调用函数writeDat(),把结果输出到OUT.DAT文件中。
注意:部分源程序已给出。
请勿改动主函数main()和输出数据函数writeDat()的内容。
#include<conio.h>
#include<math.h>
#include<stdio.h>
float countValue()
void writeDat()
FILE*wf;
wf=fopen("OUT.DAT","w");
fprintf(wf,"%f/n",countValue());
fclose(wf);
main()
printf("实根=%f/n",countValue());
printf("%f/n",cos(countValue())-countValue());
writeDat();
【正确答案】float eountValue()
float X0,X1=0.0; /*取X1初值为0.0*/
while(1)
X0=X1; /*把X1的值赋给X0*/
X1=(float)cos(X0); /*求出一个新的X1*/
if(fabs(X0-X1)<1e-6)
break; /*若X0=X1的绝对值小于0.000001(即1e-6),则退出循环*/
}
return X1;
}
【答案解析】