Die Kettenlinie
> restart;
Differentialgleichung der Kettenlinie (→ Herleitung):
Lösung dieser Differentialgleichung:
> dsolve(dgl, f(x));
Gleichung der Kettenlinie:
Dieselbe Gleichung in Exponentialschreibweise:
> 'y' = convert(rhs(%), exp);
Die Länge einer Kurve im x-y-Diagramm mit y = f(x) in den Grenzen von l und r:
> len:= Int(sqrt(1 + Diff(f(x),x)^2), x = l..r);
Die Länge einer Kettenlinie zwischen zwei Punkten (l|f(l)) und (r|f(r)):
Vereinfachen des Integranden:
> simplify((1+sinh(c*(x+a))^2)^(1/2));
Berechnung der Kettenlinienlänge L in Abhängigkeit von l, r, c und a:
Die Differenz der y-Werte zweier gegebener Punkte auf einer Kettenlinie:
Hilfsprozedur:
if n = 2 then n = 1; fi;
n;
end:
Berechnung der Kettenlinie bei vorgegebener Kettenlänge lng und zwei gegebenen Punkten (l|yl) und (r|yr):
xdf:= r - l;
ydf:= yr - yl;
if evalf(sqrt(xdf^2 + ydf^2)) < lng then
lsgn:= (solve(ydf = Delta(l, r, c, a), a));
n:= 1;
a:= lsgn[n];
c:= fsolve(lng = L(l, r, c, a), c);
if c < 0 then n:= change (n);
a:= lsgn[n];
c:= fsolve (lng = L(l, r, c, a), c);
fi;
b:= yl - cosh(c*(l+eval(a)))/c;
cosh(c*(x+eval(a)))/c + b;
else
0;
fi;
end:
Zeichnen einer Kettenlinie mit den Parametern l, yl, r, yr, lng:
plot(f(x), x = -4..12,
scaling = CONSTRAINED,
labels = ["", ""],
font = [COURIER, 12]);