kino1_10.mws

Moderne Physik mit Maple

PDF-Buch Moderne Physik mit Maple

Update auf Maple 10

Kapitel 2.1.1 bis 2.1.4

Worksheet kino1_10.mws

>   

c International Thomson Publishing Bonn                   filename: kino1.ms

Autor: Komma                                                          Datum: 14.6.94                          

Thema: Kinematik

Kinematik

In der klassischen Mechanik benötigt man als Handwerkszeug zur Untersuchung und Darstellung  von Bewegungsabläufen die Differentialrechnung und x-t-, v-t- und a-t-Diagramme, sowie Phasendiagramme. Diese Themen eignen sich auch gut für einen Einstieg in Maple, so daß wir in diesem Abschnitt die einfache Physik als Führer durch die wichtigsten Anwendungsgebiete von Maple verwenden können. Dabei beschränken wir uns zunächst auf eindimensionale Bewegungen, die vektorielle Behandlung nehmen wir im nächsten Abschnitt in Angriff.

Gleichförmige Bewegung

Das Weg-Zeit-Gesetz ist gegeben durch

>    restart:

>    x:=t->v*t+x0;

x := t -> v*t+x0

Es ist günstig, dieses Gesetz gleich als Funktion zu schreiben, weil wir dann größere Freiheit im Umgang damit haben. Die Parameter v und x0 könnte man natürlich auch als weitere unabhängige Variablen der Funktion wählen, aber dann wird der Funktionsaufruf wieder etwas umständlicher ... aber das ist Geschmacksache.

Wir können uns nun schon Werte ausgeben lassen:

>    x(6);

6*v+x0

Werte für v und x0 einsetzen:

>    v:=7: x0:= -10: x(6);

32

>    v:=-7/53: x0:=123/765: x(234); evalf(%,100);

-415517/13515

-30.74487606363300036995930447650758416574176840547539770625231224565297817240103588605253422123566408

>   

Am zweiten Beispiel sehen Sie, weshalb man von Computer-ALGEBRA-Systemen spricht.

Sie werden in den Worksheets dieses Buches oft "loopen" dürfen, also eine bestimmte Folge von Befehlen in einer Schleife abarbeiten. Das ist natürlich nur sinnvoll, wenn sich dabei etwas ändert oder ändern läßt. Zu diesem Zweck stellen sie den Cursor, der nach der Ausführung der Befehle in einer Input-Region in die nächste Input-Region springt, wieder zurück und tragen z.B. neue Zahlen ein. Das ist übrigens die typische Arbeitsweise in einem Worksheet: man arbeitet damit wie mit Papier und Bleistift und Radiergummi. Die Programmierarbeit hat einem schon der Hersteller des CAS abgenommen, so weit sogar, daß man durch einfaches Hinzufügen von weiteren Befehlen sein "Programm" höchst flexibel gestalten kann.

Aber man kann auch "echte Mathematik" mit Maple machen, z.B. die Umkehrfunktion bilden:

>    t:=xh->solve(x(t)=xh,t);

t := xh -> solve(x(t) = xh,t)

Test:

>    v:='Geschwindigkeit': x0:='Startpunkt':

>    Zeit=t(Ort);

Zeit = -(Startpunkt-Ort)/Geschwindigkeit

Im letzten Befehl wird keine Zuweisung vorgenommen, sondern nur eine Gleichung formuliert

Zahlen:

>    x0:=3: v:=4: t(5);

1/2

Probe:

>    x(1/2);

5

Oder:

>    x(t(x));

x

Bei gegebenem Startpunkt und gegebener Geschwindigkeit können wir nun also die Fragen "Wo ist der Körper zur Zeit t ?" bzw. "Wann ist der Körper am Ort x ?" mühelos beantworten. Ebenso mühelos ist eine Veranschaulichung der Funktionen:


>    plot(x(Zeit),Zeit=-2..2,-5..10);

[Maple Plot]

>    plot(t(Ort),Ort=-5..10);

[Maple Plot]

>   

Daß es sich bei der graphischen Darstellung um Funktion und Umkehrfunktion handelt, sieht man erst, wenn man mit dem Button "1:1" gleiche Maßstäbe auf  beiden Achsen wählt. Ein Ablesen der Koordinaten ist aber in jedem Fall möglich. Dazu stellen Sie den Mauszeiger auf den gewünschten Punkt der Geraden und klicken die linke Maustaste. Dann können Sie im "status-bar" die entsprechenden Werte ablesen ("style-status-bar" muß allerdings aktiviert sein). Bei dieser Gelegenheit können Sie auch gleich ausprobieren, was sich in dem Plot-Fenster alles einstellen läßt: Style -- Axes -- Projection ... oder die entsprechenden Buttons. Aber das haben Sie wohl schon getan?

