网络警察平台qq号:解答一个方程问题?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 08:52:49
lgR+R=3

最简单的方法用牛顿迭代,不过不能保证收敛,幸好对你这个问题还是收敛的,代码如下:
double GetResult(double initR)
{
double r1 = initR;
double r2 = initR;
int i = 0;
for (i = 0; i < 1000000; i++)//保证不会无限循环
{
r1 = r2;
r2 = 3 - log10(r1);//迭代
if (fabs(r2 - r1) < 1e-6)//如果结果稳定了
{
break;
}
}
if (fabs(r2 - r1) < 1e-6)//有结果则返回结果,否则返回0
{
return r2;
}
else
{
return 0;
}
}
迭代要选取一个初值,初值得大小是无所谓的,因为lgR+R是递增函数,粗略的估算一下1<R<3,最后用1和3作初值迭代的结果都是2.587174268899,带入lgR+R-3误差是4.7853279849443571782337245882328e-8

超越方程一般只能用数值的方法来解

大学里学的高等数学里应该有解的方法.只是我记不起了,你自己去翻翻看.好象要用到积分什么的.

明确告诉你,这种方程就是用数值不断代,寻找近似值,用计算机解吧