问答题
24分
编写函数fun,其功能是:利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。迭代步骤如下:(1)取x1初值为0.0;(2)x0=x1,将x1的值赋给x0;(3)x1=cos(x0),求出一个...
编写函数fun,其功能是:利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。
迭代步骤如下:
(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=0.739086。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
迭代步骤如下:
(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=0.739086。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
参考解析: 【参考答案】
double fun()
{
double x0,x1;
x1=0.0;
do
{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)>=1e-6);
return x1;
}
【考点分析】
本题考查:迭代法求方程的实根;do…while循环语句,其形式为:
do
{
语句
}
while(表达式);
do…while循环与while循环的不同在于,它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do…while循环至少要执行一次循环语句。
【解题思路】
用迭代方法求方程的一个实根,题目已经给出了算法,只要按照算法用合适的程序表达,就可以解题了。