我有一個腳本,它會自動生成方程並將它們添加到列表中。將sympy矩陣寫入python文件
例如:
eq = [a*b, a + b*c -d, c**2 + a, d*a - 2]
與a,b,c,d所有sympy符號。
它然後將其轉換列表到sympy矩陣計算雅可比矩陣
eq = sympy.Matrix(eq)
jacobi = eq.jacobian([a, b, c, d])
我要救這個雅可比在Python文件,以便我在另一個python腳本中使用它。
目前我創建使用字符串列表的定義,並將其寫入python文件
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))
是否有一個更正確的/更好的方式來做到這一點?
這是現在最好的方法。 SymPy的代碼生成功能目前主要針對C和Fortran等其他語言,但它們主要獲得了將來編寫Python代碼的功能,這可能會使這類事情更容易編寫。 – asmeurer