Kædelinje.
Når en homogen kæde ophænges mellem to faste punkter, vil den danne en såkaldt kædelinje. Det er i det væsentlige en cosh (hyperbolsk cosinus), idet denne funktion blot er modificeret med en forskydning, (x0,y0), samt en skalatransformation, c. Du kan flytte de to ophængningspunkter samt ændre på kædens længde.
Figure figure = Position [0,0] Size[x,y*13/16] Origin[x/16,y*3/4] Unit x/8 Color "white";
Axes axes = Color "black";
Grid grid = Color "blue";
Units units = Color "black";
Point A = [1,2] Free Size 2.5 Color "red";
Point B = [3,2] Free Size 2.5 Color "red";
SlidePot len = From 0 To 6 Initial 3 Position [20,y-50] Size [300,0];
Text len_txt = "længde = len,2" Offset [350,y-45] Color "blue";
Visibility vis = length(A-B) < len;
Function solve1( Number a ) = // solves: a*x = sinh(x)
if a < 1 then 0 else iter(x,1,asinh(a*x)) endif;
Function solve2( Number a, Number b, Number c ) = // solves: a*x = b*sinh(c*x)
solve1(a/b/c)/c;
Variable x1 = if A:0 < B:0 then A:0 else B:0 endif;
Variable x2 = if A:0 < B:0 then B:0 else A:0 endif;
Variable y1 = if A:0 < B:0 then A:1 else B:1 endif;
Variable y2 = if A:0 < B:0 then B:1 else A:1 endif;
Variable tanhp = (y2-y1)/len;
Variable p = atanh( tanhp );
Variable c = solve2( len, 2*cosh(p), (x2-x1)/2 );
Variable x0 = (x2+x1)/2 - p/c;
Variable y0 = y1 - cosh(c*(x1-x0))/c;
Variable cinv = 1/c;
Variable x0inv = -x0;
ParametricCurve kaede = [t, 1/c*cosh(c*(t-x0))+y0] From x1 To x2 Size 1 Color "red";
Text formula = "y = 1/c · cosh[ c · ( x - x0 ) ] + y0 = cinv,2 · cosh[ c,2 · ( x x0inv,2,+ )] y0,2,+" Offset [20,y-15] Color "black";