问答题
编写函数fun,其功能是:利用下面的简单迭代方法求方程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的一个实根,作为函数值返回。
程序将输出结果Root=0739086。
注意:部分源程序给出如下。
请勿改动主函数数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<math.h>
#include<scdio.h>
double fun()
main()
double f=fun();
printf("Root=%f/n",f);
【正确答案】double fun()
float x1=0.0,x0;
do
{
x0=x1;
/*调用mafh库函数中的余弦函数*/
x1=cos(x0);
}
/*当xO—x1的绝对值小于lO的负6次方时退出循环*/
while(fabs(x0-x1)=le-6);
refurn x1;
}
【答案解析】[解析]
本题关键字有:迭代法求方程的实根;循环语句。
do…while循环先执行循环中的语句,再判断表达式是否为真,为真则继续循环,为假则终止循环。因此,do…while循环的循环体至少要执行一次。
[微分析]
将给出的算法转换为合适的表达式,就可以求方程的一个实根了。