# Kapitel_01_b:
# Die Kinematik der Punktbewegung
#  2015 Friedrich U. Mathiak
# mathiak@mechanik-info.de
# 
> restart:   with(plots): with(VectorCalculus): with(Student[VectorCalculus]):
# Beispiel 1-2:
# Ein Massenpunkt P mit dem Ortsvektor  r  bewege sich auf einer Raumkurve. Gesucht werden Geschwindigkeit und Beschleunigung in natrlichen Koordinaten. Weiterhin sind der Krmmungsradius R, die Krmmung kappa = 1/R und die Torsion tau bereitzustellen. Auerdem sollen das begleitende Dreibein und der Krmmungskreis in animierter Form lngs der Bogenlnge s dargestellt werden.
> Proc_Calc_01:=proc(x,y,z)
> #--------------------------------
> #Eingabe:  
> #     x,y,z: Komponenten des Ortsvektors r
> #Ausgabe:
> #         s: Bogenlnge beginnend bei t = 0
> #         T: Tangenteneinheitsvektor
> #         N: Normaleneinheitsvektor
> #         B: Bi-Normaleneinheitsvektor
> #         R: Radius des Krmmungskreises
> #     kappa: Krmmung
> #       tau: Torsion oder Windung
> #         v: Bahngeschwindigkeit
> #        at: Tangentialbeschleunigung
> #        an: Normal- oder Zentripetalbeschleunigung
> #-----------------------------------
> local  cf,r,rp,rpp,rppp,rpb,rpkrpp,vn;
> global s,T,N,B,v,kappa,R,tau,at,an;
> description "Geschwindigkeit und Beschleunigung in natrlichen Koordinaten";
> cf    := conjugate = false;
> r     := <x,y,z>;
> rp    := simplify(diff(r  ,t));
> rpp   := simplify(diff(rp ,t));
> rppp  := simplify(diff(rpp,t));
> rpb   := simplify(LinearAlgebra[VectorNorm](rp,2,cf));
> rpkrpp:= simplify(rp &x rpp);
> vn    := LinearAlgebra[VectorNorm](rpkrpp,2,cf);
> kappa := simplify(vn/rpb^3) assuming t > 0;                          
> R     := simplify(1/kappa);                                        
> tau   := simplify(LinearAlgebra[DotProduct](rpkrpp,rppp,cf)/vn^2);
> T     := simplify(LinearAlgebra[Normalize](rp,2,cf));  
> N     := simplify(LinearAlgebra[Normalize](diff(T,t),2,cf));
> B     := simplify(T &x N);    
> s     := int(rpb,t = 0..t) assuming t > 0;     
> v     := simplify(diff(s ,t));
> at    := simplify(diff(sp,t));
> an    := simplify(kappa*v^2);
> # Ausgabe der Ergebnisse
> print(`Bogenlnge s(t) = `,simplify(s));
> print(`Tangenteneinheitsvektor     T = `,T);
> print(`Normaleneinheitsvektor      N = `,N);
> print(`Bi-Normaleneinheitsvektor  Bi = `,B);
> print(`Radius des Krmmungskreises R = `,R);
> print(`Krmmung  kappa       = `,kappa);
> print(`Torsion oder Windung  = `,tau);
> print(`Bahngeschwindigkeit v = `,v);
> print(`Tangentialbeschleunigung  at = `,at);
> print(`Normal- oder Zentripetalbeschleunigung  an = `,an);
> end proc:
# Wir whlen die Werte des Beispiels:
> x1:=a*cos(omega*t): x2:=a*sin(omega*t): x3:=b*omega*t:
# Mit diesen Werten wird die Prozedur aufgerufen
> Proc_Calc_01(x1,x2,x3);
# Wir berprfen die Einheitsvektoren des begleitenden Dreibeins mit den Maple-Prozeduren aus der Bibliothek  Student[VectorCalculus] 
> r:= <x1,x2,x3>;
> (T,N,Bi):= VectorCalculus[TNBFrame](r, t ) assuming a::positive, b::positive, omega::positive;
> R:=VectorCalculus[RadiusOfCurvature](r,t) assuming a::positive,b::positive,omega::positive;
> kappa:=simplify(Student[VectorCalculus][Curvature](r, t )) assuming a::positive,b::positive,omega::positive;
> tau:=Student[VectorCalculus][Torsion](r,t) assuming a::positive,b::positive,omega::positive;
# Zur  Animation der Zustandsgren bentigen wir die Werte fr a, b und . Mit den Werten des Beispiels sind
> a:=1:  b:=1/2: omega:=1: r;
> pl1:=Student[VectorCalculus][TNBFrame](<x1,x2,x3>,t,range=0..2*Pi, labels=[x, y, z],output=animation, scaling=constrained, axes=boxed,normaloptions=[orientation=[240, 130]],frames=30):
> pl2:=Student[VectorCalculus][RadiusOfCurvature](<x1,x2,x3>,output=animation,circles=30,scaling=constrained,axes=boxed,labels=[x,y,z],range = 0..2*Pi):
> pl3:=Student[VectorCalculus][TNBFrame](<x1,x2,x3>,t,output=plot,labels=[x, y, z],scaling=constrained,axes=boxed, normaloptions=[orientation=[240, 130]]):
> display(Matrix(1,3,[pl1,pl2,pl3]));
> restart:
# Die geradlinige Bewegung
# 1. a = 0
# Aus a = 0 folgt  durch Integration v(t) = const. Eine geradlinige Bewegung mit konstanter Geschwindigkeit wird gleichfrmige Bewegung genannt. Zur Ermittlung des Weges gehen wir aus von:
> ode:=diff(x(t),t)=v0;
> AB:=x(t0)=x0;
> loe:=dsolve({ode,AB});
# Der gesuchte Weg ist:
> x:=unapply(loe,t);
# 2. a = a0
> restart:
# Eine geradlinige Bewegung mit konstanter Beschleunigung wird gleichmig beschleunigte Bewegung genannt. Wir beginnen die Zeitzhlung bei t = t0  und gehen von folgenden Anfangswerten aus: x(t = 0) = x0, v(t = 0) = v0. Eine Trennung der Vernderlichen und anschlieende Integration ergibt
> ode2:=diff(x(t),t,t)=a0;
> AB:=x(0)=x0,D(x)(0)=v0;
> loe:=dsolve({ode2,AB}): assign(%);
> x:=unapply(x(t),t);
> v:=unapply(diff(x(t),t),t);
# Beispiel 1-3:
# Der freie Fall eines schweren Krpers K stellt bei Vernachlssigung des Luftwiderstandes eine gleichmig beschleunigte Bewegung mit a = a0 dar. Die konstante Beschleunigung ist hier die Erdbeschleunigung g, wobei zu beachten ist, dass g in die negative x-Richtung zeigt
> a0:=-g; v0:=0; x0:=h;
> x(t); v(t);
> x(T); loe:=solve(x(T),T); loe[1];
> v(loe[1]);
# 3. a = a(t)
# Ist die Beschleunigung eine Funktion der Zeit, dann lassen sich Geschwindigkeit und Beschleunigung durch bestimmte Integration ermitteln. 
> restart:
> ode2:=diff(x(t),t,t)=a(t);
> dsolve(ode2);
# 4. a = a(v)
# Ist die Beschleunigung eine Funktion der Geschwindigkeit, dann erfolgt die Lsung durch Trennung der Vernderlichen.
> restart:
> ode:=diff(t(v),v)=1/a(v);
> AB:=t(v0)=t0;
> loe:=dsolve({ode,AB},t(v)); assign(%);
# Beispiel 1-4:
# Die Bewegung eines Krpers in einer reibungsbehafteten Flssigkeit erfolgt nach dem Gesetz. Die Proportionalittskonstante kappa hngt von der Masse, der Form des Krpers und der Viskositt  der Flssigkeit ab. Wir beginnen die Zeitzhlung bei t0 = 0. Als Anfangsbedingungen sollen die Auslenkung x(0) = x0 und die Geschwindigkeit v(0) = v0 vorgegeben sein.
> restart:
> a(v):=-kappa*v; t0:=0;
> ode:=diff(t(v),v)=1/a(v);
> AB:=t(v0)=t0;
> loet:=dsolve({ode,AB},t(v));
> v:=unapply(solve(t-rhs(loet),v),t);
> ode:=diff(x(t),t)-v(t);
> loe:=dsolve({ode,x(0)=x0},x(t)): assign(%);
> x:=unapply(x(t),t);
# Geschwindigkeits-Zeit-Diagramm
> kappa:=1.5; v0:=1;
> plot(v,0..5,title = "\nGeschwindigkeits-Zeit-Diagramm\n", titlefont = ["ARIAL", 15], labels = ["Zeit t", "Geschwindigkeit v"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed,gridlines);
# Weg-Zeit-Diagramm
> x0:=0.1;
> plot(x,0..3,y=0..x0+v0/kappa,title = "\nWeg-Zeit-Diagramm\n", titlefont = ["ARIAL", 15], labels = ["Zeit t", "Weg x"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8], axes=boxed,gridlines);
> 
;
