如何用 Sympy 证明给定的笛卡尔方程可以写成给定的极坐标方程
How to proof with Sympy that a given Cartesian equation can be written as a given polar equation
我有一个关于 sympy 的作业,我正在努力解决以下问题:
"Prove with the help of Sympy that 4*(x2 + y2 -ax)3 = 27a2(x2+y2)2 can be written using r = 4a*cos(theta/3)3".
我尝试用 x = r*cos(theta)
和 y = r*sin(theta)
代替。
然后我尝试了 sp.solveset(eq, r)
但我只得到了一个很长的 {} 集,与给定的极坐标方程完全不同。
有谁知道怎么做(我可以使用 sympy 和 numpy)?
以下代码从左侧和右侧构建方程。然后 change of variables to polar coordinates is performed using substitution.
然后对得到的三角函数表达式进行化简,化简后结果为零。所以任何 pair/tuple (x,y)=(r*cos(theta),r*sin(theta))
都是一个解决方案。
from sympy import *
a,x,y,theta = symbols('a x y \Theta', real=True)
init_printing(use_latex=True)
lhs = 4 * (x**2 + y**2 - a*x) ** 3
rhs = 27 * a**2 * (x**2 + y**2)**2
f = lhs - rhs
r = 4 * a * cos(theta/3)**3
display(f,"----")
f = f.subs(x,r*cos(theta))
f = f.subs(y,r*sin(theta))
display(f,"----")
f1 = f
display(simplify(f))
# format for wolframalpha
t = symbols('t')
f1 = f1.subs(theta,t)
import re
f1 = re.sub("\*\*","^",str(f1))
print("----")
print("wolframalpha expression: solve ", str(f1)," over the reals")
为了仔细检查,最后,wolframalpha query is also generated 确认了解决方案。
我有一个关于 sympy 的作业,我正在努力解决以下问题:
"Prove with the help of Sympy that 4*(x2 + y2 -ax)3 = 27a2(x2+y2)2 can be written using r = 4a*cos(theta/3)3".
我尝试用 x = r*cos(theta)
和 y = r*sin(theta)
代替。
然后我尝试了 sp.solveset(eq, r)
但我只得到了一个很长的 {} 集,与给定的极坐标方程完全不同。
有谁知道怎么做(我可以使用 sympy 和 numpy)?
以下代码从左侧和右侧构建方程。然后 change of variables to polar coordinates is performed using substitution.
然后对得到的三角函数表达式进行化简,化简后结果为零。所以任何 pair/tuple (x,y)=(r*cos(theta),r*sin(theta))
都是一个解决方案。
from sympy import *
a,x,y,theta = symbols('a x y \Theta', real=True)
init_printing(use_latex=True)
lhs = 4 * (x**2 + y**2 - a*x) ** 3
rhs = 27 * a**2 * (x**2 + y**2)**2
f = lhs - rhs
r = 4 * a * cos(theta/3)**3
display(f,"----")
f = f.subs(x,r*cos(theta))
f = f.subs(y,r*sin(theta))
display(f,"----")
f1 = f
display(simplify(f))
# format for wolframalpha
t = symbols('t')
f1 = f1.subs(theta,t)
import re
f1 = re.sub("\*\*","^",str(f1))
print("----")
print("wolframalpha expression: solve ", str(f1)," over the reals")
为了仔细检查,最后,wolframalpha query is also generated 确认了解决方案。