解方程!!!!!求解答
这个怎么解a啊
用matlab算出来是
solve('a*exp(a)=3')
a=lambertw(0, 3)
什么意思,求高手解答,或者提供更有效的解答方法 展开
并不是所有的方程的解都是初等函数, 也就是说很多方程的解是不能用我们所学的任何函数的有限形式表示, 其中"一般的五次方程就没有公式解"就是一个很好的例子.
对于x*e^x=y这种形式的方程的解就不是初等函数(特殊点除外), 所以为了解此类方程就定义了一个新的函数lambetW(x), 这个函数实际是y=x*e^x的反函数, 不过这个函数在x<0时不是单调的, 所以对于x<0的部分要定义两个反函数, 与x>0保持一致的记为lambetW(0,x), 而另一个记为lanbertW(-1,x), 当然还有对应复数形式的, 咱不讨论.
对于这种超越方程我一般用数值方法求其任意精度的近似解, 因为像这样用函数表示的解在实际应用中一般没什么意义.
将方程x*e^x=A写成函数f(x)=x*e^x-A
则牛顿迭代法的形式为: x[k+1]=x[k]-(x[k]*e^x[k]-A)/(e^x[k]+x*e^x[k])
对于上面A=3, 取x0=2
x0=2.000000000000000 error=1.2e+001
x1=1.468668616569946 error=3.4e+000
x2=1.153529846128843 error=6.6e-001
x3=1.057424066730515 error=4.4e-002
x4=1.049950720056189 error=2.4e-004
x5=1.049908896265363 error=7.6e-009
x6=1.049908894964040 error=4.4e-016
经过6次迭代已经达到了16位精度, 所以方程x*e^x=3的解为
x=1.049908894964040....
广告 您可能关注的内容 |