簡體   English   中英

如何使用 Octave 求解二階微分方程?

[英]How do I solve a second order differential equation using Octave?

我是 Octave 的新手,我正在嘗試為我的項目求解以下方程式。 我找不到任何解決微分方程的直接指南。 有人可以演示如何解決嗎? 非常感謝您的幫助!

我正在嘗試 plot 對於具有給定初始 h、miu、r、theta、g、L 以及 h 和 theta wrt t 的導數的方程,h 隨時間變化的圖表。 這可能嗎? 如果是這樣,怎么辦?

提到的兩個方程

我嘗試在給定條件下將方程式輸入 Octave,但似乎存在我無法識別的錯誤。

我對編碼也非常陌生,但我需要這個來完成我的項目

無論您將使用什么數值軟件,Octave 或其他軟件(不進行形式計算),第一步是將您的系統或 p 階 N 耦合常微分方程 (ODE) 轉換為 p*N 耦合 ODE 系統訂單1

這總是通過將中間導數設置為新變量來完成的。 那么對於你的系統在此處輸入圖像描述

會變成

在此處輸入圖像描述

然后,使用 Octave,如doc lsode中所述,您定義了一個 function say Xdot = dsys(X) ,它對該系統進行編碼。 X是向量[h, theta, H, J]Xdot是它們各自導數的返回向量,如一階 ODE 系統的右側表達式所定義。

因此, Xdot的前 2 個元素將是微不足道的,只是Xdot=[X(3) X(4)...]

當然, dsys()還必須使用參數M, g, m, µ, Lr 據我了解,它們不能作為額外的 arguments 傳遞給dsys() 所以你必須在調用lsode之前定義它們。

對於初始狀態,您必須定義已知初始值的向量X0=[h0, theta0, H0, J0]

然后必須定義要計算並獲取 X 值的遞增時間向量 >= 0。 例如, t = 0:100 0 必須是t的第一個元素。

最后,調用Xt = lsode(@dsys, X0, t) 之后你應該得到

  • Xt(:,1)h(t)的值
  • Xt(:,2)theta(t)的值
  • Xt(:,3)H(t)=(dh/dt)(t)的值
  • Xt(:,4)J(t)=(dtheta/dt)(t)的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM