伊莉討論區

標題: 有關於尤拉法的問題 [打印本頁]

作者: 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

寫成程式大概像是
  1. double y[100], dy[100], x_i, x_100 = 10.0, h = x_100 / 100.0;
  2. y[0] = 1.0;
  3. for (int i=0; i<99; i++) {
  4.     x_i = h*i;
  5.     dy[i] = x_i + y[i];
  6.     y[i+1] = h*dy[i] + y[i];
  7. }
複製代碼





歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!