回覆列表
  • 1 # 使用者6847486145697

    以下是我個人的一些理解,供參考:

    MATLAB提供了7個常微分方程求解器(solver),分別是ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb,其中前3個適用於求解非剛性(Nonstiff)問題,後4個適用於剛性問題。所謂剛性問題,簡單點說,就是系統包含多個相互作用但變化速度相差十分懸殊的子過程。

    ode45基於顯式4-5階龍格庫塔公式,其演算法屬於單步法;ode15s是一個變階求解器,用的是多步法。

    對於很多問題,這些求解器都是可以使用的,儘管可能存在一些效率和精度方面的差異。

    但是,這些求解器並不是可以互相取代的,它們分別適用於不同的精度要求和問題的型別。也就是說,沒有任何一個求解器在任何情況下都優於或劣於其它求解器。否則,MATLAB也沒必要提供這麼多求解器。

    要徹底搞清楚這些求解器的差別和適用範圍是有一定難度的,需要對其背後的演算法有一定了解才行。MATLAB在函式參考裡對演算法做了簡要的說明,並給出了多個參考文獻,如果有興趣,可以進一步查閱。

    如果對於問題的性質比較清楚,也知道什麼演算法可能比較有效,可以直接選擇適當的求解器。在沒有對於問題是否剛性的先驗知識的條件下,根據MATLAB的建議,ode45是大多數情況下應該嘗試的首選,如果ode45求解失敗或效率很低,次選就是ode15s。

  • 中秋節和大豐收的關聯?
  • ecvt與ctv變速箱有什麼區別?