[運算] 二階聯立微分方程式

看板MATLAB作者 (色仙)時間7年前 (2018/01/01 01:15), 6年前編輯推噓4(402)
留言6則, 2人參與, 8年前最新討論串1/1
我要解一個聯立微分方程的數值解並繪圖 題目是 X''=-0.0675*X'*sqrt(X'^2+Y'^2) Y''=-9.81-0.0675*Y'*sqrt(X'^2+Y'^2) 初始條件X'(0)=134 X(0)=Y(0)=Y'(0)=0 我降階後的程式如下 function dx=odedx(t,x) a=0.06725; g=9.81; %x(1)=x %x(2)=x' %x(3)=y %x(4)=y' dx=[x(2);x(4);-a*x(2)*sqrt((x(2))^2+(x(4))^2);-g-a*x(4)*sqrt((x(2))^2+(x(4))^2 )]; end ------------------------------ 執行檔如下 x0=[0;0;134;0]; tspan=0:0.025:5; tol=1e-6; options=odeset('RelTol',tol,'AbsTol',[tol,tol]); [t,x]=ode45('odedx',tspan,x0); plot(x(1),x(3),'-r') 但出來的結果是錯的 所有值幾乎都一樣 但我看不太出來程式碼哪裡有問題 想請教版上 高手 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.124.28 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1514740513.A.01E.html

01/01 01:38, 8年前 , 1F
dx順序不對
01/01 01:38, 1F
※ 編輯: jimmyjean (140.113.124.28), 01/01/2018 01:53:24 不好意思不是很懂您的說法 是指dx內的順序與初始值順序不一樣嗎 ※ 編輯: jimmyjean (140.113.124.28), 01/01/2018 01:54:47

01/01 15:59, 8年前 , 2F
dx(1) = x(2), dx(2) = x(4) ?
01/01 15:59, 2F
我的寫法是 dx=[x';y';x'';y''] 我也有改成dx=[x';x'';y';y'']並修改初始值順序跑過 但結果是一樣的 不知道您的意思是修改成什麼樣子 謝謝 ※ 編輯: jimmyjean (140.113.124.28), 01/01/2018 20:22:35

01/01 20:35, 8年前 , 3F
如果dx=[x';y';x'';y''],那x=[x;y;x';y'],dx(1)=x(3)才對
01/01 20:35, 3F
嗯我懂您的意思了 但我改成以下 %x(1)=x %x(2)=y %x(3)=x' %x(4)=y' dx=[x(3);x(4);-a*x(3)*sqrt((x(3))^2+(x(4))^2);-g-a*x(4)*sqrt((x(3))^2+(x(4))^2 )]; 還是無法有一樣的問題 繪出來的圖只有一點 約在(0,3)的位置 ※ 編輯: jimmyjean (140.113.124.28), 01/01/2018 21:07:22

01/01 23:28, 8年前 , 4F
plot的指令有問題,你要不要先看看x(1)長什麼樣子
01/01 23:28, 4F

01/01 23:40, 8年前 , 5F
好習慣 把每個函數都印出來看一下 確認跟手算的都一樣
01/01 23:40, 5F

01/01 23:40, 8年前 , 6F
再繼續下一步
01/01 23:40, 6F
文章代碼(AID): #1QIHiX0U (MATLAB)
文章代碼(AID): #1QIHiX0U (MATLAB)