# Kapitel 4_a: 
# Der schiefe Wurf mit Luftwiderstand (Turbulente Dämpfung)
# © 2015 Friedrich U. Mathiak,
# mathiak@mechanik-info.de
# 
> restart: with(plottools): with(plots): with(DEtools,odeadvisor): with(PDEtools,dchange):
# Beispiel 4-4:
# 
# 
# Die Bernoullische Differenzialgleichung kann allgemein in der Form:  y'(x)  + p(x) y(x) +q(x) yk(x) = 0  (k  ` 1) notiert werden. 
# Diese nichtlineare DGL wird durch die Variablensubstitution  y = u^(1/(1-k));auf eine lineare gewöhnliche DGL zurückgeführt und sodann mit den klassischen Verfahren gelöst. Diese Aufgabe erledigt Maple für uns.
> alias(alpha=a);
> B_ode:= diff(v(a),a)+p(a)*v(a)+q(a)*v(a)^k;
# Eine Einklassifizierung einer DGL erfolgt  durch den Befehl odeadvisor aus dem Paket DEtools. 
> odeadvisor(B_ode);
> dsolve(B_ode);
# Mit dem Befehl dchande erfolgt eine Variablentransformation, die die nichtlineare DGL auf eine lineare DGL 1. Ordnung zurückführt:
> VTR := {t = a, v(a) = u(a)^(1/(1-k))};
> B_odeT:= dchange(VTR, B_ode, [u(a), a]);
> B_odeT2:=solve(B_odeT, {diff(u(a), a)});
> Bernoulli_ode:=op(factor(combine(expand(B_odeT2), power)));
# Mit den Werten unseres Beispiels erhalten wir
> k:=3;
> VTR;
> p(a):=-tan(a);q(a):=-k3/(m*g*cos(a));
> Bernoulli_ode;
> AB:=u(alpha0)=1/v0^2;
> dsolve({Bernoulli_ode,AB});assign(%):
# Die Rücktransformation liefert
> v(a):= 1/sqrt(u(a));
> v:=unapply(%,a);
# Wir berechnen die Grenzgeschwindigkeit, die sich für ± = -À/2 und damit  t ’  ergibt:
> vgrenz:=simplify(limit(v(a),a=-Pi/2));
# Für den weiteren Rechengang wählen wir folgende Werte
> x0:=0.; y0:=0.; v0:=20.; alpha0:=Pi/4; m:=0.5; g:=9.81; k3:=1.*10^(-2); 
# Dazu gehört die Grenzgeschwindigkeit
> evalf(vgrenz);
> plot(v(a)/vgrenz,a=-Pi/2..Pi/4,gridlines=true,axes = boxed,title = "\nNormierte Geschwindigkeit\n",titlefont = ["ARIAL", 15], labels = ["alpha [rad]", "Normierte Geschwindigkeit  [m/s]"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8]);
# Berechnung der Wurfbahn  des Massenpunktes
> x:=x0-1/g*int(v(tau)^2,tau=alpha0..a):
> y:=y0-1/g*int(v(tau)^2*tan(tau),tau=alpha0..a):     #Das kann etwas dauern.
;
# Die Masse m landet, wenn  y(±*) = 0  gilt. Die Umgebung dieses Winkels ±* entnehmen wir der folgenden Grafik 
> plot([y,0],a=-11/32*Pi..-4/16*Pi,title="\nSteighöhe y\n",axes=boxed,gridlines=true,color=[black,blue]);
# Die Nullstelle liegt 
> alphast:=fsolve(y,a=-11/32*Pi..-4/16*Pi);
# Die Wurfweite beträgt
> xw:=x0+evalf(subs(alpha=alphast,x));
# und die Koordinaten des Scheitelpunktes sind
> xS:=evalf(subs(alpha=0.,x));
> yS:=evalf(subs(alpha=0.,y));
# Die Wurfzeit beträgt
> tw:=-1/g*int(v(a)/cos(a),a=alpha0..alphast);
# Wir vergleichen diese Lösung mit dem schiefen Wurf ohne Luftwiderstand und  geben die Wurfbahnen grafisch aus:
> p1:=plot([x, y, alpha = alpha0..alphast]):
> x2 := -(1/2)*g*x1^2/(v0^2*cos(alpha0)^2)+sin(alpha0)*x1/cos(alpha0);
> p2:=plot(x2,x1=0..v0^2/g,color=blue,linestyle=dash):
> display(p1,p2,gridlines=true,axes=boxed,title = "\Wurfbahn", titlefont = ["ARIAL", 15], labels = ["x1 [m]", "x2 [m]"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 9], axesfont = ["HELVETICA", "ROMAN", 8],scaling=constrained);
# Die Wurfzeit ohne Luftwiderstand beträgt:
> tw :=evalf((v0*sin(alpha0)+sqrt(sin(alpha0)^2*v0^2))/g);
> 
;
# 
