fullscript.py
from sympy import *
x = symbols('x')
eq = cos(x) + 1 /cosh(x)
print(nsolve(eq, 0))
print({nsolve(eq, n) for n in range(-10, 10)})
# 7.85475743823761
# {4.69409113297418, -1.87510406871196, 7.85475743823761, -7.85475743823761, 1.87510406871196, -10.9955407348755, -4.69409113297418}
(参考)SymPy cannot solve the equation cos(x) = - 1 /cosh(x)
https://stackoverflow.com/questions/51878378/sympy-cannot-solve-the-equation-cosx-1-coshx
(google翻訳)
SymPyの "Sym"は記号を表します。 WolframAlphaは象徴的な解決策を見つけましたか?いいえ、それはしませんでした。それがないからです。だから、SymPyはどちらも見つけなかった。
あなたがWolframAlphaから得たものは、数値的な解決策です。それらを得るために、他のPythonライブラリ、特にSciPyがあります。
しかし、SymPyは、ボンネットの下でmpmathを呼び出すことで、数値的な解を得ることもできます。これはnsolveで行われます。それは2番目の引数、すなわちsolutionの探索の初期点をとり、1つの解を返します。
>>> nsolve(eq、0)
7.85475743823761
もっと必要な場合は、複数の出発点を試してみてください:
>>> {範囲(-10,10)のnのnsolve(eq、n)}
{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である。
(参考)3.2. Sympy : Python での代数計算>Sympy はバックグラウンドで mpmath を利用します,
http://www.turbare.net/transl/scipy-lecture-notes/packages/sympy.html