f(x)=cosx-x
找出两个点
f(0)=1>0
f(1)=cos1-1<0
因此在(0,1)上必有一解。(介值定理保证)
再看f(1/2),如>0,那么(1/2,1)上必有一解。
如<0,那么(0,1/2)上必有一解。
接下来按照这个步骤做下去,最后就能得到你想要的精度的数值解。
这就是所谓的迭代的方法。
楼上的是用的牛顿切线迭代法,高中生未学过,还是用简单的代数迭代法吧。
一,最简单的就是用Anser=Cos(Anser)
使用袖珍计算器,清零后一直按Cos键,狂按一个键,
这个的优点就是操作简单,缺点是收敛慢。
二、收敛快一点的就是x=√(xcosx)
用简单的代数迭代法时,要选择、设计适当的迭代函数,要点就是构造、选择那种在理论解附近曲线比较水平的迭代函数。
y=cosx-x
y'=-sinx-1
所以x(n+1)=xn-(cosxn-xn)/(-sinxn-1)
由y=cosx和y=x图像看出
这个解在0到π/2之间的
所以不妨取x1=1
则x2=0.7503639
x3=0.73911289
x4=0.73908001
x5=0.73908608
就取4位小数吧
x=0.7391
float
countvalue(
)
{
float
x0,x1=0.0;
/*定义两个浮点型变量进行迭代*/
while(1)
/*无条件循环*/
{
x0=x1;
/*将x1值赋给x0*/
x1=cos(x0);
/*求出新的x1值*/
if(fabs(x0-x1)<1e-6)
break;
/*若x0-x1的绝对值小于0.000001,则结束循环*/
}
return
x1;
/*返回x1的值*/
}
标准答案哦!当然你用goto关键字更简单了。
也就是cos(x)=x,用图像法!
y=cos(x)和y=x有几个交点就有几个根