求C语言例题讲解:用迭代法求方程x=cos x的根,要求误差小于10的-6次方

main(){doublex1,x2;x1=0.0;x2=cos(x1);while(fabs(x2-x1)>le-6){x1=x2;x2=cos(x1);}printf... main()
{double x1,x2;
x1=0.0;
x2=cos(x1);
while(fabs(x2-x1)>le-6)
{x1=x2;
x2=cos(x1);
}
printf("x=%f\n",x2);
}
1、x1=0.0;x2=cos(x1);分别是什么意思
2、while后面的{x1=x2;
x2=cos(x1);
}
又是什么意思
展开
 我来答
见机pro
2011-08-17 · 聊一聊职场上的故事,见机行事
见机pro
采纳数:372 获赞数:1598

向TA提问 私信TA
展开全部
呵呵
你不已经编完了吗
因为是cos函数 所以要定义成浮点数,这样更精确,因此赋值也 要赋浮点数,即0.0其实就是零加个小数点使数域更广,
这段程序的意思是
先对x1赋0
x2用cos(x)赋值
此时要是x1等于x2就是x=cosx,成立输出,要不成立
,进入while,判断括号里的就是判断误差。当误差大于10的-6次方时循环继续,等小于10的-6次方时结束循环,输出的就是要求得
循环体的意思是
当满足判断条件时
看,开始 -----x1-----------x2----------------------
x1用x2赋值 x1--------------x2
因为开始x2等于cos0即1,此时cos值最大,以后的非零一定小
也就是说x2的值会不断变小,x1又不断的用x2赋值,那么x1也不断小这样x1和x2就会不断靠近,当两者之间的距离相差小于10的-6次方时就看成相等。满足要求,我再画几个数轴

x1-----------------------x(0)------------------------------------------
x1--------------------x(1)--------------------
x(1)----x【x(1)】
左为变量x1不断赋值,右为x2不断赋值
poseidon_k
2011-08-17 · TA获得超过2581个赞
知道小有建树答主
回答量:1223
采纳率:0%
帮助的人:377万
展开全部
迭代法所得结果在一定次数之后单调收敛于方程的解,也就是说经过每次迭代,所得结果会更加接近方程的解。
if语句条件中的x1,x2分别是最后2次迭代的结果。根据X(n+1)=COS Xn,可以证明当X(n+1)-Xn趋近于0时,Xn就趋近于方程的解。所以当If语句中条件成立时,就认为所得结果不够精确,因而继续迭代,直到条件不成立,就认为所得结果较为精确。
x1赋初值0,这时x2=cos0=1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式