Rachunek wariacyjny - równanie krzywej łańcuchowej

Transkrypt

Rachunek wariacyjny - równanie krzywej łańcuchowej
Rachunek wariacyjny - równanie krzywej łańcuchowej
jądro funkcjonału opisującego minimum energii potencjalnej łańcucha,
przy uwzględnieniu że długość łańcucha jest stała
λ = mnożnik Lagrange’a
F = (y[x]+λ)*Sqrt[1 +y '[x]^ 2];
równanie Beltrami, c = const
eq = y '[x]*D[F, y '[x]]-F -c
-c +
(λ+y[x]) y′ [x]2
-(λ+y[x])
1 +y′ [x]2
1 +y′ [x]2
wystarczy przyrównać licznik tego równania do zera
eq1 = eq // Together // Numerator
-λ-y[x]-c
1 +y′ [x]2
rozwiązanie analityczne
C[1] = stała całkowania
drugie rozwiązanie różni się od pierwszego jedynie zmianą znaku stałej c
sol = DSolve[{eq1 ⩵ 0}, y[x], x] // Expand
y[x] →
1
2
x
c2 ⅇ c -C[1] +
1
2
x
ⅇ- c +C[1] -λ, y[x] →
1
2
x
c2 ⅇ- c -C[1] +
1
2
x
ⅇ c +C[1] -λ
rozwiązanie redukuje się do cosinusa hiperbolicznego
jeśli zdefiniować nowe zmienne:
z=
y+λ
c
, u=
x+ln c+C[1]
c
jest to przesunięcie początku układu współrzędnych i zmiana skali osi o współczynnik c
z = (y[x]+λ)/c /. sol[[1]] /. x -> (u +C[1]-Log[c])*c // ExpToTrig
Cosh[u]
ostatecznie równanie krzywej łańcuchowej ma postać
y+y0
c
= cosh
x+x0

c
y[x_] = c *Cosh[(x +x0)/c]-y0;
długość łuku krzywej łańcuchowej
2
chain.nb
L[x_] = Integrate[Sqrt[1 +(y '[x])^ 2], x] // FullSimplify
c
1 +Sinh
x +x0
c
2
 Tanh
x +x0
c

współczynniki x0, y0 i c dla krzywej łańcuchowej o długości L=3 przechodzącej przez punkty (0,0) i
(1,1)
rozwiązanie numeryczne
sol = FindRoot[{y[0] ⩵ 0, y[1] ⩵ 1, L[1]-L[0] ⩵ 3}, {x0, 1}, {y0, 1}, {c, 0.5}]
{x0 → -0.436936, y0 → 1.01237, c → 0.181966}
rys = Ploty[x] /. sol, {x, 0, 1}, PlotStyle → Red;
Showrys, GraphicsDisk[{0, 0}, 0.03], Disk[{1, 1}, 0.03],
AspectRatio→ Automatic , PlotRange → All, Axes → None