查看: 1326|回复: 5
|
Euler Method
[复制链接]
|
|
在這裡有個問題不知道那裡做錯了,還望各位指出:
題目是dy/dx = 3yx^2, 它說噹x = 1, y = 5, 我解出來了,也就是 y = 5e^(x^3 - 1)。
好了,問題來了, 題目要我用step size = 0.50找出y(2),我是這樣做的,不知道那裡錯:
我用x0 = 1, y0 = 5
因formula是y(n+1) = y(n) + hf(x(n), y(n))
所以 y1 = 5 + 0.50(3 * 5 * 1^2) = 12.5
y2 = 5 + 0.50(3 * 12.5 * 1.5^2) = 54.6875
怎麼找出來的答案跟真正的答案相差這麼遠呢 ? (真正的Answer是5000++) |
|
|
|
|
|
|
|
发表于 17-11-2004 04:01 PM
|
显示全部楼层
Numerical solution of y'=3yx^2 by Euler Method with the initial condition y = 5 at x = 1:
n x y y'
--- ----------- ----------- -----------
0 1.0000000 5.0000000 15.0000000
1 1.5000000 12.5000000 84.3750000
2 2.0000000 54.6875000 656.2500000
3 2.5000000 382.8125000 7177.7343750
4 3.0000000 3971.6796875 107235.3515625
从以上的表可以看出,问题是出在 y'' 太大了。Euler method 假定 Taylor expansion of y 的 higher order terms, i.e., (1/{2!})h^2 y''+ (1/{3!})h^3 y''' + ... 很小可以忽略不记在这个情况下不能成立,所以出來的答案跟真正的答案才会相差那麼遠。我尝试用 step size = 0.0001, 找出的 y(2) = 5465.43987 跟真正的答案 y(2)_exact = 5483.16579 还是有蛮大的出入。可是如果用 Runge-Kutta method with step size = 0.001, 就可找出令人满意的 y(2) = 5483.16579。
[ Last edited by fadeev_popov on 17-11-2004 at 04:49 PM ] |
|
|
|
|
|
|
|
发表于 17-11-2004 06:51 PM
|
显示全部楼层
Improved Euler Method也是相差很远是吗 ? 我还以为我算错了 |
|
|
|
|
|
|
|
发表于 17-11-2004 07:19 PM
|
显示全部楼层
Runge Kutta 学到four order,晕,算到晕。。。 |
|
|
|
|
|
|
|
发表于 17-11-2004 08:51 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 17-11-2004 11:31 PM
|
显示全部楼层
Runge-Kutta Method 是一种解微分方程的数值方法。比如已知微分方程 y'=f(x,y) 的初始值为 y(x0) = y0,那么
y(x0 + h) = y0 + (1/6)*(k1 + 2*k2 + 2*k3 +k4), where
k1 = h*f(x0 , y0),
k2 = h*f(x0 + (1/2)*h , y0 + (1/2)*k1),
k3 = h*f(x0 + (1/2)*h , y0 + (1/2)*k2),
k4 = h*f(x0 + h , y0 + k3). |
|
|
|
|
|
|
| |
本周最热论坛帖子
|