[問題] 解ode時如何加上for loop已回收

看板MATLAB作者 (囧n屁)時間16年前 (2009/10/11 23:04), 編輯推噓1(108)
留言9則, 2人參與, 最新討論串1/1
先描述一下我的問題 一個線性時變系統 xdot=[0 1 ; -3+cos(t) 0]x 我希望用狀態回授的方式變成這樣 xdot=[k1 1 ; -3+cos(t) k2]x 然後找 k1 k2 好讓這個系統穩定 (穩定的判斷方法用Floquet theorem 不過不是重點) 要判斷穩定的第一個步驟是先解ode 假設k1=-10:10; k2=-10:10; 我希望能在這範圍找到一組k讓系統穩定 也就是在這範圍內不斷的解ode 不知道該怎麼下手@@ 先謝謝各位大大! ____________________________________ 我的fuction檔為 function dy=test(t,y,k1,k2) dy=zeros(2,1); dy(1)=k1*y(1)+y(2); dy(2)=(-3+cos(t))*y(1)+k2*y(2); ____________________________________________ script為 t = 1:0.1:5; for k1=-1:1; for k2=-1:1; [t,y] = ode45(@test,[t],[1 0]); end end ___________________________________________ 結果matlab說我沒給k 我不是都給了嗎 = = -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.131.122 ※ 編輯: Ashiou49 來自: 61.227.131.122 (10/11 23:26)

10/11 23:28, , 1F
你 test input 要四個吧? 所以沒給 k
10/11 23:28, 1F

10/11 23:37, , 2F
婀..在script上不算給k喔
10/11 23:37, 2F

10/11 23:41, , 3F
還有你的初值。[t,y] = ode45(@testt,[t],[1 0],0,k1,k2);
10/11 23:41, 3F

10/11 23:50, , 4F
阿.. 不對= = 你把 k1 k2 用 globle 就可以了
10/11 23:50, 4F

10/11 23:51, , 5F
global k1 k2; ↑打錯字
10/11 23:51, 5F

10/12 00:00, , 6F
不過你迴圈會把之前的[t y] 覆蓋喔
10/12 00:00, 6F

10/12 00:02, , 7F
對耶 這樣算出來的y 是最後k1=1 k2=1算出來的
10/12 00:02, 7F

10/12 00:04, , 8F
我要怎麼看到 每一組(k1 k2)解出來的y呢
10/12 00:04, 8F

10/12 00:21, , 9F
把 y(2-D) => y(3-D), 也可以
10/12 00:21, 9F
文章代碼(AID): #1AqVFjpU (MATLAB)
文章代碼(AID): #1AqVFjpU (MATLAB)