Schiefer Wurf ohne Luftwiderstand
> restart;
interface(displayprecision = 2):
Die Wurfbewegung kann in zwei voneinander unabhängige Teilbewegungen zerlegt werden;
die eine in horizontaler, die andere in vertikaler Richtung:
> DGLx:= diff(x(t),t,t) = 0:
DGLy:= diff(y(t),t,t) = - g:
DGLx;
DGLy;
DGLx;
DGLy;
Lösen dieser Differentialgleichungen unter den angegebenen Randbedingungen
(vx0, vy0 =
Komponenten der Anfangsgeschwindigkeit v0 in x - bzw. in y -Richtung):
> assume(v[x0] > 0, v[y0] > 0);
interface(showassumed = 0);
Randbedingungen:=
x(0) = 0,
y(0) = 0,
D(x)(0) = v[x0],
D(y)(0) = v[y0]:
lgn:= dsolve({DGLx, DGLy, Randbedingungen}, {x(t), y(t)});
Randbedingungen:=
x(0) = 0,
y(0) = 0,
D(x)(0) = v[x0],
D(y)(0) = v[y0]:
lgn:= dsolve({DGLx, DGLy, Randbedingungen}, {x(t), y(t)});
x und y in Abhängigkeit von der Zeit t:
> if op(0,lhs (lgn[1])) = x then
glx:= x = rhs(lgn[1]);
gly:= y = rhs(lgn[2]);
else
glx:= x = rhs(lgn[2]);
gly:= y = rhs(lgn[1]);
fi;
gly:= y = rhs(lgn[2]);
else
glx:= x = rhs(lgn[2]);
gly:= y = rhs(lgn[1]);
fi;
Auflösen der Gleichung glx nach t und Einsetzen in die Gleichung gly:
> t:= rhs(isolate(glx, t)):
y(x):= expand(rhs(gly));
Berechnung der Wurfhöhe h:
> h:= simplify(eval(y(x), x = solve(diff(y(x),x) = 0, x)));
Berechnung der Wurfweite xmax:
> lgn1:= simplify(subs(y = 0, solve(gly, x)[1]));
lgn2:= simplify(subs(y = 0, solve(gly, x)[2]));
if lgn1 = 0 then x[max]:= lgn2 else x[max]:= lgn1; fi;
if lgn1 = 0 then x[max]:= lgn2 else x[max]:= lgn1; fi;
Zahlenbeispiel mit Schaubild:
> g:= 10:
alpha:= convert(65*degrees, radians):
v[0]:= 5.5:
v[x0]:= evalf(v[0]*cos(alpha), 3);
v[y0]:= evalf(v[0]*sin(alpha), 3);
y(x):= -1/2*g*x^2/v[x0]^2+v[y0]*x/v[x0]:
x[max]:= evalf(1/5*v[y0]*v[x0], 3);
plot (y(x), x = 0.. x[max],
scaling = CONSTRAINED,
size = [350, 350],
font = [COURIER, 10]);
v[0]:= 5.5:
v[x0]:= evalf(v[0]*cos(alpha), 3);
v[y0]:= evalf(v[0]*sin(alpha), 3);
y(x):= -1/2*g*x^2/v[x0]^2+v[y0]*x/v[x0]:
x[max]:= evalf(1/5*v[y0]*v[x0], 3);
plot (y(x), x = 0.. x[max],
scaling = CONSTRAINED,
size = [350, 350],
font = [COURIER, 10]);