Metody numeryczne - laboratoria - zajęcia 3 ROZWIĄZYWANIE UKŁADÓW RÓWNAŃ LINIOWYCH
Praca na zajęciach fdo zdobycia max. 8 punktów):
Na zajęciach należy utworzyć trzy pliki. Pierwszy z nich to plik “dane.txt”, drugi to program do odczytywania danych “start.m” i trzeci to skrypt funkcyjny.
1. Utwórz plik tekstowy o nazwie “dane.txt” i wpisz do niego liczby podane na tablicy.
2. Napisz program “start.m”:
2.1. otwórz plik “dane.txt” używając funkcji fopen,
2.2. odczytaj zawartość pliku używając dowolnej znanej ci funkcji, np. f scanf,
2.3. zamknij plik “dane.txt” używając funkcji fclose,
2.4. rozdziel odczytane dane na macierz A (kwadratowa) i wektor wyrazów wolnych B (pionowy),
2.5. przy pomocy polecenia z eros zdefiniuj pionowy wektor początkowy X0 (pamiętaj o odpowiednim rozmiarze),
2.6. zdefinuj zmienną określającą dokładność obliczeń DOK.
2.7. wywołaj skrypt funkcyjny do rozwiązywania układów równań liniowych
wynik = nazwisko_i(A,B,X0,DOK)
3. Napisz skrypt funkcyjny do rozwiązywania URL metodą iteracji prostej. Pamiętaj, że w skiytpatch funkcyjnych nie używa się polecenia elear all na początku. Skrypt ma zwracać pionowy wektor rozwiązań oraz liczbę iteracji (liczba określająca ilość iteracji ma być umieszczona jako dodatkowy, ostatni element dołączony do pionowego wektora rozwiązań).
Po wykonaniu kroku 2 otrzymujesz 4 punkty, po wykonaniu kroku 3 otrzymujesz kolejne 4 punkty. W sumie 8 punktów.
Zadanie domowe - nieobowiązkowe, tylko dla mających czas i chęci (do zdobycia max, 4 punkty):
Napisz skrypt funkcyjny, który będzie rozwiązywał dowolny układ równań liniowych metodą Gaussa-Seidla. W algrytmie możesz zastosować funkcje triu i tril do tworzenia macierzy trójkątnych. Skrypt ma zwracać pionowy wektor rozwiązań i liczbę iteracji oraz generować wykres zbieżności dla układów z liczbą niewiadomych nie przekraczającą 8.
Pierwsza linijka w skrypcie funkcyjnym: function X=nazwisko_gs(A,B,XO,DOK) gdzie:
X - pionowy wektor rozwiązań i liczba iteracji,
nazwisko gs - nazwa funkcji i pliku: nazwisko autora bez polskich znaków, _gs - bo to metoda Gaussa-Seidla,
A - macierz współczynników układu (zawsze kwadratowa),
B - wektor wyrazów wolnych (zawsze pionowy),
X0 - wektor początkowy (zawsze pionowy, dopasowany rozmiarem do wektora B),
DOK - zmienna określająca dokładność obliczeń (skalar)
Uwagi końcowe:
Termin nadsyłania programów upływa na kolejnych zajęciach. Proszę przysyłać tylko skrypt funkcyjny. Tytuł listu: “MN program 2 - Nazwisko”. W treści listu proszę pamiętać o podaniu imienia, nazwiska oraz grupy z którą chodzi się na zajęcia.