dh-Materialien
Einführung in Maple    
Anwendungen
 

Die Kettenlinie

> restart;

Differentialgleichung der Kettenlinie ( Herleitung):

> dgl:= Diff(f(x),x,x) = c*sqrt(1+ Diff(f(x),x)^2):
  dgl;

Differentialgleichung der Kettenlinie

 Lösung dieser Differentialgleichung:

> dsolve(dgl, f(x));

Lösung der DGL

Gleichung der Kettenlinie:

> y:= 1/c*cosh(c*(x+a)) + b:
  'y' = y;

y = cosh(c*(x+a))/c + b

Dieselbe Gleichung in Exponentialschreibweise:

> 'y' = convert(rhs(%), exp);

Gleichung in Exponentialschreibweise

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);

Kurvenlänge

Die Länge einer Kettenlinie zwischen zwei Punkten (l|f(l)) und (r|f(r)):

> f:= x -> 1/c*cosh(c*(x+a))+b;
  len:= value(len);

Länge einer Kettenlinie

Vereinfachen des Integranden:

> simplify((1+sinh(c*(x+a))^2)^(1/2));

simplify

Berechnung der Kettenlinienlänge L in Abhängigkeit von l, r, c und a:

> L:= int(cosh(c*(x+a)), x = l..r);
  L:= unapply(L, l, r, c, a);

Kettenlinienlänge

L(l,r,c,a)

Die Differenz der y-Werte zweier gegebener Punkte auf einer Kettenlinie:

> Delta:= subs(x = r, y) - subs(x = l, y);
  Delta:= unapply(Delta, l, r, c, a);

Delta

Hilfsprozedur:

> change:= proc(n)
    if n = 1 then n = 2; fi;
    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):

> catenary:= proc (l, yl, r, yr, lng)
    local xdf, ydf, lsgn, n, a, c, b;
    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:

> interface(displayprecision = 3):
  f(x):= catenary(-4, 9, 12, 3, 40);
  plot(f(x), x = -4..12,
    scaling = CONSTRAINED,
    labels = ["", ""],
    font = [COURIER, 12]);

f(x)

Kettenlinie


 Home   Back   Top