Ich habe ein Skript, das automatisch Gleichungen generiert und sie zu einer Liste hinzufügt.Schreiben Sie eine Sympy-Matrix in eine Python-Datei
z.B. :
eq = [a*b, a + b*c -d, c**2 + a, d*a - 2]
mit a, b, c, d alle sympy Symbole.
Er wandelt dann die Liste in eine sympy Matrix und berechnet die Jacobi-Matrix
eq = sympy.Matrix(eq)
jacobi = eq.jacobian([a, b, c, d])
Ich mag diese jacobian in einer Python-Datei speichern, um für mich in einem anderen Python-Skript zu verwenden.
Derzeit erstelle ich eine Definition eine Liste von Strings mit und schreiben Sie es auf eine Python-Datei
variable_list = [a, b, c, d]
jacobian_lines = ["def jacobian(variables):",
' """ Returns the evaluated jacobian matrix',
' :param variables: a list of numeric values to evaluate the jacobian',
' """', '', ' {} = variables'.format(str(variable_list)), '',
' j = {}'.format(jacobi), '', " return j"]
file_path = 'jacobian.py'
file = open(file_path, 'w')
for line in jacobian_lines:
file.write('{}\n'.format(line))
Gibt es eine korrektere/besseren Weg, dies zu tun?
Dies ist der beste Weg, es jetzt zu tun. SymPy verfügt über Funktionen zur Codegenerierung, die derzeit auf andere Sprachen wie C und Fortran ausgerichtet sind. Hauptsächlich erhalten sie jedoch die Fähigkeit, in Zukunft Python-Code zu schreiben, wodurch solche Dinge leichter geschrieben werden können. – asmeurer