如何使用 sympy 求解不等式 $5 \sin (\theta)-\frac{1}{2} \sin \left(\frac{5 \theta}{2}\right) \geq 0$?
How to get a solution of the inequality $5 \sin (\theta)-\frac{1}{2} \sin \left(\frac{5 \theta}{2}\right) \geq 0$using sympy?
我正在尽力弄清楚我的代码出了什么问题。
所以我试图解决不等式: $$5 \sin (\theta)-\frac{1}{2} \sin \left(\frac{5 \theta}{2}\right) \geq 0$$
与同情,但我只是不断地回答我的问题。有人可以帮帮我吗
这是我的代码:
import sympy as sp
import numpy as np
import matplotlib.pyplot as plt
from sympy import S
x, y = sp.symbols("x, y", real=True)
theta = sp.symbols("theta")
d = sp.symbols("d", real=True, positive=True)
y = 5 * sp.sin(theta) - d * sp.sin(sp.Rational(5,2) * theta)
y_with_d_a_half = y.subs(d,1/2)
sp.solveset(y >= 0, theta, domain=S.Reals)
当我运行它时,它returns
$$$\left{\theta \mid \theta \in \mathbb{R} \wedge-d \sin \left(\frac{5 \theta}{2}\right)+5 \sin (\theta) \ geq 0\right}$$
当您进行替换时,您创建了一个新表达式并且没有更改原始表达式 (y
),并且 y
的表达式无法以封闭形式求解。如果你检查绘图,你会看到有根,如果你检查周期性,你会发现它是周期性的。因此,您可以获得周期中根的数值,然后加上或减去 4pi
以获得所有其他值。
>>> from sympy import S, sign, periodicity, nsolve
>>> eq = y.subs(d, S.Half);eq
5*sin(theta) - sin(5*theta/2)/2
>>> periodicity(eq,theta)
4*pi
>>> [nsolve(eq, 3*i).round(3) for i in range(5)]
[0, 3.044, 6.283, 9.522, 12.566]
那些是零 -- 测试中间的区域以找到函数为正的位置,例如
>>> sign(eq.subs(theta,1))
1
>>> sign(eq.subs(theta,4))
-1
我正在尽力弄清楚我的代码出了什么问题。 所以我试图解决不等式: $$5 \sin (\theta)-\frac{1}{2} \sin \left(\frac{5 \theta}{2}\right) \geq 0$$ 与同情,但我只是不断地回答我的问题。有人可以帮帮我吗
这是我的代码:
import sympy as sp
import numpy as np
import matplotlib.pyplot as plt
from sympy import S
x, y = sp.symbols("x, y", real=True)
theta = sp.symbols("theta")
d = sp.symbols("d", real=True, positive=True)
y = 5 * sp.sin(theta) - d * sp.sin(sp.Rational(5,2) * theta)
y_with_d_a_half = y.subs(d,1/2)
sp.solveset(y >= 0, theta, domain=S.Reals)
当我运行它时,它returns $$$\left{\theta \mid \theta \in \mathbb{R} \wedge-d \sin \left(\frac{5 \theta}{2}\right)+5 \sin (\theta) \ geq 0\right}$$
当您进行替换时,您创建了一个新表达式并且没有更改原始表达式 (y
),并且 y
的表达式无法以封闭形式求解。如果你检查绘图,你会看到有根,如果你检查周期性,你会发现它是周期性的。因此,您可以获得周期中根的数值,然后加上或减去 4pi
以获得所有其他值。
>>> from sympy import S, sign, periodicity, nsolve
>>> eq = y.subs(d, S.Half);eq
5*sin(theta) - sin(5*theta/2)/2
>>> periodicity(eq,theta)
4*pi
>>> [nsolve(eq, 3*i).round(3) for i in range(5)]
[0, 3.044, 6.283, 9.522, 12.566]
那些是零 -- 测试中间的区域以找到函数为正的位置,例如
>>> sign(eq.subs(theta,1))
1
>>> sign(eq.subs(theta,4))
-1