Ebenso wie die Fragen nach Ort und Zeit lassen sich die Fragen nach der erforderlichen Geschwindigkeit oder dem Starpunkt beantworten. Dazu löschen wir zunächst die Zuweisungen für x0 und v:

>    x0:='x0': v:='v': x(t); t(x);

v*t+x0

(-x0+x)/v

Dann lassen wir eine der Gleichungen nach v auflösen (es kommt bei einem CAS immer nur darauf an, wie man etwas machen LÄSST und weniger, wie man etwas macht, denn das weiß ja das CAS ...):

>    v:=solve(x(t1)=x1,v); # solve(t(x1)=t1,v);

v := -(x0-x1)/t1

Welche Geschwindigkeit ist also erforderlich, wenn man zur Zeit 0 an der Stelle 5 startet und zur Zeit 7.45 an der Stelle 7*3^Pi sein will?

>    x0:=5: t1:=7.45: x1:=7*3^Pi: v; evalf(%);

-.6711409395+.9395973153*3^Pi

28.96778053

>   

(Sie dürfen wieder loopen, mit Brüchen, Dezimalzahlen, sin, exp, ...aber auch einfach mit Namen)

Weil dieses CAS alles schluckt, liegt es nahe, auch das zu automatisieren. Schließlich möchte man ja nicht alles von Hand eingeben. Wie reagiert also die Funktion x(t) auf eine Änderung der Parameter v oder x0? Die einfachste Methode, das zu untersuchen, ist eine dreidimensionale Darstellung:

>    x0:=5: v:='v':

>    plot3d(x(t),t=-1..5,v=-1..3,axes=framed);

[Maple Plot]

>   

Jetzt haben Sie wieder die Möglichkeit zum Spielen: Mit der gehaltenen linken Maustaste kann man die Box zu einem anderen Winkel ziehen. Und im Menu gibt es wieder eine ganze Reihe von Darstellungsmöglichkeiten. Wir sollten aber über der 3d-Darstellung nicht die zweidimensionalen Kurvenscharen vergessen.

Man kann mit Maple auch eine Menge (im mathematischen und wörtlichen Sinn) von Funktionen zeichnen lassen. Wenn sich dabei ein Parameter mit einer bestimmten Schrittweite ändert, kann dies am einfachsten mit dem Befehl <seq formuliert werden:

>    plot({seq(x(t),v=-1..3)},t=-1..5);

[Maple Plot]

>   

Oder mit einer kleineren Schrittweite:

>    plot({seq(x(t),v=seq(0.2*i,i=-5..15))},t=-1..5);

[Maple Plot]

>   

Stückweise gleichförmige Bewegung:

>    x0:='x0':

>    x:=t->if t<=2 then x0+v1*t else v2*(t-2)+v1*2+x0 fi;

x := t -> if t <= 2 then x0+v1*t else v2*(t-2)+2*v1+x0 end if

>   

Wie gesagt, mit Maple programmiert man nicht, mit Maple LÄSST man programmieren. Daß Maple mit der Eingabe einverstanden ist, sieht man an dem Output, in dem eine Prozedur erscheint.

>    x0:=5: v1:=2: v2:=-1/2:

>    plot('x(t)',t=0..5,0..10);

[Maple Plot]

>   

Zum Plotbefehl ist zu bemerken, daß in diesem Fall die Funktion in einfachen Anführungszeichen stehen muß, damit im <if die Reihenfolge der Auswertung stimmt. (Sehen Sie sich die Fehlermeldung an, die ohne die Anführungszeichen entsteht). Es handelt sich hierbei um eine Maple-Eigenart, die von den Designern bewußt in Kauf genommen wurde.

Doch nun zum zweiten Term. Soll die Bewegung im Punkt t=2, x(2) mit der Geschwindigkeit v2 fortgesetzt werden, so können wir die Punkt-Steigungsform der Geradengleichung verwenden:

>   

>    x0:='x0': v1:='v1': v2:='v2': solve((x-x(2))/(t-2)=v2,x); simplify(%);

x0+2*v1+v2*t-2*v2

x0+2*v1+v2*t-2*v2

>    collect(%,v2);

v2*(t-2)+x0+2*v1

>   

