求解 ODE
您可以使用解題指令群與
odesolve 函數,在指定值域內求解滿足常微分方程式 (ODE) 的函數。
以下的輸出函數是在值域 0 ≤ x ≤ 20 內求解:
在解題指令群中使用 ODE 時,必須注意下列條件約束:
• 運算子 - 在解題指令群中使用等於運算子求解 ODE。請勿使用比較運算子或不等式運算子。若要定義導數,請使用導數或微分運算子,例如 d/dx 與 d2/dx2 或 y'(x) 與 y''(x)。
• 初始與邊界條件 - 每個 n 階 ODE 必須有 n 個獨立等式條件約束:
◦ 初始值問題 - 單一初始點 a 處需要 y(x) 及其第一個 n − 1 階導數的值。
◦ 邊界值問題 -
n 個條件約束必須指定初始點
a 或終點
b 處之
y(x) 及其導數的特定值。這些條件約束必須滿足
sbval 函數的輸入需求。當您提供邊界值條件時,函數
odesolve 會呼叫
sbval。
無論何種情況,您在邊界條件中使用的端點都必須符合 odesolve 指令所指定的端點。PTC Mathcad 會檢查條件的類型與數目是否正確,若有錯誤還會傳回錯誤。
• 代數條件約束 - 您可以新增代數條件約束,例如 y(b) + z(b) = w(b)。解題指令群接著會包含額外的不明函數 w,您必須將其指定為 odesolve 中的輸出函數之一。
• 輸出 - 您必須將 odesolve 的輸出指派給函數名稱或函數名稱向量,而不提供引數。
這些函數的隱含引數是積分的變數:
解題法
• 視問題規模與使用的相關步距大小之不同,可能需要降低 TOL 值,才可取得適當的解。若 PTC Mathcadodesolve 報告有太多積分項,請嘗試這個方法。
• 求解的函數不得在積分區間內包含任何奇點,否則會產生不可靠的結果。
• 若求解在許多循環內具有周期行為的問題,會發生混淆現象。若要在結果中取得預期的頻率,請增加內插點數。
• 若要求解在最高階導數項數中非線性的 ODE,或者若要在程式迴圈中求解 ODE,請使用
rkfixed 或其他指令行 ODE 求解器之一。您也可以使用局部函數,在程式迴圈中指派參數化解題指令群的輸出。