MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

Inhalt....: Das Euler-Cauchy Verfahren zur Lösung von Differenzialgleichung

Kategorie.: Arbeitsblatt

Mathematik: Analysis, Numerik

MuPAD.....: 3.0.0

Datum.....: 2002-03-06

Autoren...: Agnes Havasi <havasiagnes@yahoo.de>

Autoren...: Kai Gehrs <acrowley@mupad.de>

Funktionen: diff, plotfunc2d, solve, simplify, subs, plot, plot::Line2d,

Funktionen: plot::Point2d, plot::VectorField2d, plot::Ode2d, PointSize 

Funktionen: numeric::ode2vectorfield, ode        

________________________________________________________________________________

 

Das Euler-Cauchy Verfahren zur Lösung von

Differenzialgleichungen

 

 

In diesem Notebook stellen wir das Euler-Cauchy-Polygonzug Verfahren zur approximativen

grafischen Lösung von Differenzialgleichungen vor. Der mathematische Inhalt geht stellenweise

recht entscheidend über das hinaus, was standardmässig in Schulen behandelt werden kann.

Die Motivation bedient sich Beispielen der Physik, die ebenfalls recht komplex sind.

Es ist jedoch nicht unbedingt notwendig, ein physikalisch bzw. mathematisch

fundiertes Wissen auf dem Gebiet der gewühnlichen Differenzialgleichungen zu besitzen,

um die wesentlichen mathematischen Ideen, die hier vorgestellt werden, nachvollziehen

zu können. Vielmehr sollte man das Notebook als Appetithappen oder als eventuelle

Anregung für Facharbeiten bzw. mathematisch technisch interessierte Schülerinnen und

Schüler bzw. Studentinnen und Studenten verstehen.  

 

Motivation:

 

Differenzialgleichungen treten in vielen Bereichen der Natur und Technik auf.

So wird zum Beispiel die Bewegung einer an einer elastischen Feder

aufgehängten Kugel der Masse m beschrieben durch die Gleichung

                                             image

wobei y(t) den Ort der Kugel zur Zeit t beschreibt, y''(t) ihre Beschleunigung

und k eine Konstante ist. Diese entsteht durch Gleichsetzen der entsprechenden

Ausdrücke für die beteiligten Kräfte, nämlich

                            image

für die durch die Bewegung bedingte Kraft und

                            image

für die sogenannte Rückstellkraft der Feder mit Federkonstante c.

 

Ein weiteres Beispiel ist das Wachstum einer Bakterienkultur.

Beschreibt man die Populationsgröße der Kultur zur Zeit t mit y(t),

so ist das Wachstum in natürlicher Weise gegeben durch y'(t).

Dieses Wachstum ist proportional zur Größe der Population, also

                                                   image

Wir betrachten und behandeln diese Gleichung nun für den speziellen Fall

p=1:

                                                   image

Diese Gleichung ist eine sogenannte Differenzialgleichung. In Differenzial-

gleichungen tauchen Funktionen und ihre Ableitungen als Unbekannte auf.

 

Alle Funktionen, die die obige Gleichung erfüllen, müssen gleich ihrer

ersten Ableitung sein. Wir kennen alle die e-Funktion aus dem Schul-

unterricht. Leitet man diese Funktion ab, so erhält man wieder die gleiche

Funktion:

 

y := t -> exp(t);

y'

math

math

Diesen Sachverhalt kann man sich leicht anhand der folgenden beiden

Witze merken:

 

Witze in der Mathematik

 

Zwei Funktionen beschimpfen sich.

Nach einem längeren Austausch von "Komplimenten",

schließlich die eine: "Ich differenziere und integriere dich,

bis du nicht mehr weißt, wer du eigentlich bist!"

Darauf antwortet die andere: "Ätsch, ich bin e hoch x !"

 

Im Raum der stetigen Funktionen findet ein Tanzball statt. Auf der

