如何用 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 确认了解决方案。