I want to solve trigonometric equations with periodic solutions in sympy.
Example:
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 gives just the basic solutions with 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]
Another example:
There are two different solutions in interval [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 is not in solution. Why is that?
Which python syntax is correct to get periodic solutions like if I solve equation by myself?
I have a solution for first example. Using sympy.Rational
function in sympy for avoiding float
data type.
import sympy as smp
from sympy import *
x = smp.symbols('x')
eqn = Eq(2*sin(Rational(3, 2) * x), 1)
solveset(eqn, x)