LoginSignup
1
0

More than 5 years have passed since last update.

sympyで「双曲線関数(hyperbolic function)の方程式 cos(x)*cosh(x)=-1」を教えてもらった

Posted at
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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0