BOQ的问题:对方程a + x = b*ln(x)求解x的解的问题


所有跟贴·加跟贴·新语丝读书论坛

送交者: Nixrreg 于 2007-04-15, 00:20:43:

Amsel大概是个数学家,指出解可以由Lambert W函数给出。至于Lambert W函数怎么计算,跟大多数数学家一样,Amsel没有说。如果你是数学家,就不要往下看了。

如果真要求解,我昨天说可以写成

x = f(x) = b*ln(x) - a

找出驻点x = f(f(...f(x))。数学家还可以关心有没有这个点的问题。

如果真要追根究底,对给定的a,b找出x的数值解,建议用MATLAB或FORTRAN。用MATLAB/FORTRAN的好处是,方程可能有复数解。MATLAB能自动给出复数的形式;如果用FORTRAN,则需要定义X为复变量。其他语言没有native complex number支持的不建议用于求解。

下面是伪码

a = 1
b = -1
x0 = 1.1
x = b*log(x0) - a
while (abs(x - x0) > 1e-7)
x0 = x
x = b*log(x) - a
end

如果并不求甚解,则可采用我说的做图法:用计算机画两条曲线:

y = x + a
y = b*log(x)

则解一目了然。




所有跟贴:


加跟贴

笔名: 密码: 注册笔名请按这里

标题:

内容: (BBCode使用说明)