函數 > 求解與最佳化 > 微分方程式求解器 > 範例:電路中的阻尼諧振
範例:電路中的阻尼諧振
假定有個包含電阻器 R、感應器 L 及電容器 C 的簡單電路。
使用微分方程式對電容器 C 上的電荷 Q 進行建模,然後使用 ODE 求解器函數求解其他近似解。最後,將結果與 Q 的精確解進行比較。
使用微分方程式
1. 編寫微分方程式,讓三個元件之間的電壓加起來必須等於零:
按一下以複製此運算式
2. 編寫微分方程式,讓電容器 C 上的電荷 Q 產生瞬變:
按一下以複製此運算式
3. 定義零時電荷 Q
按一下以複製此運算式
4. 假設使用下列輸入參數值:
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
5. 將微分方程式轉換為標準格式:
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
6. 求解 ab 在所有狀況下的方程式:
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
7. Q 繪製兩個可能的解:
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
a=b 時,電荷 Q1 會快速衰減為零;當 a 不等於 b 時,電荷會振盪很長的一段時間,再漸趨於零。
使用 ODE 求解器之前
定義要傳給 ODE 求解器函數的參數:
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
ODE 求解器分為兩種類型:剛性系統的求解器及非剛性系統的求解器。以矩陣格式寫成 y' = Ax 的 ODE 系統,若矩陣 A 趨近於單數即稱為剛性。否則,即為非剛性系統。
剛性系統與非剛性系統的區別可能與矩陣 A 固有的動態比例相關 (如其本徵值所描述)。使用不同本徵值 (或值域上下限很極端) 的矩陣一般是剛性系統。
根據指定的系統參數,此簡單的阻尼諧振範例代表非剛性系統。
函數 rkfixedRkadaptBulstoer 使用文件 TOL 值。
函數 AdamsAdamsBDFBDFRadau 可以設定 TOL 的特定值,或使用自己預設的 10-5 TOL 值。
使用非剛性系統的 ODE 求解器
使用非剛性系統的 ODE 求解器求近似解,然後將結果與 Q 的精確解進行比較。
1. Adams
按一下以複製此運算式
按一下以複製此運算式
2. rkfixed
按一下以複製此運算式
按一下以複製此運算式
3. Rkadapt
按一下以複製此運算式
按一下以複製此運算式
4. Bulstoer
按一下以複製此運算式
按一下以複製此運算式
使用剛性系統的 ODE 求解器
使用剛性系統的 ODE 求解器求近似解,然後將結果與 Q 的精確解進行比較。
1. BDF
按一下以複製此運算式
按一下以複製此運算式
2. Radau
按一下以複製此運算式
按一下以複製此運算式
使用 ODE 混合式求解器
使用 ODE 混合式求解器 AdamsBDF 求近似解,然後將結果與 Q 的精確解進行比較;該求解器會決定系統為剛性或非剛性,然後再據以呼叫 AdamsBDF
1. AdamsBDF
按一下以複製此運算式
按一下以複製此運算式
結論
在非剛性系統的 ODE 求解器內,函數 Adamsrkfixed 會分別傳回含有最小與最大誤差的解。
在剛性系統的 ODE 求解器內,函數 RadauBDF 會分別傳回含有次小與次大誤差的解。
混合式函數 AdamsBDF 會傳回比 AdamsBDF 所傳回之兩個值更小的值。
整體而言,函數 Radaurkfixed 會分別傳回含有最小與最大誤差的解。
比較結果
1. 繪製非剛性系統的 ODE 求解器所傳回含有最小 (Adams, G0nss) 與最大 (rkfixed, G1nss) 誤差的解:
按一下以複製此運算式
Q 相比,兩個傳回的解會有很大的差異。
2. 繪製剛性系統的 ODE 求解器所傳回含有最小 (Radau, G1ss) 與最大 (BDF, G0ss) 誤差的解:
按一下以複製此運算式
相對於 Q,這兩個解完全相同。
3. 繪製產出剛性與非剛性系統的 ODE 求解器所傳回之最小 (Radau, G1ss) 與最大 (rkfixed, G1nss) 誤差的解:
按一下以複製此運算式
函數 Radau (剛性系統求解器) 會傳回 Q 的最近似解。
這是否有幫助?