Programowanie i metody numeryczne - cz. II
Zajęcia nieobowiązkowe dla chętnych z II roku studiów I stopnia na kierunku Astronomia, rok akademicki 2021/2022, semestr letni
Piszemy bardziej zaawansowane programy, w "czystym języku C". W planie mamy 6 programów na zaliczenie, w tym jeden indywidualny projekt.
Reguły wymagania obecności: maksymalnie 2 nieusprawiedliwione, punktualność!!!
Cel tych zajęć: myśleć i rozumieć. Nic na pamięć, dowolne notatki lub podręczniki, również na kartkówkach i kolokwiach i w trakcie zaliczania zadań.
Reguły oceniania: obowiązuje zaliczenie co najmniej 5 zadań w tym własnego projektu (ale na bdb wszystkie 6 zadań), aktywność, możliwe kolokwium zaliczeniowe z dopytaniem
Zadania
- Program rozwiązywania układu równań liniowych metodą Gaussa z częściowym wyborem elementu głównego: czytanie danych macierzowych z pliku, sortowanie, kontrola poprawności danych wejściowych, operacje na macierzach, wielokrotnie zagnieżdżone pętle, parametryzacja algorytmu. Dla ambitnych studentów, propozycja dodatkowa: wymyślić i zastosować sposób kodowania w plikach danych współczynników w postaci ułamków, tak jak to jest w zestawach 1 i 4. Zestawy danych. test do zest.2
- Elementy programowania grafiki z użyciem biblioteki PGPLOT: używanie dodatkowych bibliotek, techniki rysowania, tworzenie wykresów, histogramów itp. Tegoroczny (wiosna 2022) temat:"Tygrys w klatce.".
- Program rozwiązywania równania przestępnego pięcioma metodami na przykładzie eliptycznego równania Keplera: wstępna analiza równania, graficzne szacowanie rozwiązania jako przykład otrzymywania danych startowych dla iteracji, przeliczenia danych kątowych, metoda iteracji prostej, metoda Newtona, metoda siecznych, metoda bisekcji, metoda "Regula falsi", graficzne porównanie dokładności i efektywności pięciu metod dla różnych mimośrodów i losowanych anomalii średnich. Na wykresie ma być na osi poziomej parametr dokładności a na osi pionowej czas obliczeń każdej z metod. Wszystkie metody mają być napisane jako osobne, własne funkcje. Dane testowe Czas obliczeń mierzymy funkcją clock().
- Praca z wielkim plikiem danych na przykładzie katalogu Tycho-2: wskaźniki w języku C, wyszukiwanie, sortowanie, wybieranie podzbiorów, histogramy rozkładów różnych parametrów z użyciem PGPLOT-a. Szczegółowy opis tego zadania. Na pracowni, w katalogu /home/COMMON/dydaktyka/PAD_programowanie jest mój program testowy do porównania. Kilka słów o wskaźnikach w C
- Zadanie polega na propagacji położenia ciała o zaniedbywalnej masie po orbicie niezaburzonej (keplerowskiej). Zadanie ma dwa warianty:
- Użycie ścisłych wzorów opartych o tzw. zmienne uniwersalne, Opis pierwszego wariantu zadania 5,
- Całkowanie numeryczne równań ruchu, opis drugiego wariantu zadania 5..
Pierwszy wariant jest łatwiejszy, ale mniej "rozwojowy", bo dotyczyć może jedynie ruchu nieperturbowanego. Drugi wariant jest bardziej rozwojowy, bo stanowi pierwszy krok w nauce całkowania numerycznego równań ruchu, które stosujemy również w przypadku ruchu rzeczywistego, perturbowanego. Oba zadania mają sporo wspólnego bo wymagają oprogramowania ruchu keplerowskiego klasycznymi wzorami, które stosujemy do kontroli wyników w obu wariantach.
- Indywidualny projekt programistyczny studenta (własny lub wybrany z listy propozycji).
Przypomnienie: o generatorze liczb losowych
Uzupełnienie: kilka słów o strukturach w C
Uzupełnienie 2: Środowisko programistyczne - wprowadzenie (patrz projekt Geany). Tips & Tricks
Lista proponowanych zadań indywidualnych
(w nawiasie szacowana trudność w skali od 1 do 15)
Tematy astronomiczne:
- Mapy gwiazdozbiorów (10-15), https://pbarbier.com/constellations/boundaries.html
- Wirtualny teleskop w oparciu o katalog gwiazd (12 - 15)
- Współrzędne prostokątne i sferyczne planet z elementów średnich (7)
- Program do konwersji starych oznaczeń komet na nowe, Dane (8)
- Wschody i zachody Słońca (10 - 15) Patrz na przykład tu i tu.
- Wschody i zachody Księżyca (10 - 15)Patrz na przykład tu i tu.
- Geocentryczna (10) lub topocentryczna(15) efemeryda planetki
- Geocentryczna efemeryda planet oparta na efemerydzie JPL DE440 (15).
- Miejsca widome gwiazd (8 - 15)
- Momenty faz Księżyca w danym roku (dzień, godzina, minuta) w czasie urzędowym w Polsce (8)
- Elementy -> pozycje -> elementy -> pozycje dla dowolnego mimośrodu (12)
- Elementy orbity z dwóch położeń (12)
- Analityczne i numeryczne pochodne położeń po elementach (8)
- Diagramy HR dla różnych podzbiorów katalogu Hipparcos lub nowszych, np. GCNS (12-14)
- Topocentryczna efemeryda gwiazdy w układzie horyzontalnym plus kąt godzinny (8-12)
- Rozwiązanie dowolnego trójkąta sferycznego (8-12)
- Przeliczanie miejsc średnich pomiędzy epokami czyli precesja i ruchy własne (12)
- Testowanie dopasowania prostej metodą najmniejszych kwadratów (10 - 14)
Tematy nieastronomiczne:
- Gra w kółko i krzyżyk do 5 na planszy 19x19 (10 - 15), https://gomokuonline.com/
- Wyliczenie pierwszych 200 cyfr liczby e lub π (12)
- Czterodziałaniowy kalkulator o dowolnej precyzji (15)
- Gra w numerki (8)
- Grafika - wypełnianie dowolnego wielokąta (12)
- Grafika - własna biblioteka graficzna (10-15)
- Gra LIFE (8 - 12)
- Korekta ortograficzna tekstu polskiego (10 - 15)
- Grafika - obroty trójwymiarowej bryły (12 - 15)
- Gra Mu-Torere http://www.lutanho.net/play/mutorereshisima.html, http://www.onlinesologames.com/mu-torere
- Gra w zapałki (8-12). Gra znana jako NIM, https://www.archimedes-lab.org/game_nim/play_nim_game.html, https://plus.maths.org/content/play-win-nim
Przykładowa literatura
- A. Ralston, Wstęp do analizy numerycznej, PWN, 1971
- G. Dahlquist, A. Bjorck, Metody numeryczne, PWN, 1983
- J. Legras, Praktyczne metody analizy numerycznej, WNT, 1974
- J. Stoer, Wstęp do metod numerycznych, tom 1., PWN, 1979
- M. Dryja, J. M. Jankowscy, Przegląd metod numerycznych, cz.2., WNT, 1982
- http://www.astro.caltech.edu/~tjp/pgplot/
- http://www.moshier.net/
- http://astro.if.ufrgs.br/trigesf/position.html
- http://aa.quae.nl/en/antwoorden/
- Na pracowni: /home/COMMON/teksty/kr
- Brian W. Kerninghan, Dennis M. Ritchie, Język ANSI C, Wydawnictwo Naukowo- Techniczne, Warszawa
- Brian W. Kerninghan, Dennis M. Ritchie, Język C, Wydawnictwo Naukowo-Techniczne, Warszawa
- Podręcznik języka C na pl.wikibooks.org
- Paweł Chomicz, Robert Ulijasz, Programowanie w języku C, poradnik programisty, Wydawnictwo PLJ, Warszawa, 1992
- Neil Matthew, Richard Stones, LINUX-Programowanie, Wydawnictwo RM, Warszawa, 1999
- Stephen Prata, Szkoła programowania; Język C, Helion, 2006
- GCC, the GNU C Compiler
- http://www.google.com.pl