日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python求解微分方程组_python – SymPy / SciPy:求解具有不同变量的常微分方程组...

發布時間:2023/12/4 python 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python求解微分方程组_python – SymPy / SciPy:求解具有不同变量的常微分方程组... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我是SymPy和Python的新手,我目前正在使用Python 2.7和SymPy 0.7.5,其目標是:

a)從文本文件中讀取微分方程組

b)解決系統問題

我已經閱讀了this question和this other question,它們幾乎就是我要找的,但我還有一個額外的問題:我事先并不知道方程組的形式,所以我無法在腳本中使用def創建相應的函數與this example一樣.整個事情必須在運行時進行管理.

所以,這里是我的代碼的一些片段.假設我有一個包含以下內容的文本文件system.txt:

dx/dt = 0.0387*x - 0.0005*x*y

dy/dt = 0.0036*x*y - 0.1898*y

我所做的是:

# imports

import sympy

import scipy

import re as regex

# define all symbols I am going to use

x = sympy.Symbol('x')

y = sympy.Symbol('y')

t = sympy.Symbol('t')

# read the file

systemOfEquations = []

with open("system.txt","r") as fp :

for line in fp :

pattern = regex.compile(r'.+?\s+=\s+(.+?)$')

expressionString = regex.search(pattern,line) # first match ends in group(1)

systemOfEquations.append( sympy.sympify( expressionString.group(1) ) )

此時,我仍然堅持使用systemOfEquation列表中的兩個符號表達式.如果我可以從另一個文件中讀取ODE系統的初始條件,為了使用scipy.integrate.odeint,我必須將系統轉換為Python可讀的函數,如:

def dX_dt(X,t=0):

return array([ 0.0387*X[0] - 0.0005*X[0]*X[1],-0.1898*X[1] + 0.0036*X[0]*X[1] ])

有沒有一種很好的方法在運行時創建它?例如,將函數寫入另一個文件,然后將新創建的文件作為函數導入? (也許我在這里很傻,但請記住我對Python比較新:-D)

我已經通過sympy.utilities.lambdify.lambdify看到它可以將符號表達式轉換為lambda函數,但我想知道這是否可以幫助我… lambdify當時似乎與一個表達式一起使用,而不是系統.

提前感謝您的任何建議:-)

編輯:

經過極少的修改,沃倫的答案完美無瑕.我有listOfSymbols中所有符號的列表;此外,它們的顯示順序與odeint將使用的數據X列的順序相同.所以,我使用的功能是

def dX_dt(X,t):

vals = dict()

for index,s in enumerate(listOfSymbols) :

if s != time :

vals[s] = X[index]

vals[time] = t

return [eq.evalf(subs=vals) for eq in systemOfEquations]

我只是在我的具體問題中對變量’time’做了一個例外.再次感謝!

總結

以上是生活随笔為你收集整理的python求解微分方程组_python – SymPy / SciPy:求解具有不同变量的常微分方程组...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。