我想在 sympy 中求解具有周期解的三角方程。
示例:
2sin(1.5x) = 1
sin(1.5x) = 0.5
1.5x = z
sin(z) = 0.5
asin(0.5) = 0.5236
z1 = 0.5236 + 2k*pi (k is element of Z) (Z are integer numbers)
z2 = pi - 0.5236 = 2.6180 + 2k*pi (k is element of Z)
1.5x1 = 0.5236 + 2k*pi
1.5x2 = 2.6180 + 2k*pi
x1 = 0.3491 + (4/3)k*pi
x2 = 1.7453 + (4/3)k*pi
Sympy 仅给出 k = 0 的基本解。
import sympy as smp
from sympy import *
x = smp.symbols('x')
eqn = Eq(2*sin((3/2)*x), 1)
solve(eqn, x)
[0.349065850398866, 1.74532925199433]
另一个例子:
区间 [0,2pi[
] 内有两种不同的解sin(x) = sin(x)*cos(x)
0 = sin(x)*cos(x) - sin(x)
0 = sin(x)*(cos(x) - 1)
sin(x) = 0
x1 = 2k*pi
x2 = pi + 2k*pi
cos(x) = 1
x3 = x1
import sympy as smp
from sympy import *
x = smp.symbols('x')
eqn = Eq(sin(x), sin(x)*cos(x))
solve(eqn, x)
[0]
Pi 不在溶液中。这是为什么?
科学界的任何人都可以帮助我哪种Python语法是正确的,以获得周期解,就像我自己解方程一样?
您可能正在寻找
solveset
:
In [9]: eqn
Out[9]: sin(x) = sin(x)⋅cos(x)
In [10]: solveset(eqn, x)
Out[10]: {2⋅n⋅π │ n ∊ ℤ} ∪ {2⋅n⋅π + π │ n ∊ ℤ}