下列程序的功能是:利用如下所示的简单迭代方法求方程cos(x)-x=0的一个实根。迭代式为:xn+1=cos(xn
下列程序的功能是:利用如下所示的简单迭代方法求方程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 main(){ clrscr(); printf("A=%f ",countValue()); printf("%f ",cos(countValue())-countValue()); writeDAT();} void writeDAT(){ FILE *wf; wf=fopen("out17.dat","w"); fprintf(wf,"%f ",countValue()); fclose(wf);}
-
参考答案:请参考解析【解析及答案】本题的任务是把函数countvalue() 补充完整。该函数利用迭代法求解方程。迭代法求解的过程就是先设置两个变量X0和X1,其中X1比X0更接近方程的解。为方程的初始解X1先赋予一个任意值,然后把X1赋予X0,把X0带入迭代式,求出的结果是比X0更接近方程的根的值。接着比较X0和X1差的绝对值,如果小于要求的精度,则X1就是方程的一个实根;否则,继续上述过程。由于上述过程具有反复迭代的特征,故称为迭代法。一般利用do…while循环比较容易实现上述算法。由上述过程可知,能够使用迭代法求解的方程必须是收敛的,发散的无法求解。综上所述,完整的函数countvalue() 如下。float countValue(){ float x0,x1=0.0; do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=0.000001);return x1;}
