Fachhochschule München, Fachbereich 03: Maschinenbau

Werbung
Fachhochschule München, Fachbereich 03: Maschinenbau/Fahrzeugtechnik/Flugzeugtechnik
Datei:
Maple-Praktikum5.mws
Datum: 30.5..2005
Erstellt von Prof. Dr. K. Warendorf unter Verwendung einer Vorlage von Dr. habil. D. Gröger
Fachhochschule München, Fachbereich 03: Maschinenbau/Fahrzeugtechnik/Flugzeugtechnik
-------------------------------------------------------------------------------------------------------------------Maple - Praktikum
Teil 5: Differentialgleichungen
In diesem Worksheet lernen Sie einige Fähigkeiten von MAPLE zur Lösung von gewöhnlichen
Differentialgleichungen (DGL) kennen.
Das Problem beim Lösen von DGL ähnelt dem bei der Integration von Funktionen: Es existieren
zahlreiche mathematische Verfahren, die aber jeweils nur in ganz bestimmten Fällen zielführend
sind. Zu den meisten möglichen (also mathematisch formulierbaren) DGL existieren überhaupt
keine symbolischen Lösungen. Von dem MAPLE-Kommando dsolve zur symbolischen Lösung
einer DGL gibt es daher eine numerische Variante, die durch die Option numeric aufgerufen
werden kann.
Im Folgenden betrachten wir zunächst die DGL erster Ordnung y' = F(x,y). Wir lernen,
Richtungsfeld und Isoklinen zu zeichnen. Die Lösungen y der DGL werden exakt oder numerisch mit dem
Runge-Kutta-Fehlberg-Verfahren ermittelt, und die Lösungskurven werden geplottet.
Anschließend werden verschiedene Typen von DGL zweiter Ordnung exakt gelöst und ihre
Lösungskurven gezeichnet.
> restart;
# Löschen aller Bindungen von Variablen
Differentialgleichungen 1. Ordnung
-------------------------------------------------------------------------------------------------------------------Differentialgleichung 1. Ordnung y' = F(x,y)
-------------------------------------------------------------------------------------------------------------------Als einführendes Beispiel lösen wir die DGL y'(x) = k*y(x):
> dgl:=diff(y(x),x)=k*y(x);
> dsolve(dgl,y(x));
Wenn Sie die
Schreibweise vermeiden wollen können Sie mit dem Befehl declare
aus dem Paket
PDEtools y(x)=y setzen und x als Ableitungsvariable definieren.
> PDEtools[declare](y(x), prime=x);
> dgl:=diff(y(x),x)=k*y(x);
Die Integrationskonstante schreibt MAPLE als _C1. Sie kann durch einen Anfangswert festgelegt
werden. Die Anfangsbedingung wird dem Befehl dsolve als weitere Gleichung übergeben:
> dsolve({dgl,y(0)=5},y(x));
Häufig ist es sinnvoll die Steigungsfunktion F(x,y) vorab zu definieren (z.B. falls die gleiche
Differentialgleichung mit verschiedenen rechten Seiten gelöst werden soll):
> F := (x,y) -> x^2+y;
> dgl := diff(y(x),x)=F(x,y(x)); # WICHTIG: y(x) und nicht nur y
Das Richtungsfeld der DGL zeichnen wir mit dem MAPLE-Befehl dfieldplot aus dem Paket
DEtools . Dabei müssen Bereiche für x und y festgelegt werden.
> xdom := -5..5;
# x-Bereich wählen
> ydom := -5..5;
# y-Bereich wählen
> DEtools[dfieldplot](dgl,y(x),x=xdom,y=ydom);
Verbindet man alle Punkte des Richtungsfeldes mit jeweils gleicher Steigung, so erhält man die
Isoklinen der DGL. Sie sind also durch die Gleichung F'(x,y) = constant definiert.
> Ik := solve(F(x,y)=k,y);
# Isokline zur Steigung k
> kdom := -3..3;
# k-Bereich wählen
> plot({seq(Ik,k=kdom)},x=xdom,y=ydom);
Jetzt werden die allgemeine Lösung der DGL ermittelt und einige Lösungskurven gezeichnet.
> dsolve(dgl,y(x));
# Allgemeine Lösung
> subs(_C1=C,%);
# Umbenennen der Integrationskonstante
> fC := unapply(rhs(%),x); # Allgemeine Lösungsfunktion
> Cdom := -1..1;
# Bereich für Parameter C
>
plot([seq(fC(x),C=Cdom)],x=xdom,y=ydom,color=[black,green,blue]);
# Zugehörige Lösungskurven
Schließlich ermitteln wir die einer Anfangsbedingung
Lösung
der DGL.
> x0 := 0; y0 := 1/2;
> dsolve({dgl,y(x0)=y0},y(x));
genügende spezielle
# Anfangswerte wählen
# Spezielle Lösung
Man kann die spezielle Lösung auch mittels der folgenden Befehlsgruppe aus der allgemeinen
Lösung erhalten.
> C0 := solve(fC(x0)=y0,C);
Anfangsbedingung ermitteln
# Parameterwert aus
# fC ist die oben berechnete
allgemeine Lösung
> subs(C=C0,fC(x));
> f0 := unapply(%,x);
# C=C0 in fC(x) einsetzen
# Spezielle Lösungsfunktion
Die graphische Darstellung der speziellen Lösung erfolgt nun wie bekannt:
> plot(f0(x),x=xdom,y=ydom);
Die in MAPLE vordefinierte numerische Variante von dsolve berechnet die Lösung der DGL
nach
dem Runge-Kutta-Fehlberg-Verfahren der Ordnung 4/5 (abgekürzt: rkf45 ) und gibt sie als
Prozedur (Funktion) aus (y(x0)=y0 ist die Anfangsbedingung):
>
>
>
>
f0 := dsolve({dgl,y(x0)=y0},numeric);
f0(0); f0(1); f0(2);
# Einige Werte der numerischen Lösung
seq(f0(i*0.1),i=0..20); # Liste von Punkten der Lösungskurve
array([%]);
# schönere Darstellung
Mittels odeplot aus dem Paket plots kann diese Lösung geplottet werden.
> plots[odeplot](f0,0..2);
Differentialgleichungen 2. Ordnung
--------------------------------------------------------------------------------------------------------------------Differentialgleichung 2. Ordnung y'' = F(x,y,y')
--------------------------------------------------------------------------------------------------------------------Wir betrachten jetzt ausgewählte Typen der DGL y'' = F(x,y,v), wobei v = y' gesetzt ist. Und
zwar
ist diese DGL oft dann exakt lösbar, wenn in der rechten Seite (also in F(x,y,v)) entweder x oder
y
nicht vorkommt. Hierzu einige Beispiele:
> dgl := diff(y(x),x$2) = 2*exp(y(x)); # Direkte Definition der
DGL
> dsolve(dgl,y(x)); # Allgemeine Lösung
> F := unapply(v/(x*ln(x)),x,y,v); # Definiton der DGL mit Hilfe
der Funktion
# F(x,y,v) mit v=y'
> dgl := diff(y(x),x$2)=F(x,y(x),diff(y(x),x)); # DGL definieren
> dsolve(dgl,y(x));
# Allgemeine Lösung
Spezielle Lösungen erhält man durch zusätzliche Bedingungen, die wieder zusammen mit der
DGL
in geschwungene Klammern gesetzt werden.
> x0 := 0; y0 := 1; x1 := 1; y1 := 0;
# Randwerte wählen
> dsolve({dgl,y(x0)=y0,y(x1)=y1},y(x));
# Spezielle Lösung
> f0 := unapply(rhs(%),x);
# Lösungsfunktion definieren
# rhs() : rechte Seite
von der Lösung
> plot(f0(x),x=x0..x1);
# Graph plotten
Wenn Anfangs- oder Randbedingungen für Ableitungen angegeben werden sollen, muss die
Schreibweise
verwendet werden. Höhere Ableitungen notiert man in der Form
=
>
>
>
>
>
etc.
x0 := 2; y0 := 1; v0 := 1; dgl; # Anfangswerte wählen
dsolve({dgl,y(x0)=y0,D(y)(x0)=v0},y(x));
f0 := unapply(rhs(%),x);
# Lösungsfunktion definieren
x1 := 5;
# Obere Begrenzung des x-Bereiches
plot(f0(x),x=x0..x1);
# Graph plotten
---------------------------------------------------------------------------------------------------------------------Lineare DGL
'' +
'+
=
mit konstanten Koeffizienten
---------------------------------------------------------------------------------------------------------------------Besonders einfach zu lösen sind lineare DGL mit konstanten Koeffizienten, die wir abschließend
behandeln. Auch hier beschränken wir uns auf die Ordnung 2.
Wir beginnen mit der homogenen DGL.
> dgl := diff(y(x),x$2)+a[1]*diff(y(x),x)+a[0]*y(x)=0;
> dsolve(dgl,y(x));
Je nach dem Verhalten der Diskriminante
folgenden Fälle:
# allgemeine Lösung
:=
unterscheidet man die
d << 0 : Schwingungsfall
> a[1] := 1; a[0] := 10;
# Koeffizienten wählen
> dgl;
> dsolve(dgl,y(x));
# Allgemeine Lösung
> x0 := 0; y0 := 0; v0 := 1;
# Anfangswerte wählen
> dsolve({dgl,y(x0)=y0,D(y)(x0)=v0},y(x));
> f0 := unapply(rhs(%),x);
# Spezielle Lösung
# Lösungsfunktion definieren
> plot(f0(x),x=0..10,title=`gedämpfte Schwingung`);
d >> 0 : Kriechfall
> a[1] := 10; a[0] := 5;
> dgl;
# Koeffizienten wählen
>
>
>
>
>
dsolve(dgl,y(x));
# Allgemeine Lösung
x0 := 0; y0 := 0; v0 := 1;
# Anfangswerte wählen
dsolve({dgl,y(x0)=y0,D(y)(x0)=v0},y(x));
# Spezielle Lösung
f0 := unapply(rhs(%),x);
# Lösungsfunktion definieren
plot(f0(x),x=0..10,title=`Kriechfall`);
d ~ 0 : Aperiodischer Grenzfall
>
>
>
>
>
>
>
a[1] := 1; a[0] := 0.6;
# Koeffizienten wählen
dgl;
dsolve(dgl,y(x));
# Allgemeine Lösung
x0 := 0; y0 := 0; v0 := 1;
# Anfangswerte wählen
dsolve({dgl,y(x0)=y0,D(y)(x0)=v0},y(x));
# Spezielle Lösung
f0 := unapply(rhs(%),x);
# Lösungsfunktion definieren
plot(f0(x),x=0..10,title=`Aperiodischer Grenzfall`);
Bei der inhomogenen DGL tritt die Störfunktion
auf.
> restart;
> PDEtools[declare](y(x), prime=x);
> dgl := diff(y(x),x$2)+a[1]*diff(y(x),x)+a[0]*y(x)=b(x);
Die allgemeine Lösung ist von der Gestalt
partikuläre
Lösung ist und
, wobei
eine
die allgemeine Lösung der zugehörigen homogenen DGL bezeichnet.
Als Beispiel "stören" wir die oben in dem Fall d << 0 betrachtete Schwingung:
>
>
>
>
>
>
>
>
a[1] := 1; a[0] := 10;
# Koeffizienten wählen
b := x-> sin(x);
# Störfunktion definieren
dgl;
dsolve(dgl,y(x));
# Allgemeine Lösung
x0 := 0; y0 := 0; v0 := 1;
# Anfangswerte wählen
dsolve({dgl,y(x0)=y0,D(y)(x0)=v0},y(x));
# Spezielle Lösung
f0 := unapply(rhs(%),x);
# Lösungsfunktion definieren
plot(f0(x),x=0..20);
Zur Illustration der "Resonanzkatastrophe" betrachten wir noch das folgende Beispiel.
>
>
>
>
a[1] := 0; a[0] := omega^2;
b := x -> A*cos(omega*x);
dgl;
dsolve(dgl,y(x));
Wie man sieht, enthält die partikuläre Lösung den Schwingungsterm
, dessen
Amplitude linear mit
wächst.
Zwecks zeichnerischer Darstellung des Graphen müssen die Parameter festgelegt werden:
>
>
>
>
>
>
omega := 1; A := 1;
dgl;
x0 := 0; y0 := 0; v0 := 1;
dsolve({dgl,y(x0)=y0,D(y)(x0)=v0},y(x));
f0 := unapply(rhs(%),x);
plot(f0(x),x=0..20,title=`Resonanzkatastrophe`);
Aufgaben
--------------------------------------------------------------------------------------------------------------------Übungsaufgaben
---------------------------------------------------------------------------------------------------------------------
1. Gegeben sei die Differentialgleichung 1. Ordnung
'=
.
a) Plotten Sie das zugehörige Richtungsfeld im 1. Quadranten und die Isoklinen für c=-2,
c=0, c=0.5 in ein Diagramm.
Beschriften Sie die Isoklinen.
b) Plotten Sie das zugehörige Richtungsfeld im 1. Quadranten und die Lösung, die durch den
Punkt P(0.8;0.6) geht.
2. Lösen Sie die DGL 1. Ordnung
der Anfangs-
'
=
zunächst allgemein und dann mit
bedingung
. Wieviele Lösungen des Anfangswertproblems gibt es ?
Wählen Sie eine der Lösungen aus und kontrollieren Sie ihre Richtigkeit durch Einsetzen in
die DGL mittels subs und anschließendes Vereinfachen mittels simplify .
3. Lösen Sie die folgende DGL 2. Ordnung unter den Anfangsbedingungen x0 := 0; y0 := 0; x1
:= 3; y1 := 2;
4. Berechnen Sie die allgemeinen Lösungen der folgenden linearen DGL 2. Ordnung. Wählen
Sie
bei a) die Anfangsbedingungen y(1)=1 und y'(1)=1 und plotten Sie den Graphen
der zugehörigen speziellen Lösung.
a)
'' - 6
'+9
b)
'' +
=
c)
'' +
=
d)
'' +
=
=
5. Lösen Sie die lineare DGL 4.Ordnung
'''' +
'' =
zunächst
standardmäßig mit dem
Befehl dsolve und danach mit der zusätzlichen Option output=basis . Vergleichen Sie die
Ergebnisse und beschreiben Sie allgemein die Wirkung dieser Variante von dsolve.
Herunterladen