Tanzfläche tanzen Cosinus und Sinus auf und ab und die Polynome

bilden einen Ring. Nur die Exponentialfunktion steht den ganzen Abend

alleine herum. Aus Mitleid geht die Identität irgendwann zu ihr hin und

sagt: "Mensch, integrier dich doch einfach mal!" "Schon versucht!",

antwortet die Exponentialfunktion, "Das hat aber auch nichts geändert!"

 

Wir kennzeichnen im folgenden mit y1 immer die erste Ableitung der

Funktion y.

 

Ist die Funktion exp(x) die einzige Lösung der obigen Differenzialgleichung?

 

Die Antwort ist nein, denn für eine beliebige reelle Zahl c gilt:

 

c * y(t) = diff(c * y(t), t)

math

d.h. alle Funktionen der Form y(x) = c * exp(x) erfüllen die obige Differenzial-

gleichung.

 

Wie kann man die Bedingungen an eine Lösung nun so weit verschärfen,

dass die Lösung eindeutig wird?

 

Zunächst schauen wir uns einige der Kurven der Form c * exp(x) an:

 

y_c:= t -> c * exp(t)

math

plotfunc2d(y_c(t) $ c = -4..4, t = -1..1)

MuPAD graphics

Beobachtung: Jede Kurve hat mit der y-Achse einen anderen Schnittpunkt.

Nun liegt es nahe, dass wir die Lösungskurve durch eine Bedingung der

Form y(0) = d für eine reelle Zahl d "eindeutig machen", denn zu vorgegebenen

d können wir aus y(x) = c * exp(x) den entsprechenden Wert für c berechnen.

 

solve(d = c * y(0), c)

math

d.h. wir müssen c = d wählen.

 

BEISPIEL: d = 3

 

solve(3 = c * y(0), c)

math

plotfunc2d(y_c|c=3, t = -1..1)

MuPAD graphics

Jetzt stellt sich die Frage: Wie löst man kompliziertere Gleichungen, wo man

die Lösung nicht wie oben "erraten" kann?

 

Ein mögliches Verfahren ist das sogenannte Euler-Cauchy-Polygonzugverfahren.

 

 

HISTORISCHES:

 

Euler (1707 - 1783) war einer der größten Mathematiker aller Zeiten.

Er entwickelte die Grundlagen der modernen Zahlentheorie und Algebra,

der Topologie, der Wahrscheinlichkeitsrechnung und Kombinatorik, der

Integralrechnung, der Theorie der Diffenrentialgleichungen und der

Differenzialgeometrie, der Variationsrechnung, entdeckte den Zusammenhang

zwischen trigonometrischen Funktionen und Exponentialfunktionen. Leonard

Euler entwickelte die Hydrodynamik und Strömungslehre, schuf die Grundlagen

für die Theorie des Kreisels. Er war ein genialer Naturwissenschaftler, ein

hervorragender Lehrer und Mentor.

 

Cauchy, geboren 21. 08. 1789 Paris, gestorben 22. 05. 1857 Sceaux (bei Paris).

Cauchy, dessen Vater hohe administrative Ämter bekleidete, erhielt eine

ausgezeichnete Privatausbildung. Er wollte Ingenieur werden und war auch

einige Jahre nach Beendigung seines Studiums als solcher tätig. Im

Selbststudium eignete er sich Werke von LAGRANGE und P.S. LAPLACE an.

Ab 1813 war Cauchy wieder in Paris. Seine mathematische Karriere begann aber

schon 1811, als es ihm gelang ein Problem von LAGRANGE zu lösen. Für die

Lösung eines Problems der Hydromechanik bekam Cauchy 1816 den Preis der

Pariser Akademie.

Mit seinen Arbeiten zur Elastizitätstheorie gehörte er spätestens ab 1822 zu

den herausragendsten Mathematikern seiner Zeit. In den Jahren 1815/16 war

Cauchy Professor an der Ecole Polytechnique und wurde 1816 Mitglied der

