有没有办法将文本格式的ODE读入scipy odeint
可以使用的对象?这是在这里提出的:How to read a system of differential equations from a text file to solve the system with scipy.odeint?但是这个问题不必要地使用了同情,还有其他解决方案吗? scipy的odeint期望动态地创建一个函数。
答案 0 :(得分:0)
ODE必须是Python函数。通常情况下,这是使用def
或lambda
创建的。
eval
可以从字符串
In [183]: f=eval('lambda x: x**2')
In [184]: f(10)
但它被认为是不安全的:Using python's eval() vs. ast.literal_eval()?
但是安全的选择不能创建一个功能
In [185]: f=ast.literal_eval('lambda x: x**2')
...
ValueError: malformed node or string: <_ast.Lambda object at 0xa749882c>
有关使用sympy
或直接创建功能的最新讨论,请参阅:Parsing Complex Mathematical Functions in Python
最干净的解决方案是在文本文件中编写有效的Python代码,将其命名为.py
,然后将其导入。