[請益] 四階非線性微分方程的數值分析問題

看板Mathematica作者 ( 迷途小書僮)時間10年前 (2014/02/15 22:47), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
已爬過文,也在網路上做過功課。 版上是有類似的文章,但有與前文不同問題發問。 問題描述在 http://min.us/i/7M0CwA2TTJZf 這是一個四階非線性常微分方程式,當然沒有closed-form。 但我在使用NDsolve遇到了問題,只要其中某一個參數一小,就會出現 NDSolve::ndsz: At x == 0.21501, step size is effectively zero; singularity or stiff system suspected 因為公式是我自己導的,物理現象我了解,知道問題的原因是什麼,不是其間有奇點。 而是因為這是屬於「邊界層問題」,在接近邊界的微短區域內會有極大的函數變化,離開 此微短區域後,函數變化急速趨緩,維持一平穩的狀態。此函數陡緩急遽變化的分界點即 為邊界層。 簡而言之,就是在很小的範圍內,函數會有很激烈的變化。 在期刊類似的方程式是先採用「shooting method」將此boundary value problem轉成 initial value problem,再使用4th-order Runge-Kutta method求解。 是否可請教對此類非線性微分方程,使用Nsolve之下採用何種設定進行數值分析? 此外,是不是也有Nsolve無法處理的問題(如同本題),若如此,是否有其他程式 可以處理此問題? 雖然不知道P幣對本版學有專精的人士是否有用,如您的回答可以解決問題,奉上5000P 感謝您的熱心幫忙。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.41.97

02/15 23:18, , 1F
把 WorkingPrecision 加大一些試試?
02/15 23:18, 1F

02/15 23:55, , 2F
用別的演算法試試 例如用Method->"StiffnessSwitching"
02/15 23:55, 2F

02/24 10:35, , 3F
err..NDSolve預設是解IVP,要解BVP請把Method設為Shooti
02/24 10:35, 3F

02/24 10:36, , 4F
或是Chasing
02/24 10:36, 4F

02/24 10:37, , 5F
會出現stiffiness警訊純粹是因為IV Matrix是illdefined
02/24 10:37, 5F

02/24 11:27, , 6F
隨手試了幾個shooting的IV發現還是有stiffness問題
02/24 11:27, 6F

02/24 11:28, , 7F
不過比Auto好很多很多了,可能IV的選擇不是那麼trivial
02/24 11:28, 7F
文章代碼(AID): #1I_ttlrg (Mathematica)
文章代碼(AID): #1I_ttlrg (Mathematica)