python – SymPy / SciPy:求解具有不同变量的常微分方程组
我是SymPy和Python的新手,我目前正在使用Python 2.7和SymPy 0.7.5,其目标是: 我已经阅读了this question和this other question,它们几乎就是我要找的,但我还有一个额外的问题:我事先并不知道方程组的形式,所以我无法在脚本中使用def创建相应的函数与this example一样.整个事情必须在运行时进行管理. 所以,这里是我的代码的一些片段.假设我有一个包含以下内容的文本文件system.txt:
我所做的是:
此时,我仍然坚持使用systemOfEquation列表中的两个符号表达式.如果我可以从另一个文件中读取ODE系统的初始条件,为了使用scipy.integrate.odeint,我必须将系统转换为Python可读的函数,如:
有没有一种很好的方法在运行时创建它?例如,将函数写入另一个文件,然后将新创建的文件作为函数导入? (也许我在这里很傻,但请记住我对Python比较新:-D) 我已经通过sympy.utilities.lambdify.lambdify看到它可以将符号表达式转换为lambda函数,但我想知道这是否可以帮助我… lambdify当时似乎与一个表达式一起使用,而不是系统. 提前感谢您的任何建议:-) 编辑: 经过极少的修改,沃伦的答案完美无瑕.我有listOfSymbols中所有符号的列表;此外,它们的显示顺序与odeint将使用的数据X列的顺序相同.所以,我使用的功能是
我只是在我的具体问题中对变量’time’做了一个例外.再次感谢! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |