在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) * cosh(x)%2C-1&xmin = -10&xmax = 10&ymin = -1.5&ymax = 1.5&var = x
答案 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。