Betrachten Sie die Parametrierung für einen Kreis gegeben durchTrenn Variablen in Gleichungssystem mit Sympy
import sympy as sp
sp.var('x,y,theta,r')
e1 = sp.Eq(r, sp.sqrt(x**2 + y**2))
e2 = sp.Eq(theta, sp.atan2(y,x))
Wie erhalte ich Sympy mir die gleiche Sache zu geben, aber in Bezug auf x
und y
? Das heißt, ich möchte dies:
x = r*cos(theta)
y = r*sin(theta)
Aber wenn ich Sympy verwenden lösen, was ich bekommen ist
[(-sqrt(r**2*cos(theta)**2), sqrt(r**2)*sin(theta)),
(sqrt(r**2*cos(theta)**2), sqrt(r**2)*sin(theta))]
Selbst wenn ich, wenn die zweite Lösung, ich kann immer noch nicht Sympy sqrt(r**2)
für r
vereinfachen machen.
Dank
'sqrt (r ** 2)' * nicht * gleich 'r', im Allgemeinen vereinfachen . Siehe die Diskussion [hier] (http://docs.sympy.org/dev/tutorial/simplification.html#powers) (insbesondere Identität 3) – Stelios
@Stelios Ja, aber es tut in diesem Fall. Also würde ich gerne wissen, wie ich Sympy sage, dass x und y real sind, so dass r immer positiv ist. – TomCho
Definieren Sie Ihre Symbole als 'r = sp.symbols ('r', positiv = Wahr)' und 'x, y = sp.symbols ('x, y', real = True) ', anstatt' var' zu verwenden, was bedeutet, dass die Symbole komplexwertig sind. – Stelios