我有一个自动生成方程式的脚本,并将它们添加到列表中 .
例如:
eq = [a*b, a + b*c -d, c**2 + a, d*a - 2]
用a,b,c,d表示所有符号 .
然后它将列表转换为sympy矩阵并计算雅可比矩阵
eq = sympy.Matrix(eq)
jacobi = eq.jacobian([a, b, c, d])
我想将这个jacobian保存在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))
有没有更正确/更好的方法来做到这一点?
2 回答
我可以让你的代码变得简单
这项工作可以在没有'for loop'的情况下完成:
不确定您以前是否遇到过此问题,但您可以使用标准库中的pickle module将任意Python对象写入文件 . 这将允许您执行以下操作以保存雅可比:
然后当你想在其他脚本中加载它时,可以将jacobian加载到内存中,如下所示:
输出: