伊莉討論區
標題:
有關於尤拉法的問題
[打印本頁]
作者:
a352721
時間:
2011-12-31 02:19 AM
標題:
有關於尤拉法的問題
[i=s] 本帖最後由 a352721 於 2011-12-31 02:21 AM 編輯 [/i]
利用尤拉法
假設有一微分方程式為 y'(x) = f(x; y(x)) ,初始值為 y(0) = a, 此微分方程式若以幾何方式解釋
則表示解答圖形在 (x; y) 點上斜率等於函式 f(x; y(x)) 之值。
假設在x軸有若干等距點,分別為x0; x1; x2;.......; xn, 其間距為 h ,為方便起見讓 x0 = 0
則在點 (xn; yn) 的斜率可用{y((n + 1)h) - y(nh)}/h 估算 ,以 yn 表示 y(nh)
代入微分方程後可得 y(n+1 = yn + hf(xn; yn) 且 y0 = 1
如何用此方法,寫一程式計算 y' = x + y與初始值
作者:
ajiljmn
時間:
2012-1-2 07:35 PM
本帖最後由 goodbye_mylove 於 2012-1-2 09:02 PM 編輯
我假設你這個問題的意思是 要自己假設 n+1 個點 x_0, x_1, x_2, ..., x_n
然後求出 y 在這 n 個點的近似值 (取 x_0 = 0, 然後 h = (x_n - x_0) / n)
已知 y_0 = 1 (題目給的)
可以知道 y'(x_0) = x_0 + y_0 = 1
然後用題目的近似 知道 y_1 = h*y'(x_0) + y_0 = h + 1
依此類推, y_{n+1} = h*y'(x_n) + y_n 而且 y'(x_n) = x_n + y_n
寫成程式大概像是
double y[100], dy[100], x_i, x_100 = 10.0, h = x_100 / 100.0;
y[0] = 1.0;
for (int i=0; i<99; i++) {
x_i = h*i;
dy[i] = x_i + y[i];
y[i+1] = h*dy[i] + y[i];
}
複製代碼
歡迎光臨 伊莉討論區 (http://a401.file-static.com/)
Powered by Discuz!