File:Runge-kutta.svg
From Wikipedia, the free encyclopedia
![File:Runge-kutta.svg](http://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Runge-kutta.svg/720px-Runge-kutta.svg.png)
呢個「SVG」檔案嘅呢個「PNG」預覽嘅大細:720 × 450 像素。 第啲解像度:320 × 200 像素|640 × 400 像素|1,024 × 640 像素|1,280 × 800 像素|2,560 × 1,600 像素。
原本檔案 (SVG檔案,表面大細: 720 × 450 像素,檔案大細:54 KB)
摘要
描述Runge-kutta.svg |
Deutsch: Runge-Kutta Methoden für die Differentialgleichung y'=sin(t)^2*y |
日期 | |
來源 |
|
作者 |
This is a retouched picture, which means that it has been digitally altered from its original version. Modifications: converted into svg. The original can be viewed here: RK Verfahren.png: ![]()
|
R Code
# differential equation y'=sin(t)^2 * y
dy <- function(t, y) sin(t)^2 * y
# exact solution
exact <- function(t) 2 * exp(0.5*(t - sin(t)*cos(t)))
# euler's method
euler <- function(t, y, h, fun) {
y1 <- y + h*fun(t, y)
return(c(t + h, y1))
}
# heun's method
heun <- function(t, y, h, fun) {
yp <- y + h*fun(t, y)
y1 <- y + 0.5*h * (fun(t, y) + fun(t+h, yp))
return(c(t + h, y1))
}
# classical Runge–Kutta method
runge <- function(t, y, h, fun) {
y0 <- fun(t, y)
ya <- fun(t+h/2, y + h/2*y0)
yb <- fun(t+h/2, y + h/2*ya)
yc <- fun(t+h, y + h*yb)
y1 <- y + h/6*(y0 + 2*(ya+yb) + yc)
return(c(t + h, y1))
}
# step size = 0.5, last value = 5
h <- 0.5
niter <- 5/h
run <- eul2 <- eul <- heu <- data.frame(t=0, y=exact(0))
for(i in seq_len(niter)+1) {
eul[i, ] <- euler(t=eul$t[i-1], y=eul$y[i-1], h=h, fun=dy)
heu[i, ] <- heun (t=heu$t[i-1], y=heu$y[i-1], h=h, fun=dy)
run[i, ] <- runge(t=run$t[i-1], y=run$y[i-1], h=h, fun=dy)
}
# euler's method with reduced step size
h <- 0.25
niter <- 5/h
for(i in seq_len(niter)+1) {
eul2[i, ] <- euler(t=eul2$t[i-1], y=eul2$y[i-1], h=h, fun=dy)
}
# evaluating exact solution at
t <- seq(0, 5, 0.1)
# concatenating the methods into a data.frame
odesolve <- rbind(data.frame(t=t, y=exact(t), method="Exact Solution"),
data.frame(run, method="Runge-Kutta method"),
data.frame(heu, method="Heun's method"),
data.frame(eul2, method="Euler's method (reduced step size)"),
data.frame(eul, method="Euler's method"))
# translating into german
odesolve$method <- factor(odesolve$method,
levels=c("Exact Solution", "Runge-Kutta method",
"Heun's method",
"Euler's method (reduced step size)",
"Euler's method"),
labels=c("Exakte Lösung", "Klassisches Runge-Kutta",
"Heun", "Euler (halbe Schrittweite)",
"Euler"))
library(ggplot2)
p <- ggplot(odesolve, aes(x=t, y=y, col=method)) + geom_line() +
geom_point(data=subset(odesolve, as.numeric(method)!=1)) +
scale_color_discrete("") +
theme_bw() + theme(legend.position=c(0.02, 1), legend.justification=c(0, 1))
ggsave("runge-kutta.svg", width=8, height=6, plot=p)
協議
我,呢份作品嘅作者,決定用以下許可發佈呢件作品:
![w:en:Creative Commons](https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/CC_some_rights_reserved.svg/90px-CC_some_rights_reserved.svg.png)
![署名](https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Cc-by_new_white.svg/24px-Cc-by_new_white.svg.png)
![相同方式分享](https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Cc-sa_white.svg/24px-Cc-sa_white.svg.png)
呢個檔案用共享創意 姓名標示-非商業性-相同方式分享3.0 未本地化版本條款授權。
- 你可以:
- 去分享 – 複製、發佈同傳播呢個作品
- 再改 – 創作演繹作品
- 要遵照下面嘅條件:
- 署名 – 你一定要畀合適嘅表彰、畀返指向呢個授權條款嘅連結,同埋寫明有無改過嚟。你可以用任何合理方式去做,但唔可以用任何方式暗示授權人認可咗你或者你嘅使用方式。
- 相同方式分享 – 如果你用任何方式改過呢個作品,你必須要用返原本或者相似嘅條款發佈。
Captions
Add a one-line explanation of what this file represents
Items portrayed in this file
圖中顯示嘅係
11 5 2014
image/svg+xml
檔案歷史
撳個日期/時間去睇響嗰個時間出現過嘅檔案。
日期/時間 | 縮圖 | 尺寸 | 用戶 | 註解 | |
---|---|---|---|---|---|
現時 | 2014年5月11號 (日) 13:37 | ![]() | 720 × 450(54 KB) | T.gauster | fixed typo, adjusted width and height |
2014年5月11號 (日) 09:49 | ![]() | 720 × 540(54 KB) | T.gauster | User created page with UploadWizard |
檔案用途
以下嘅1版用到呢個檔:
全域檔案使用情況
下面嘅維基都用緊呢個檔案:
- de.wikipedia.org嘅使用情況
- en.wikipedia.org嘅使用情況
- ko.wikipedia.org嘅使用情況
- pl.wikipedia.org嘅使用情況
Metadata
呢個檔案有額外嘅資料。佢應該係數碼相機或者掃描器整出來嘅。如果佢整咗之後畀人改過,裏面嘅資料未必同改過之後相符。
闊 | 576pt |
---|---|
高 | 360pt |