Narzędzia użytkownika

Narzędzia witryny


narzedzia:pendulum_py

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
narzedzia:pendulum_py [2025/05/07 15:42] administratornarzedzia:pendulum_py [2025/05/16 18:48] (aktualna) administrator
Linia 1: Linia 1:
-===== Symulator Wahadła Podwójnego =====+===== PY: Symulator Wahadła Podwójnego =====
  
 {{ :narzedzia:pednulum.gif?500 |Podwójne wahadło w akcji}} {{ :narzedzia:pednulum.gif?500 |Podwójne wahadło w akcji}}
-{{ :narzedzia:double_pendulum.py |}}+
  
 To nie jest zwykłe wahadło — to **wahadło podwójne** (ang. _double pendulum_), jeden z najprostszych układów fizycznych pokazujących zjawisko **deterministycznego chaosu**.   To nie jest zwykłe wahadło — to **wahadło podwójne** (ang. _double pendulum_), jeden z najprostszych układów fizycznych pokazujących zjawisko **deterministycznego chaosu**.  
 Dwa ramiona, dwie masy, grawitacja — a efekt to piękny, nieprzewidywalny taniec, w którym drobna zmiana kąta startowego potrafi całkowicie zmienić przyszły ruch. Dwa ramiona, dwie masy, grawitacja — a efekt to piękny, nieprzewidywalny taniec, w którym drobna zmiana kąta startowego potrafi całkowicie zmienić przyszły ruch.
