Programování pro fyziky
Během zimního kurzu "Programování pro fyziky" budete seznámeni s následujícími tématy
- Reprezentace čísel v počítači, přesnost, chyby
- Řešení soustav lineárních rovnic, Gaussova-Jordanova eliminace, LU dekompozice
- Interpolace a extrapolace
- Numerické řešení transcendentních rovnic: metoda bisekce, sečen
- Numerická integrace: Rombergovova metoda, metoda Gaussových kvadratur
- Numerické řešení ODR: Eulerova metoda, metoda Runge-Kutha, Runge-Kutha s adaptivním krokem
- Knihovna numerických rutiin - GNU Scientific Library (GSL)
Dokumentace ke kurzu
Průběžne je připravován studijní text - zde.
Lekce 01 Lekce 02 Lekce 03 Lekce 04
Lekce 05 Lekce 06 Lekce 07 Lekce 08
Lekce 09 Lekce 10 ( zdroják - z "politických" důvodů jsem byl donucen balicek se zdrojakek ozdobit priponou .txt, tuto priponu prosim smazte)
Úkoly
- Napište program, který počítá řadu s_1=\sum^N_{i=1}{ 1/i} a s_2=\sum^1_{i=N}{ 1/i}. Srovnejte výsledky pro různá N.
- Napište program, který řeší soustavu čtyř lineálních rovnic Gaussovou-Jordanovou eleiminační metodou.
-
Známe funkční hodnoty y_i ve vybraných bodech x_i , kterých je N. Určete hodnotu y v libovolném bodě x užitím lineární interpolace. Tzn. mezi každými sousedními body aproximujete funkci y přímkou y = y_i + (y_{i+1} - y_i)(x - x_i) / (x_{i+1} - x_i).
-
Napište program, který interpoluje tabulovanou funkci sin(x) pomoci kubického splinu na intervalu x \in [0, 6.28].
-
Napište program který numericky integruje funkci sin^2(x) v intervalu [0, \pi/4] obdelníkovým, lichoběžníkovým a Simpsonovým pravidlem a srovná výsledky s přesným analytickým výrazem.
-
Napište program který numericky integruje funkci x^2 sin(x) v intervalu [0, \pi/2] užitím Rombergova integračního schématu, srovnejte výsledky s přesným analytickým výrazem a dále srovnejte počet kroků potřebných k dosažení stejné presnosti v porovnání se Simpsonovým pravidlem.
-
Metodou bisekce a metodou sečen (lekce 6) najděte všechny kořeny rovnice sin[exp(x)]=0 na intervalu [0, 2]. Srovnejte, u obou metod, počet iterací potřebných k nalezení těchto kořenů.
-
Inplementujte Eulerův algoritmus a RK4 a numericky řešte pohybovou rovnici harmonických kmitů pro k=1 a počáteční podmínky x0=0 a dx/dt|0=1 na intervalu t ∈[0, 2 π] s dělením intervalu N=100. Na výstupu by měla být tabulka kde v prvním sloupci bude čas t a ve druhém sloupci funkční hodnota x(t). Srovnejte s přesným řešením xp(t)=sin(t).[Pozn: difernciální rovnici 2. řádu lze převézt na dvě diferenciální rovnice 1. řádu, tj. d^2x/dt^2=F(t,x) -> dy/dt=F(t,x) a dx/dt=y ]Milí kolegové, tedy vy kterých se to týká, máte osm úkolů ze kterých stačí vyřešit pět k získání zápočtu :-).