亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Lotka-Volterra 方程:錯誤解

Lotka-Volterra 方程:錯誤解

幕布斯6054654 2021-08-05 17:47:45
我寫了一段代碼來在 Python 上使用四階 Runge-Kutta 求解 Lotka-Volterra 方程,但由于某種原因它不起作用,解決方案是完全錯誤的。老實說,我不明白我做錯了什么。import numpyfrom pylab import plot, showdef rk(f, x, h):    f_1 = f(x)    f_2 = f(x+1./2*h*f_1)    f_3 = f(x+1./2*h*f_2)    f_4 = f(x+h*f_3)    return x+1./6*h*(f_1+2*f_2+2*f_3+f_4)def lv(x):    alpha = 1.    return numpy.array([alpha*x[0]-x[0]*x[1], x[0]*x[1]-x[1]], float)a = 0.b = 10.m = 100T = numpy.linspace(a, b, m)H = (b-a)/mX = numpy.zeros((m, 2))X[0, :] = [1., 30.]for i in range(1, m):    X[i, :] = rk(lv, X[i-1, :], H)plot(T, X)show()非常感謝您的幫助。
查看完整描述

1 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

將積分間隔擴展到 100 并相應地增加步數以觀察解的周期性行為,我得到大約 34.6 的周期,峰值相當小。

http://img1.sycdn.imooc.com//610bb3f20001dc9809500478.jpg

從生態的角度考慮一下,捕食者數量為 30,獵物數量為 1,捕食性明顯。當然,獵物迅速減少到接近于零,捕食者也挨餓到零,然后獵物種群慢慢恢復,直到其指數增長觸發捕食者指數增長,循環重新開始。


請注意,時間離散化的步驟是(b-a)/(m-1),檢查T[1]-T[0]。要獲得您需要的m步長間隔,并相應地增加 x 數組和積分循環。H=(b-a)/mT=linspace(a,b,m+1)


查看完整回答
反對 回復 2021-08-05
  • 1 回答
  • 0 關注
  • 256 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號