Zápočtový úkol 5#
Při splnění všech podúloh tohoto započtového úkolu bude počítáno jako splnění 2 započtových úloh! Pro splnění tohoto zápočtového úkolu (počítán jako 1 splněný úkol) stačí správně vyřešit jednu z podúloh.
Pomocí metody střelby řešte okrajovou úlohu střelby na cíl v homogenním gravitačním poli Země. Uvažujte tření dělové koule ve vzduchu a působení gravitace země ve tvaru:
kde \(\vec{v} = \dot{\vec{r}}\). Pro jednoduchost zvolte \(C = \rho = S = g = m = 1\).
Okrajové podmínky jsou následující:
tedy v čase \(t=0\) se dělová koule nachází v poloze \([a, 0]\), v čase \(T\) dopadne po výstřelu zpět na zem v místě \([b, 0]\).
Předchozí úlohu je výhodné řešit v následujícím tvaru soustavy čtyř ODR (kde místo dvou složek rychlostí máme velikost rychlosti a úhel \(\theta\) aktuálního směru pohybu vůči ose \(x\)):
s okrajovými podmínkami:
Implementujte metodu střelby pro předchozí úlohu (můžete se inspirovat cvičením) a využíjte ji v následujících podúlohách:
Vyřešte úlohu pro následující parametry: \(a = 0, b = 2, T = 1\).
To odpovídá otázce: “Jaký má být úhel náklonu děla a síla výstřelu tak, aby koule zasáhla cíl za dobu \(T=1\)?”
V této podúloze bude funkce \(F(\beta)\) vektorem dvou funkcí! Hledáme kořeny soustavy dvou rovnic! (můžete využít například funkce
scipy.optimize.newton()
)
Řešte stejnou úlohu, ale tentokrát doba zasažení cíle může být libovolná a navíc máte podmínku \(v(0) = 2\).
Pokud nás nezajímá, kdy zasáhneme cíl, podmínka \(\vec{r}(T) = [x_T, y_T] = [b, 0]\) ve skutečnosti odpovídá jen jedné podmínce \(y(T) = 0\), kde čas \(T\) je daný vztahem \(x(T>0) = b\) (koule doletěla do vzdálenosti cíle). Tedy pro jednoznačnost potřebujeme další podmínku (počáteční rychlost).
Zde tedy nemáme přesně daný integrační interval \([0, T]\), musíme tedy v každém kroku kontrolovat zda \(x(t) \geq b\).
Odpovídá otázce: “Jaký má být úhel náklonu děla, abych při síle výstřelu \(v(0) = 2\) koule zasáhla cíl?”
Najděte hodnotu \(\theta(0) = \theta_0\) tak, aby počáteční rychlost koule \(v(0) = v_0\) byla co nejmenší a cíl byl stále zasažen (v libovolném čase).
hledejte náklon děla v intervalu \(\theta(0) \in [0.01, \frac{\pi}{2}]\)
Uvědomte si, že řešením podúlohy 3 získáváte pomyslný vztah (funkci): \(v_0 \rightarrow \theta_0\) (\(G(v_0) = \theta_0\)). Tedy pro určitou počáteční rychlost dostaneme náklon děla \(\theta_0\) takový, že je zasažen cíl za určitý čas \(T=T(v_0)\) (ten závisí na volbě počáteční rychlosti).
Stačí formulovat funkci \(G^{-1}(\theta_0) = v_0\) analogicky dle podúlohy 3 a nalézt minimum (využijte vhodné knihovní funkce z modulu
scipy.optimize
).
Vždy vykreslete výsledné řešení na intervalu \([a, b]\) pro každou podúlohu.
## DOPLŇTE ##