首页 文章

从文本文件中读取ODE到scipy的odeint

提问于
浏览
0

有没有办法将文本格式的ODE读入scipy的 odeint 可以使用的对象?这是在这里提出的:How to read a system of differential equations from a text file to solve the system with scipy.odeint?但这个问题不必要地使用了sympy,还有其他解决方案吗? scipy的odeint期望动态地创建一个函数 .

1 回答

  • 0

    ODE必须是Python函数 . 通常用 deflambda 创建 .

    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 ,然后导入它 .

相关问题