oszi_10.mws

Moderne Physik mit Maple

PDF-Buch Moderne Physik mit Maple

Update auf Maple 10

Kapitel 3.1.1

Worksheet oszi_10.mws

>   

International Thomson Publishing, Bonn       1995                       filename: oszi.ms

Autor: Komma                                                                             Datum: 7.8.94

Thema: Berechnug und Darstellung der Überlagerung von Schwingungen

Die Schwingungsgleichung kann als wichtiger Sonderfall der Newtonschen Bewegungsgleichung angesehen werden, oder -- mathematisch gesehen -- als gewöhnliche DG 2.Ordnung. Die Bestimmung der Lösung wird deshalb in den entsprechenden Abschnitten behandelt. An dieser Stelle geht es darum, wie man die als gegeben vorausgesetzten Lösungen darstellt und mit Maple handhabt. Wir wollen mit der Überlagerung zweier Schwingungen beginnen.

>    restart; with(plots):

>    x1:=a1*sin(omega*t-phi);

x1 := a1*sin(omega*t-phi)

>    x2:=a2*sin(Omega*t);

x2 := a2*sin(Omega*t)

>    x:=x1+x2;

x := a1*sin(omega*t-phi)+a2*sin(Omega*t)

>    a1:=2:    a2:=.4:        phi:=Pi/2:       Omega:=2:    omega:=Omega/5:

>    p1:=plot(x1,t,color=red):

>    p2:=plot(x2,t,color=green):

>    p3:=plot(x,t):

>    display({p1,p2,p3});

[Maple Plot]

>   

Animation zu verschiedenen Phasen

>    phi:='phi':

>    animate(x,t=-10..10,phi=0..2*Pi-0.1,numpoints=200);

[Maple Plot]

>   

Der Sonderfall der Schwebung mit a2=a1 und fast gleichen Frequenzen.

>    a1:='a1':  a2:=a1: omega:='omega': Omega:='Omega': phi:='phi':  x:=x1+x2; # manchmal -a1*sin...

x := a1*sin(omega*t-phi)+a1*sin(Omega*t)

Mit Hilfe des <trigsubs-Befehles können wir die Umformung der Summe in ein Produkt erreichen. Dazu muß allerdings erst durch a1 dividiert werden, weil sonst eine Fehlermeldung kommt (und x darf nicht als Diffrenz dargestellt sein):

>   

>    x:=a1*op(trigsubs(simplify(x/a1)));

x := 2*a1*sin(1/2*omega*t-1/2*phi+1/2*Omega*t)*cos(1/2*omega*t-1/2*phi-1/2*Omega*t)

>   

Die Cosinus-Funktion kann als zeitabhängige Amplitude aufgefaßt werden, die Sinusfunktion beschreibt dann die Phase:

>    ampl:=x/op(3,x); # Numerierung nicht stabil!

ampl := 2*a1*cos(1/2*omega*t-1/2*phi-1/2*Omega*t)

>    #ampl:=2*a1*cos(1/2*omega*t-1/2*phi-1/2*Omega*t);

>    phase:=op(3,x);

phase := sin(1/2*omega*t-1/2*phi+1/2*Omega*t)

>    #phase:=sin(1/2*omega*t-1/2*phi+1/2*Omega*t);

Plot der beiden Faktoren und des Produktes:

>    phi:=0: Omega:=5: omega:=.9*Omega:   a1:=1:

>    plot({ampl,phase,x},t);

[Maple Plot]

>   

Animation der Schwebungskurve:

>    phi:='phi':

>    animate(x,t=-10..10,phi=0..2*Pi-.1,numpoints=200,color=green);

[Maple Plot]

>   

Von einem Oszilloskop kann z.B. eine Folge von Momentaufnahmen gemacht werden:

>    Omega:=5:     omega:=0.9*Omega:

>    t:='t':  ts:='ts':  phi:=0:

>    aniampl:=subs(t=ts,ampl);

aniampl := 2*cos(.250000000*ts)

>    plot({seq(aniampl*phase,ts=1..8)},t=-2..2);

[Maple Plot]

>   

Animation der Momentaufnahmen (beim Oszilloskop müßte man sich mit der Triggerung Mühe geben):

>    ps:=seq(plot(aniampl*phase,t=-2..2),ts=seq(i*2*Pi/(Omega-omega)/10,i=0..19)):

>    display([ps],insequence=true);  # [ ] für richtige Reihenfolge

[Maple Plot]

>   

Berücksichtigung der Dämpfung:

Die anderen Größen wieder unassignen (mit einer kleinen procedure, weil das öfter vokommt):

>    unas:=proc() unassign('omega','Omega','phi','k','a1'): end: unas();

>    d:=exp(-k*t);

d := exp(-k*t)

>    xd:=x1*d;

