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

时间:2018-08-16 13:34:23

标签: sympy

在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

1 个答案:

答案 0 :(得分:1)

SymPy中的“ Sym”代表符号。 WolframAlpha是否找到了象征性的解决方案?不,不是。因为没有一个。因此,SymPy也没有找到一个。

从WolframAlpha获得的是一个数字解决方案。为了获得这些,还有其他Python库,最著名的是SciPy

但是,通过在后台调用mpmath,SymPy也可以为您提供数值解。这是通过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。