PDA

View Full Version : [Frage] Bsp 82


TOMM (Harmanic)
07-11-2007, 14:17
Habe bei schrittweite h=0,3 <=> n=3 folgendes für die einzelnen verfahren rausbekommen:

euler(1,6) = 2,26923
verb_euler(1,6) = 2,339959
rungekutta(1,6) = 2,35193181

.. allerdings weiß ich noch nicht wie ich das beispiel exakt lösen kann :wein:
mir fehlt hier wohl die kreativität für die trennung der variablen

Spite82
07-11-2007, 20:20
Blöde Frage vielleicht, aber ich dachte wir haben y(1) = 1 angegeben. Wir sollen nun y(1.6) ausrechnen, ist bei n = 3 unser h dann nicht 0.2?? oder hab ich das was falsch/gar nicht verstanden??

Lg
Spite

Spite82
07-11-2007, 21:15
Ja wär interessant zu wissen wie man das trennen kann :(
Ich probier da auch schon einige Zeit herum.

Lg
Spite

edit:
Wobei mir so einfällt:
ist y/x nicht tan(y)?

edit2:
nah Blödsinn....

aBoN
08-11-2007, 12:16
Zum Evaluieren: Maple kommt zu dem Ergebnis
y(x) = ( ln(x) + 1) * x
Die exakte Lösung ist dann: y(1.6) = 2.352005806
Aber wie man das 'händisch' löst, darauf bin ich auch noch nicht gekommen.

Tiare
08-11-2007, 12:58
Hm.. ich rechne jetzt schon ne ewigkeit rum... und komm irgendwie immer auf andere Werte...
Was verwendet ihr denn jeweils für die xi?? ist mir klar.. xi+1 = xi + h.. aber bei welchem xi fangt ihr an? :confused:

Wär cool wenn mir wer helfen könnt! ;-)

aBoN
08-11-2007, 14:08
x_0 = 1
x_n = 1.6
n = 3
==> h = (x_n - x_0)/n = 0.2
x_0 = 1
x_1 = 1.2
x_2 = 1.4
x_3 = 1.6

Kujaku
08-11-2007, 16:14
berechnungen mit n=3 (h = 0.2)
EP: 2.29524 rel Fehler 0.0241
VEP: 2.34629 rel Fehler 0.00243
RK: 2.35199 rel Fehler 0.00000674

homogene lösung:
y_h'-\frac{1}{x}y_h=0
\frac{y_h'}{y_h}=\frac{1}{x}
ln(y_h)=ln(x)+c_0
y_h=c*x

partikuläre lsg:
y_p=c(x)*x
y_p'=c(x)'*x+c(x)
y_p'-\frac{1}{x}y_p=1
c(x)'*x+c(x)-\frac{1}{x}*c(x)*x=1
c(x)'*x=1
c(x)'=\frac{1}{x}
c(x)=ln(x)
y_p=c(x)*x=ln(x)*x

allg. lsg:
y=c*x+ln(x)*x
y(1)=1
1=c+ln(1)
c=1
y=x+ln(x)*x=x*(1+ln(x))
y(1.6)=2.352006

und als extra, ein R script, dass das alles ausrechnet:

f <- function(x,y) return(1+y/x)
ep <- function(a, b, n, f, y0) {
h <- (b-a)/n
xi <- a
yi <- y0
for (i in 1:n) {
yi <- yi + h*f(xi,yi)
xi <- xi + h
}
return(yi)
}
vep <- function(a, b, n, f, y0) {
h <- (b-a)/n
xi <- a
yi <- y0
for (i in 1:n) {
k1 <- f(xi,yi)
k2 <- f(xi+h,yi+h*k1)
yi <- yi + h/2*(k1+k2)
xi <- xi + h
}
return(yi)
}
rk <- function(a, b, n, f, y0) {
h <- (b-a)/n
xi <- a
yi <- y0
for (i in 1:n) {
k1 <- f(xi,yi)
k2 <- f(xi+h/2,yi+h/2*k1)
k3 <- f(xi+h/2,yi+h/2*k2)
k4 <- f(xi+h,yi+h*k3)
yi <- yi + h/6*(k1+2*k2+2*k3+k4)
xi <- xi + h
}
return(yi)
}
y_dgl <- (log(1.6)*1.6+1.6)
y_ep <- ep(1,1.6,3,f,1)
y_vep <- vep(1,1.6,3,f,1)
y_rk <- rk(1,1.6,3,f,1)
cat("Eulersches Polygonzugverfahren:\nWert:",y_ep,"\nFehler:",abs(y_ep-y_dgl)/y_dgl)
cat("\nVerbessertes Eulersches Polygonzugverfahren: \nWert:",y_vep,"\nFehler:",abs(y_vep-y_dgl)/y_dgl)
cat("\nRunge-Kutta-Verfahren: \nWert:",y_rk,"\nFehler:",abs(y_rk-y_dgl)/y_dgl)