Mittlere Geschwindigkeit:

>    vq:=(v1*2+v2*3)/(2+3);

vq := 2/5*v1+3/5*v2

>    x0:=5: v1:=2: v2:=-1/2: vq; plot({'x(t)',x0+vq*t},t=0..5);

1/2

[Maple Plot]

>   

Für Mittelwerte gibt es auch vorgefertigte Befehle. Sie befinden sich im package <stats

>    with(stats);

[anova, describe, fit, importdata, random, statevalf, statplots, transform]

[describe, fit, importdata, random, statevalf, statplots, transform]

Hier werden zunächst die Unterpakete aufgelistet. Für das gewichtete Mittel benötigen wir das Paket <describe:

>    with(describe);

[coefficientofvariation, count, countmissing, covariance, decile, geometricmean, harmonicmean, kurtosis, linearcorrelation, mean, meandeviation, median, mode, moment, percentile, quadraticmean, quantil...
[coefficientofvariation, count, countmissing, covariance, decile, geometricmean, harmonicmean, kurtosis, linearcorrelation, mean, meandeviation, median, mode, moment, percentile, quadraticmean, quantil...
[coefficientofvariation, count, countmissing, covariance, decile, geometricmean, harmonicmean, kurtosis, linearcorrelation, mean, meandeviation, median, mode, moment, percentile, quadraticmean, quantil...

>   

Und in diesem Paket die Funktion <mean([Liste]):

>    mean([Weight(v1,2),Weight(v2,3)]);

1/2

Will man nicht das ganze Paket ansprechen, so schreibt man: <stats[describe,mean]([...]);

Zur graphischen Darstellung kann man das Paket <statplots verwenden:

>    with(statplots);

[boxplot, histogram, scatterplot, xscale, xshift, xyexchange, xzexchange, yscale, yshift, yzexchange, zscale, zshift]

>   

Mit dem Befehl <histogram kann man zunächst das Stabdiagramm der Geschwindigkeiten anzeigen lassen:

vtitle:=Histogramm:vxlab:=Geschwindigkeit:vylab:=Gew:pspl(`p6kino1.ps`):

>   

>    histogram([Weight(v1,2),Weight(v2,3)],numbars=2,area=count);

[Maple Plot]

>   

Aber man kann auch die Zeitbereiche mit den Geschwindigkeiten gewichten und bekommt so ein v-t-Diagramm der stückweise gleichförmigen Bewegung bzw. der Bewegung mit der mittleren Geschwindigkeit vq.

>    histogram([Weight(0..2,v1),Weight(2..5,v2),Weight(0..5,vq)]);

[Maple Plot]

Im Plotfenster <style=line wählen. Der Befehl <histogram kennt keine optionen.

"Kunstgriff"

>    with(plots):

>    display(histogram([Weight(0..2,v1),Weight(2..5,v2),Weight(0..5,vq)]),style=line);

[Maple Plot]

Aufgabe: Obige Bewegung für n Abschnitte, verallgemeinern.

>   

Zwei gleichförmig bewegte Körper: (diesmal mit Ausdrücken und nicht mit Funktionen formuliert -- zum Vergleich)

>    restart:

>    x1:=x10+v1*t: x2:=x20+v2*t:

Treffzeit:

>    tt:=solve(x1=x2,t);

tt := -(x10-x20)/(v1-v2)

>   

Berechnung des Treffpunktes mit Probe:

>    x1t:=subs(t=tt,x1); x2t:=subs(t=tt,x2); x1t-x2t;

x1t := x10-v1*(x10-x20)/(v1-v2)

x2t := x20-v2*(x10-x20)/(v1-v2)

x10-v1*(x10-x20)/(v1-v2)-x20+v2*(x10-x20)/(v1-v2)

>   

Vereinfachung der Differenz:

>    simplify(%);

0

>   

Auch <evalb erkennt die Gleichheit erst nach <simplify

>    evalb(simplify(x1t)=simplify(x2t));

true

Aufgabe: Plot der beiden Weltlinien

Inverse Fragestellung: Mit welcher Geschwindigkeit muß man starten, wenn man zur Zeit t treffen will?

>    solve(x1=x2,v2);

(x10+v1*t-x20)/t

>   

Oder: Wo muß Körper 1 starten, um zur Zeit t Körper 2 zu treffen.

>    solve(x1=x2,x10);

-v1*t+x20+v2*t

>   

>   

>   

Und alle weiteren Variationen zur Übung.


komma@oe.uni-tuebingen