Französischen Akademie. Viele mathematische Begriffe und Sätze sind mit

seinem Namen verbunde, zum Beispiel der Satz von Cauchy, Cauchy-Folge,

Cauchy-Riemannsche Differenzialgleichungen, Cauchysche Integralformel,

Cauchyscher Integralsatz, Cauchysches Konvergenzkriterium. Cauchy gehört

zu den produktivsten Mathematikern aller Zeiten.

 

Zurück zur Mathematik an sich:

 

Die Idee des Verfahrens ist am leichtesten zu verstehen, wenn man sich

ein Beispiel anschaut. Wir wollen im folgenden die Differenzialgleichung

                                             image

Wir beginnen mit einem Anfangswert y(0) = 2. Dann können wir den

Wert y'(0) ausrechnen, denn y(t) = y(0) = 2 und t = 0 (Rechnung siehe unten)  image

 

delete y, y1:

y1:= t-> t * y - y^2

math

y1(0) | y=2

math

Wenn die Steigung bekannt ist, so können wir die Gerade durch (0|2) mit

Steigung -4 berechnen.

 

delete b:

g:= x -> -4 * x + b

math

solve( 2 = g(0), b)

math

Die Gerade ist also

 

g:= g | b=2

math

Die Idee ist nun: Berechne den Funktionswert von g an der Stelle 1/4 (d.h. wir gehen

einen viertel Schritt nach rechts):

g(1/4)

math

Das bedeutet: y(1/4)= 1.

l1 := plot::Line2d([0, 2], [1/4, 1]):

p1 := plot::Point2d([0, 2], PointSize = 3*unit::mm):

p2 := plot::Point2d([1/4, 1], Color = RGB::Blue,

                              PointSize = 3*unit::mm):

plot(l1,p1,p2):

MuPAD graphics

Setzen wir das Verfahren fort. Wir gehen von dem neuen Punkt (1/4|1)

aus wieder um 1/4 nach rechts und berechnen die entsprechende Steigung

und den Funktionswert wie oben:

 

y1(1/4) | y=1

math

Die Steigung ist jetzt -3/4, die Gerade läuft durch (1/4|1). Wir bestimmen

jetzt eine weitere Gerade h mit Steidung -3/4, die durch den Punkt (1/4|1)

verläuft.

 

h:= x -> -3/4 * x + c

math

solve(1 = h(1/4), c)

math

Die Gerade sieht also folgendermaßen aus:

 

h:= h | c=19/16

math

Berechnen wir jetzt den Funktionswert von h an der Stelle 1/2, d.h. wir gehen

noch einen viertel Schritt nach rechts:

 

h(1/2)

math

Also gilt näherungsweise: y(1/2) = 13/16

 

Zeichnen wir sie mit den bisherigen Ergebnissen zusammen in ein

Koordinatensystem:

 

p3:= plot::Point2d([1/2, 13/16], Color = RGB::Green,

                                 PointSize = 3*unit::mm):

l2:= plot::Line2d([1/4, 1], [1/2, 13/16]):

plot(p1,p2,p3,l1,l2):

MuPAD graphics

 

Wir setzen das Verfahren fort:

 

y1(1/2) | y=13/16

math

Die Steigung der Gerade ist  -65/256, die Gerade läuft durch den Punkt

(1/2 | 13/16). Diese Gerade bezeichnen wir mit k:

 

delete e:

k:= x -> -65/256 * x + e

math

solve( 13/16 = k(1/2), e)

math

Die Geradengleichung is daher gegeben durch:

 

k:= k | e=481/512

math

Berechnen wir jetzt den Funktionswert von k an der Stelle 3/4, d.h. wir

gehen einen weiteren viertel Schritt nach rechts:

 

k(3/4)

math

d.h. y(3/4) = 767/1024.

 

Zeichnen wir auch diese zusammen mit den vorherigen Ergebnissen:

 

