Page 1 of 1

Sympy-Funktionen in Scipy lösen (optimize.root)

Posted: 22 Dec 2024, 19:12
by Guest
Ich versuche, die Wurzeln mit der Root-Funktion in Scipy für in Sympy erstellte Funktionen/Variablen zu finden.
sympy:
AllEquations = [x1 - 5, y1 - 5, z1 - 5, ((x1 - x2)**2 + (y1 - y2)**2 + (z1 - z2)**2)**0.5 - 150, y2 - 100, z2, ((x1 - x2)**2 + (y1 - y2)**2 + (z1 - z2)**2)**0.5 - 150]

AllVariables = [x1, y1, z1, x2, y2, z2]

Das Folgende funktioniert in Scipy, wird aber manuell durchgeführt:
def equation(p):
x1, y1, z1, x2, y2, z2 = p
return x1 - 5, y1 - 5, z1 - 5, ((x1 - x2)**2 + (y1 - y2)**2 + (z1 - z2)**2)**0.5 - 150, y2 - 100, z2, ((x1 - x2)**2 + (y1 - y2)**2 + (z1 - z2)**2)**0.5 - 150

initial_guess = [5,5,5,100,100,0]

from scipy.optimize import root
sol = root(equation, initial_guess, method = 'lm")

>>>sol.x
array([ 5.00000000e+00, 5.00000000e+00, 5.00000000e+00, 1.20974135e+02,
1.00000000e+02, -2.00332805e-25])

Die Frage ist nun, wie kann ich das automatisieren? Die obige Gleichungsfunktion ist statisch und sollte dynamisch erstellt werden, da sich die Anzahl der Parameter und Funktionen kontinuierlich ändert.