SymPy 无法求解方程 cos(x) = - 1 /cosh(x)

mrrclb48z

在 Wolfram|Alpha 中,可以求解cos λ = -1/cosh λ

λ = ± 1.87510406871196...
λ = ± 4.69409113297417...
λ = ± 7.85475743823761...
λ = ± 10.9955407348755...

为什么 cos(x) = - 1 /cosh(x) 在 SymPy 中不起作用?

我试过这个:

from sympy import *
x = symbols('x', real=True)  
eq = cos(x) + 1 /cosh(x)
ans=solve(eq)
print(ans)
# NotImplementedError: multiple generators [cos(x), exp(x)]
# No algorithms are implemented to solve equation cos(x) + 1/(exp(x)/2 + exp(-x)/2)

-----------------

(2018/08/21) 图形计算器

https://www.numberempire.com/graphingcalculator.php?functions=cos(x)%2C-1%2Fcosh(x)&xmin=0&xmax=10&ymin=-1.5&ymax=1.5&var=x

https://www.numberempire.com/graphingcalculator.php?functions=cos(x) *cosh(x)%2C-1&xmin=-10&xmax=10&ymin=-1.5&ymax=1.5&var=x

用户6655984

SymPy 中的“Sym”代表符号WolframAlpha 找到符号解了吗?不,它没有;因为没有。所以,SymPy 也没有找到。

你从 WolframAlpha 得到的是一个数值解。为了获得这些,还有其他 Python 库,最著名的是SciPy

但是,SymPy 也可以通过幕后调用mpmath 为您提供数字解决方案这是通过nsolve. 它接受第二个参数,即搜索解决方案的初始点,并返回一个解决方案。

>>> nsolve(eq, 0)
7.85475743823761

如果您想要更多,请尝试多个起点:

>>> {nsolve(eq, n) for n in range(-10, 10)}
{4.69409113297418, -1.87510406871196, 7.85475743823761, -7.85475743823761, 1.87510406871196, -10.9955407348755, -4.69409113297418}

在这里我尝试了20个起点,有一些根是重复的,因此使用一个集合来消除重复。

有无穷多个解;无论使用什么工具,您都只会得到其中的几个。但是对于较大的 x,1/cosh(x) 实际上是 0,因此根与 cos(x) = 0 大致相同,即pi/2 + pi*k任意整数 k。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章