- 
-Zobacz więcej:  
- 
-[https://pl.wikipedia.org/wiki/Chaos_deterministyczny Chaos deterministyczny] 
- 
-[https://en.wikipedia.org/wiki/Double_pendulum Double Pendulum (Wikipedia)] 
  
 === Co tu się właściwie dzieje? === === Co tu się właściwie dzieje? ===
Linia 42: Linia 36:
  
 Każde kliknięcie to nowy dziwny świat trajektorii. Każde kliknięcie to nowy dziwny świat trajektorii.
 +
 +===== Matematyczne zaplecze: Runge-Kutta i mechanika Lagrange’a =====
 +
 +Zanim komputer może cokolwiek zasymulować, potrzebujemy dwóch rzeczy: **modelu fizycznego** (czyli równań) i **metody ich rozwiązania**.  
 +Dla naszego podwójnego wahadła:
 +
 +- model opisuje **mechanika Lagrange’a**,
 +- rozwiązanie daje **metoda Rungego-Kutty 4. rzędu (RK4)**.
 +
 +----
 +
 +=== Mechanika Lagrange’a ===
 +
 +Zamiast klasycznych sił z II zasady Newtona, Lagrange korzysta z zasad energii. Wprowadzamy funkcję **Lagrangian**:
 +
 +$$
 +L = T - V
 +$$
 +
 +Gdzie:
 +- $T$ — energia kinetyczna,
 +- $V$ — energia potencjalna.
 +
 +Dla układu o współrzędnych uogólnionych $q_i$, równania ruchu wyprowadza się z tzw. **równań Lagrange’a**:
 +
 +$$
 +\frac{d}{dt} \left( \frac{\partial L}{\partial \dot{q}_i} \right) - \frac{\partial L}{\partial q_i} = 0
 +$$
 +
 +W naszym przypadku: $q_1 = \theta_1$, $q_2 = \theta_2$ — kąty ramion.
 +
 +Energie układu wyrażają się następująco:
 +
 +- Energia kinetyczna:
 +
 +$$
 +T = \frac{1}{2} m_1 l_1^2 \dot{\theta}_1^2 + \frac{1}{2} m_2 \left[ l_1^2 \dot{\theta}_1^2 + l_2^2 \dot{\theta}_2^2 + 2 l_1 l_2 \dot{\theta}_1 \dot{\theta}_2 \cos(\theta_1 - \theta_2) \right]
 +$$
 +
 +- Energia potencjalna (w polu grawitacyjnym):
 +
 +$$
 +V = - (m_1 + m_2) g l_1 \cos\theta_1 - m_2 g l_2 \cos\theta_2
 +$$
 +
 +Podstawiamy do $L = T - V$, a następnie wstawiamy do równań Lagrange’a. W efekcie otrzymujemy dwa nieliniowe równania różniczkowe drugiego rzędu, które potem przekształcamy do układu równań pierwszego rzędu.
 +
 +----
 +
 +=== Metoda Rungego-Kutty 4. rzędu (RK4) ===
 +
 +Metoda RK4 pozwala numerycznie rozwiązać układ równań różniczkowych pierwszego rzędu:
 +
 +$$
 +\dot{y} = f(t, y), \quad y(t_0) = y_0
 +$$
 +
 +Aby znaleźć $y_{n+1}$ w punkcie $t_{n+1} = t_n + h$, obliczamy:
 +
 +$$
 +\begin{aligned}
 +k_1 &= f(t_n, y_n) \\
 +k_2 &= f\left(t_n + \frac{h}{2}, y_n + \frac{h}{2}k_1\right) \\
 +k_3 &= f\left(t_n + \frac{h}{2}, y_n + \frac{h}{2}k_2\right) \\
 +k_4 &= f(t_n + h, y_n + h k_3) \\
 +y_{n+1} &= y_n + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4)
 +\end{aligned}
 +$$
 +
 +To uśrednienie czterech oszacowań zmian stanu. Daje to dokładność lokalną rzędu $\mathcal{O}(h^5)$ i globalną rzędu $\mathcal{O}(h^4)$.
 +
 +W naszym kodzie użyto `solve_ivp()` z biblioteki `scipy`, która domyślnie używa wersji **RK45** — adaptacyjnej metody z kontrolą błędu i dynamicznym doborem kroku.
 +
 +----
 +
 +=== Dlaczego to działa ===
 +
 +Układ, który modelujemy:
 +- jest **nieliniowy** (kąty i ich pochodne pojawiają się w funkcjach trygonometrycznych),
 +- wykazuje **chaotyczne zachowanie** (olbrzymia wrażliwość na warunki początkowe),
 +- **nie ma rozwiązań analitycznych** — tylko symulacja numeryczna pozwala go przeanalizować.
 +
 +Mechanika Lagrange’a pozwala zbudować poprawny fizycznie model oparty o zasady zachowania, a metoda Rungego-Kutty pozwala ten model **skutecznie i dokładnie zasymulować** na komputerze.
 +
 +
 +----
  
 === Linki dla ciekawskich === === Linki dla ciekawskich ===
-  * [https://en.wikipedia.org/wiki/Lagrangian_mechanics Mechanika Lagrange’a (EN)] +  * [[https://en.wikipedia.org/wiki/Lagrangian_mechanicsMechanika Lagrange’a (EN)]
-  * [https://en.wikipedia.org/wiki/Double_pendulum#Equations_of_motion Równania ruchu dla podwójnego wahadła (EN)+  * [[https://pl.wikipedia.org/wiki/Chaos_deterministyczny| Wikipedia: Chaos deterministyczny]
-  * [https://pl.wikipedia.org/wiki/Wahad%C5%82o_dwuprzegubowe Wahadło dwuprzegubowe (PL)+  * [[https://en.wikipedia.org/wiki/Double_pendulum| Wikipedia: Double Pendulum]
-  * [https://myphysicslab.com/pendulum/double-pendulum-en.html Interaktywny model online (MyPhysicsLab)]+  * [[https://myphysicslab.com/pendulum/double-pendulum-en.htmlInteraktywny model online (MyPhysicsLab)]
 +  * [[https://www.myphysicslab.com/| MyPhysicsLab — symulacje fizyczne online]] 
 +  * [[https://demonstrations.wolfram.com/topic.html?topic=Classical+Mechanics| Wolfram Demonstrations: Classical Mechanics]] 
 +  * [[https://people.maths.ox.ac.uk/suli/numerical_analysis/| Lecture notes: Numerical Analysis, Oxford]] 
 + 
 +----
  
 +==== Kod programu ====
  
-<code python>+<code python double_pendulum.py>
 import numpy as np import numpy as np
 import matplotlib.pyplot as plt import matplotlib.pyplot as plt
narzedzia/pendulum_py.1746625368.txt.gz · ostatnio zmienione: 2025/05/07 15:42 przez administrator