[問題]有好幾組ode45,該如何用parfor來平行運算?已回收
我有好幾組ode45的方成組
每一組的ode數量、初值、時間都不一樣
由於ode45的組數太多,電腦用單核心跑要跑很久
我希望能讓電腦每個核心都能分別跑一組ode45,不知道這想法可不可行
以下是我的code
function y=fun(k)
ga=[91 70 38 28 22 20 12];
gb=[92 67 32 23 18 16 9];
%第一組ode45
tind1=(0:30000);
n01=[3.94e19 zeros(1,ga(1)-1) 3.94e19 zeros(1,gb(1)+3)];
options1=odeset('events',@evntfun1);
[t1,n1,te1]=ode45(@(t,n) odefun1(t,n,k,ga,gb),tind1,n01',options1);
function f1=odefun1(t,n,k,ga,gb)
(ode方程式很多就略過不寫)
function [value,isterminal,direction] = evntfun1(t,n)
%第二組ode45
tind2=(0:20000);
n02=[4.18e19 zeros(1,ga(2)-1) 4.18e19 zeros(1,gb(2)+3)];
options2=odeset('events',@evntfun2);
[t2,n2,te2]=ode45(@(t,n) odefun2(t,n,k,ga,gb),tind2,n02',options2);
function f2=odefun2(t,n,k,ga,gb)
function [value,isterminal,direction] = evntfun2(t,n)
%第三組
%第四組...
y=[te1 te2 te3 .....];
想請問以上code想改寫成用parfor表示要怎麼改比較好??
我改寫後一直都不對,麻煩板上高手指點一下 謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.126.66.160
→
07/28 18:44, , 1F
07/28 18:44, 1F
因為上面的code只是副程式,主程式會丟很多組k值進來做疊帶,沒辦法分開跑@@
※ 編輯: yichen1006 來自: 122.126.66.160 (07/28 22:57)