p4:= plot::Point2d([3/4, 767/1024], Color = RGB::Pink,

                                  PointSize = 3*unit::mm):

l3:= plot::Line2d([1/2, 13/16], [3/4, 767/1024]):

plot(p1,p2,p3,p4,l1,l2,l3):

MuPAD graphics

Wenn man dieses Verfahren immer weiter fortsetzt, so erhält man einen

Polygonzug, der bei hinreichend kleiner Schrittweite, eine Kurve annähert.

Dieser Polygonzug nähert dann die Lösung der Differenzialgleichung

zu der festen Anfangsbedingung y(0) = 2 an.

 

Damit wir das Verfahren nicht in allen Schritten per Hand durchführen

müssen, bietet MuPAD eine Möglichkeit, zunächst die Steigung von

Differenzialgleichungen in Form von Richtungsfeldern in der Ebene zu

visualisieren.

 

Sehen wir uns eine geometrische Veranschaulichung des Richtungsfelds

der Differenzialgleichung y'(t) = t * y(t) - y(t) ^ 2 mit MuPAD an: 

 

f:= (t, y) -> t*y - y^2

math

V1 := plot::VectorField2d([1, f(t, y)], t = 0..3, y = 0..3,

                          Mesh = [10, 10],

                          Color = RGB::Black):

plot(V1):

MuPAD graphics

Wie interpretiert man das Bild? Man wählt auf der y-Achse einen Anfangswert,

z.B. y(0) = 2. Nun folgt man von diesem Punkt aus den Pfeilen in der Ebene.

Dies liefert eine Näherung der Lösung der Differenzialgleichung zum gegebenen

Anfangswert. Im obigen Beispiel, wo wir mit den Geraden gerechnet haben,

haben wir die Pfeile mathematisch über die Steigung der berechneten Geraden

angenähert.

 

Wir zeichnen unsere Näherungslösung mit dem Richtungsfeld in ein

Koordinatensystem:

 

plot(p1,p2,p3,p4,l1,l2,l3,V1):

MuPAD graphics

Offensichtlich folgen wir mit dem obigen Verfahren zumindest im

Anfangswert y(0) = 2 unmittelbar dem eingezeichneten Pfeil.

 

Natürlich können wir mit MuPAD auch eine Kurve zu einem gegebenen

Anfangswert mit in die Grafik einzeichnen. Man sieht sehr schön, dass

die von MuPAD berechnete Näherung genauer ist, denn unsere Näherung

weicht deutlich davon ab.

 

f2 := plot::Ode2d(

   (t,Y) -> [f(t, Y[1])], [i/3 $ i=0..9], [2],

   [(t, Y) -> [t, Y[1]], Style = Points,  Color = RGB::Red],

   [(t, Y) -> [t, Y[1]], Style = Splines, Color = RGB::Blue]):

 

f2 := plot::modify(f2, PointSize = 3*unit::mm):

 

plot(V1, f2, p1,p2,p3,p4,l1,l2,l3,

         Scaling = Constrained, GridVisible,

         XAxisTitle = "t", YAxisTitle = "y",

         XTicksDistance = 1.0, YTicksDistance = 0.5

):

MuPAD graphics

Unsere Näherung verbessert sich dann, wenn wir die Schrittweite von

1/4 auf kleinere Werte 1/n für große n verkleinern.

 

Wie man sieht, interpoliert MuPAD zwischen den rot eingefärbten Punkten

NICHT mit linearen Funktionen, so wie wir es oben gemacht haben. Das

liegt daran, dass wir die Option Style = Splines verwendet haben.

Sie bewirkt, dass die Näherungsfunktion wirklich wie eine Kurve aussieht

und liefert daher offensichtlich viel genauere Werte als unser obiges

Verfahren.

 

Wir zeichnen noch einige Lösungskurven der betrachteten Differenzial-

gleichung zum Abschluß:

 

