[討論] 連續解ODE

看板MATLAB作者 (勒勒)時間13年前 (2012/10/17 15:44), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
先附上其中有問題之程式碼 for g2=1:15000 fx=ph(g2); Inp=aini; [X1,Y1] = ode23(@ODE_Func, [(g2-1)*dx g2*dx],Inp,options,...); ind = size(X1,1); aini=[Y1(ind,1) Y1(ind,2) Y1(ind,3) Y1(ind,4)]; end 程式目的是一過程經過連續ODE的最後結果,每一格ODE之結果為下一格ODE之初使條件, 但由於計算量實在過大,計算天數超過百天,有沒有辦法在不使用Mex的方式下, 再將以上程式簡化呢? 請教各位了,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.42.210

10/17 17:44, , 1F
fx做何用? 為何要放在迴圈裡?
10/17 17:44, 1F

10/18 14:01, , 2F
Fx為函數變數 每移動x, Fx將會為正一或是負一
10/18 14:01, 2F

10/18 14:02, , 3F
每移動dx Fx=-1 or +1 , +1,-1沒有規律性
10/18 14:02, 3F

01/13 13:44, , 4F
ODE放迴圈內MATLAB我還沒找到好方法
01/13 13:44, 4F

01/13 13:45, , 5F
算蠻慢的,改用C++的ODEINT庫 再寫成MEX給MTLAB呼叫
01/13 13:45, 5F

01/13 13:45, , 6F
快了一百倍
01/13 13:45, 6F
文章代碼(AID): #1GVc7JTr (MATLAB)