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 = Ploty[x] /. sol, {x, 0, 1}, PlotStyle → Red; Showrys, GraphicsDisk[{0, 0}, 0.03], Disk[{1, 1}, 0.03], AspectRatio→ Automatic , PlotRange → All, Axes → None