xd := a1*sin(omega*t-phi)*exp(-k*t)

>    a1:=2:

>    omega:=5:                #  5

>    k:=1/4:                      # 1/4

>    phi:=0:

>    xd;

2*sin(5*t)*exp(-1/4*t)

Plot der gedämpften Schwingung mit Einhüllender:

>    plot({xd,a1*d,-a1*d},t=0..20);

[Maple Plot]

>   

Phasenportraits (v-x-Diagramme) zunächst ohne Dämpfung:

>    v1:=diff(x1,t);

v1 := 10*cos(5*t)

>    plot([x1,v1,t=0..1],scaling=constrained);

[Maple Plot]

>   

>    phi:=Pi/3: plot([x1,v1,t=0..1]);

[Maple Plot]

>   

räumliche Darstellung der Phasenkurve:

>    spacecurve([t,v1,x1],t=0..5,axes=boxed,numpoints=100);

[Maple Plot]

>   

Verbindung der Kurvenpunkte mit der t-Achse

>    cylinderplot([z,t/2,t],t=0..20,z=0..5);  #  Verbindung der spacecurve (von oben) mit der Zeitachse (senkrecht)

[Maple Plot]

>   


Phasenportraits mit Dämpfung:

>    unas();

>    vd:=diff(xd,t);

vd := a1*cos(omega*t-phi)*omega*exp(-k*t)-a1*sin(omega*t-phi)*k*exp(-k*t)

>    a1:=1: omega:=5:   k:=1/4:   phi:=0:

>    plot([xd,vd,t=0..5]);

[Maple Plot]

>   

>    #with(plots):         # gehört endlich in den .ini-file od. zusammen mit restart!

>    spacecurve([t,vd,xd],t=0..5,axes=boxed,numpoints=100);

[Maple Plot]

>   

>    k:=.1:

>    cylinderplot([z*exp(-k*t),t/2,t],t=0..20,z=0..5);

[Maple Plot]

>   

Lissajousfiguren (mit Dämpfung, falls erwünscht):

>    #restart: with(plots):

>    x:=ax*exp(-kx*t)*sin(ox*t+px);

x := ax*exp(-kx*t)*sin(ox*t+px)

>    y:=ay*exp(-ky*t)*cos(oy*t+py);

y := ay*exp(-ky*t)*cos(oy*t+py)

>    ax:=1:                   kx:=0.2:               ox:=1:           px:=0:

>    ay:=1:                    ky:=0:                 oy:=4:            py:=0:

>    plot([x,y,t=0..2*Pi/ox]);

[Maple Plot]

>   

In Bewegung:

>    px:='px':

>    animate([x,y,t=0..2*Pi/ox],px=0..Pi,numpoints=100);

[Maple Plot]

>   

"räumliche Lissajous-Figuren":

>    setoptions3d(axes=boxed);

>    px:=0:

>    spacecurve([cos(ox*t),sin(ox*t),y],t=0..2*Pi,axes=boxed,numpoints=100);

[Maple Plot]

>   

In Bewegung

>    i:='i': py:=0: px:=i*Pi/20: ox:=1:

>    sl:=seq(spacecurve([cos(ox*t+px),sin(ox*t+px),y],t=0..2*Pi,axes=boxed,numpoints=100),i=1..20):

>    display3d([sl],insequence=true);

[Maple Plot]

>   

Epizyklen in komplexer Schreibweise:

>    restart;with(plots):

>    o1:=r1*exp(I*Omega*t);

o1 := r1*exp(Omega*t*I)

>    o2:=r2*exp(I*omega*t);

o2 := r2*exp(omega*t*I)

>    o:=o1+o2;

o := r1*exp(Omega*t*I)+r2*exp(omega*t*I)

>    theta:=argument(o);

theta := argument(r1*exp(Omega*t*I)+r2*exp(omega*t*I))

>    r:=abs(o);

r := abs(r1*exp(Omega*t*I)+r2*exp(omega*t*I))

>    r1:=2:                               Omega:=-1: # auch negative Kreisfrequenzen sind erlaubt

>    r2:=1:                               omega:=7:

Plot in Polarkoordinaten (mit Zeitmessung):

>    setoptions(scaling=constrained);

>    start:=time();

start := 1.575

>    polarplot([evalc(r),evalc(theta),t=0..2*Pi]);

[Maple Plot]

>    dauer:=time()-start;

dauer := .485

>   

Parameterplot:

>    y:=evalc(Im(o)); x:=evalc(Re(o));

y := -2*sin(t)+sin(7*t)

x := 2*cos(t)+cos(7*t)

>    start:=time();

start := 2.060

>    plot([x,y,t=0..2*Pi]);

[Maple Plot]

>    dauer:=time()-start;

dauer := .15e-1

>   

>   

>   

komma@oe.uni-tuebingen.de