Как решить sin (z)=2 в Sympy?
Sympy работает с комплексными числами, поэтому есть возможность решать уравнения типа sin(z)=2
. Однако я не могу этого понять. У кого-нибудь есть идея, как решить ее в Sympy?
Кстати, решение имеет вид:
z=frac{pi}{2}+ln(2pmsqrt{3})i
from sympy import *
z=symbols('z')
r=re(sin(z)-2)
i=im(sin(z))
x,y=symbols('x,y',real=True)
eq1=r.subs({re(z):x,im(z):y})
eq2=i.subs({re(z):x,im(z):y})
solve((eq1,eq2),(x,y))
Выход - [(pi/2, log(-sqrt(3) + 2)), (pi/2, log(sqrt(3) + 2))]
. У кого-нибудь есть лучшее решение?
2 ответа:
Если вы предпочитаете формат
log
, Используйте.rewrite(log)
, напримерIn [4]: asin(2).rewrite(log) Out[4]: ⎛ ___ ⎞ -ⅈ⋅log⎝╲╱ 3 ⋅ⅈ + 2⋅ⅈ⎠
Сочетая это с ответом игр, вы можете получить:
И кстати, решений действительно бесконечно много, потому чтоIn [3]: sols = solve(sin(z) - 2, z) In [4]: sols Out[4]: [π - asin(2), asin(2)] In [5]: [i.rewrite(log) for i in sols] Out[5]: ⎡ ⎛ ___ ⎞ ⎛ ___ ⎞⎤ ⎣π + ⅈ⋅log⎝╲╱ 3 ⋅ⅈ + 2⋅ⅈ⎠, -ⅈ⋅log⎝╲╱ 3 ⋅ⅈ + 2⋅ⅈ⎠⎦
sin
является2*pi
периодическим. SymPy в настоящее время не поддерживает предоставление всех из них напрямую, но достаточно легко получить их с помощьюsin(z + 2*pi*n)
вместоsin(z)
:In [8]: n = Symbol('n', integer=True) In [9]: sols = solve(sin(z + 2*pi*n) - 2, z) In [10]: sols Out[10]: [-2⋅π⋅n + asin(2), -2⋅π⋅n + π - asin(2)] In [11]: [i.rewrite(log) for i in sols] Out[11]: ⎡ ⎛ ___ ⎞ ⎛ ___ ⎞⎤ ⎣-2⋅π⋅n - ⅈ⋅log⎝╲╱ 3 ⋅ⅈ + 2⋅ⅈ⎠, -2⋅π⋅n + π + ⅈ⋅log⎝╲╱ 3 ⋅ⅈ + 2⋅ⅈ⎠⎦
Здесь
n
- любое целое число.