[f, t0, Y0] := [numeric::ode2vectorfield(

      {y'(t) = t*y(t) - y(t)^2, y(0) = 2}, [y(t)])]:

G := (t, Y) -> [t, Y[1]]:

p1 := plot::Ode2d(f, [-0.5, i $ i = 0..4], Y0,

                  [G, Style = Points, Color = RGB::Blue],

                  [G, Style = Splines, Color = RGB::Red]):

 

Wählen wir noch 3 und 4 als weitere Anfangswerte.

 

[f, t0, Y0] := [numeric::ode2vectorfield(

      {y'(t) = t*y(t) - y(t)^2, y(0) = 3}, [y(t)])]:

G := (t, Y) -> [t, Y[1]]:

p2 := plot::Ode2d(f, [-0.5, i $ i = 0..5], Y0,

                  [G, Style = Points, Color = RGB::Blue],

                  [G, Style = Splines, Color = RGB::Green]):

 

[f, t0, Y0] := [numeric::ode2vectorfield(

      {y'(t) = t*y(t) - y(t)^2, y(0) = 4}, [y(t)])]:

G := (t, Y) -> [t, Y[1]]:

p3 := plot::Ode2d(f, [-0.5, i $ i = 0..5], Y0,

                  [G, Style = Points, Color = RGB::Blue],

                  [G, Style = Splines, Color = RGB::Black]):

 

plot(p1,p2,p3):

MuPAD graphics

Wir betrachten noch einige weitere Beispiele aus dem Bereich der Differenzial-

gleichungen:

                                               image

 

Wir zeichnen das Richtungssfeld und eine Näherung zur Anfangsbedingung

y(0) = 1/2:

 

 

f:= (t, y) -> t*sin(t + y^2) - y

math

p1:= plot::VectorField2d([1, f(t, y)], t = 0..4, y = -1..1,

                         Mesh = [10, 5], Color = RGB::Black):

p2:= plot::Ode2d(

   (t,Y) -> [f(t, Y[1])], [i/3 $ i=0..12], [0.5],

   [(t, Y) -> [t, Y[1]], Style = Points, Color = RGB::Red],

   [(t, Y) -> [t, Y[1]], Style = Splines, Color = RGB::Blue]):

p2:= plot::modify(p2, PointSize = 3*unit::mm):

plot(p1, p2, Scaling = Constrained,

     XAxisTitle = "t", YAxisTitle = "y",

     GridVisible = TRUE,

     XTicksDistance = 1.0,

     YTicksDistance = 0.5):

MuPAD graphics

Ein letztes Beispiel betrachten wir die Differenzialgleichung

                                                       image

 

f := (t, y) -> t*1/y

math

p1 := plot::VectorField2d([1, f(t, y)], t = 0..3, y = 0.1..3,

                          Mesh = [15, 15], Color = RGB::Black):

p2 := plot::Ode2d(

   (t,Y) -> [f(t, Y[1])], [i/3 $ i=0..9], [0.5],

   [(t, Y) -> [t, Y[1]], Style = Points, Color = RGB::Red],

   [(t, Y) -> [t, Y[1]], Style = Splines, Color = RGB::Blue]):

p2 := plot::modify(p2, PointSize = 3*unit::mm):

plot(p1, p2, Scaling = Constrained,

     XAxisTitle = "t", YAxisTitle = "y",

     GridVisible = TRUE,

     XTicksDistance = 1.0,

     YTicksDistance = 0.5):

MuPAD graphics

Nun stellt sich die Frage: Ist die Differenzialgleichung, die wir betrachten,

auch exakt lösbar?

 

Eine geschlossene Lösung können wir mit MuPAD wie folgt berechnen:

 

eq := ode(y'(x) = t*1/(y(x)), y(x))

math

solve(eq)

math

________________________________________________________________________________

 

Anmerkungen:

 

1.  Weitere Anregungen finden Sie unter: http://schule.mupad.de bzw. http://studium.mupad.de

 

_______________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.