Mathematica是如何求解这个方程的

来源:百度知道 编辑:UC知道 时间:2024/09/27 21:31:30
Mathematica对于数值计算非常强,我这样玩:
Expand[(x - Sqrt[Sqrt[4^(1/3) - 8^(1/7)]] + 5000^(1/100) -
7*(7 - 7^(1/7))^(1/7)*I)^4*(x - Sqrt[Sqrt[4^(1/3) - 8^(1/7)]] +
5000^(1/100) +
7*(7 - 7^(1/7))^(1/7)*
I)^4*(x - (Sqrt[700] + Log[3])^(Sinh[3]/Tan[2]))^2]

然后:

然后:NSolve[Collect[%, x] == 0, x, 300],不到七秒钟它解出了这个方程的精确数值解,精确到小数点后300位,这是如何做到的,它是如何预定义求解精度的?

还有解超越方程如sin(x)=x/2这种的为什么要一个一个找用FindRoot,而不能直接一下子找到所有的根呢?为什么多项式的可以?望各位数学系的强人能够鼎力相助。

在你定义精度的时候Mathematica会根据你的定义开辟更多的空间存储每一位数,保证达到所用的精度。所以说Mathematica号称可以进行任意精度的运算。

这种超越方程没有解析解,只能采用迭代的方式数值解,所以只能给一个起始点然后迭代找到附近的一个解。

可以用Plot先看一下图再用FindRoot解以防止漏根。