我的問題這一次是基座上的老問題,我也問過一些個月前(見HERE)如果你不想通過我的第一個問題我可以簡要概述一下這個問題。解決其中函數給出了離散(MATLAB)常微分方程的系統
以我第一個問題我有兩個向量,第一個fx
含有函數值:
fx = [0.5644 0.6473 0.7258 0.7999 0.8697 0.9353 0.9967 1.0540 1.1072 1.1564 ...
1.2016 1.2429 1.2803 1.3138 1.3435 1.3695 1.3917 1.4102 1.4250 1.4362 ...
1.4438 1.4477 1.4482 1.4450 1.4384 1.4283 1.4147 1.3977 1.3773 1.3535 ...
1.3263 1.2957 1.2618 1.2246 1.1841 1.1403 1.0932 1.0429 0.9893 0.9325 0.8725];
第二個x
含有其中函數評價點:
x = 0:0.25:10
此離散函數fx
爲賦和我需要通過從MATLAB ODE45來解決它。但ODE45不採取離散的功能,因此該解決方案是要內插這兩個向量。然後,我可以有一個功能手柄,我可以送向ODE45,像這樣:
f = @(xq)interp1(x,fx,xq);
tspan = [0 1];
x0 = 2;
xout = ode45(@(t,x)f(x),tspan,x0);
我的問題現在:
這一次,我沒有代表只有一個等式一個賦,我的賦的系統,但是,像功能被給定的離散之前。這意味着我必須:
fx1 = [....function values...]
x1 = [...the points where the function fx1 was evaluated...]
fx2 = [....function values...]
x2 = [...the points where the function fx2 was evaluated...]
fx3 = [....function values...]
x3 = [...the points where the function fx3 was evaluated...]
,我需要能夠解決這個頌歌的系統ODE45。但是,我不能簡單地插在每個時間公式,並將其發送到ODE45,這將是錯誤的。我需要將洞系統發送到ode45。
我曾嘗試不同的東西,但我的編程技巧只是不舒展這麼久,我可以解決這個問題,這是因爲我尋求幫助的原因!
我猜的解決方案
我相信,如果我用一個for-loop
僅做一個包含系統的3點插式的功能手柄,我可以把這個函數處理對ODE45。這聽起來像是一個很好的選擇嗎?
PS:如果需要,我可以很高興地張貼載體fx1,fx2,fx3,x1,x2,x3
值
是那些X1,X2,X3一樣嗎?或者至少包含很多類似的元素?爲什麼你不能單獨做他們?至少看起來好像你有一個插入3種不同函數的1d系統 – 2014-10-07 08:36:44
Hi @ TheMinion'x1,x2,x3'可以自由選擇,這就會像你看到的那樣影響函數值的輸出'FX1,FX2,fx3'。我無法單獨解決它們的原因是因爲'fx1,fx2,fx3'表示一個(3x3)'odes'系統,其中**變量**相互依賴。 'dx1dt = X1^a * X2^b * X3^c; dx2dt = X1^g * X2^f * X3^h; dx3dt = X1^p * X2^q * X3^r;'。函數fx1,fx2,fx3是(3x3)系統方程的右邊。 – 2014-10-07 08:57:15
'x1','x2','x3'的尺寸是多少?如果每個函數'f1','f2','f3'將三維向量映射到一個點,那麼每個'fi'應該是'1xN',每個'xi'應該是'3xN'。那是對的嗎? – 2014-10-07 09:04:22