Zad. 3: Układ równań liniowych

Podobne dokumenty
Zad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb

Zad. 5: Układ równań liniowych liczb zespolonych

Zad. 4: Rotacje 2D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Układ równań liniowych

Laboratorium nr 5: Mnożenie wektorów i macierzy

Zad. 4: Szablonu dla układu równań liniowych

Zad. 6: Sterowanie robotem mobilnym

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Zad. 5: Sterowanie robotem mobilnym

Laboratorium nr 4: Arytmetyka liczb zespolonych

Zad. 5: Sterowanie dronem

Zad. 5: Rotacje 3D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Zad. 7: Fabryka obiektów i singleton

Zadanie nr 2: Arytmetyka liczb zespolonych

Zad. 6: Sterowanie robotami mobilnymi w obecności przeszkód

Zad. 7: Sterowanie robotami mobilnymi w obecności przeszkód

Zad. 7: Fabryka obiektów i singleton

Zadanie 2: Arytmetyka symboli

Zad. 4: Rotacje 3D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

5. Rozwiązywanie układów równań liniowych

Układy równań liniowych i metody ich rozwiązywania

UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne

Układy równań i nierówności liniowych

Układy równań liniowych. Krzysztof Patan

Zaawansowane metody numeryczne

Rozwiązywanie układów równań liniowych

Programowanie celowe #1

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Lista. Algebra z Geometrią Analityczną. Zadanie 1 Przypomnij definicję grupy, które z podanych struktur są grupami:

Zad. 6: Sterowanie dronami w obecności przeszkód

MATEMATYKA I SEMESTR ALK (PwZ) 1. Sumy i sumy podwójne : Σ i ΣΣ

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...

Wykład z Technologii Informacyjnych. Piotr Mika

Zad. 7: Sterowanie manipulatorem przypadek 3D

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.

Ćwiczenie 3. MatLab: Algebra liniowa. Rozwiązywanie układów liniowych

UKŁADY RÓWNAŃ LINIOWYCH -Metody dokładne

15. Macierze. Definicja Macierzy. Definicja Delty Kroneckera. Definicja Macierzy Kwadratowej. Definicja Macierzy Jednostkowej

= i Ponieważ pierwiastkami stopnia 3 z 1 są (jak łatwo wyliczyć) liczby 1, 1+i 3

Układy równań liniowych

dr Mariusz Grządziel 15,29 kwietnia 2014 Przestrzeń R k R k = R R... R k razy Elementy R k wektory;

Lista nr 1 - Liczby zespolone

Metody numeryczne Laboratorium 2

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

Metody i analiza danych

1. Liczby zespolone i

2. Układy równań liniowych

1 Zbiory i działania na zbiorach.

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

PRZEWODNIK PO PRZEDMIOCIE

1. PODSTAWY TEORETYCZNE

"Bieda przeczy matematyce; gdy się ją podzieli na więcej ludzi, nie staje się mniejsza." Gabriel Laub

Równania liniowe. Rozdział Przekształcenia liniowe. Niech X oraz Y będą dwiema niepustymi przestrzeniami wektorowymi nad ciałem

UKŁADY RÓWNAŃ LINIOWYCH

ALGEBRA z GEOMETRIA, ANALITYCZNA,

Metody numeryczne Wykład 4

Układy równań liniowych

Liczby zmiennoprzecinkowe i błędy

Algebra liniowa z geometrią

Zadania z algebry liniowej - sem. I Przestrzenie liniowe, bazy, rząd macierzy

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

04 Układy równań i rozkłady macierzy - Ćwiczenia. Przykład 1 A =

Zestaw 12- Macierz odwrotna, układy równań liniowych

3. Macierze i Układy Równań Liniowych

3. Wykład Układy równań liniowych.

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

METODY NUMERYCZNE. wykład. konsultacje: wtorek 10:00-11:30 środa 10:00-11:30. dr inż. Grażyna Kałuża pokój

, A T = A + B = [a ij + b ij ].

PRZEWODNIK PO PRZEDMIOCIE

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

Zaawansowane metody numeryczne

1 Podstawy c++ w pigułce.

Sylabus do programu kształcenia obowiązującego od roku akademickiego 2012/13

O MACIERZACH I UKŁADACH RÓWNAŃ

MATLAB - laboratorium nr 1 wektory i macierze

Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa. P. F. Góra

Wprowadzenie do programu Mathcad 15 cz. 1

cx cx 1,cx 2,cx 3,...,cx n. Przykład 4, 5

Wykład 5. Metoda eliminacji Gaussa

Metody numeryczne II. Układy równań liniowych

Zad. 10: Sterowanie manipulatorem cz. 2 i 3

Układy równań liniowych. Ax = b (1)

Podstawy Programowania

Estymacja wektora stanu w prostym układzie elektroenergetycznym

Algebra liniowa. Macierze i układy równań liniowych

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.

DB Algebra liniowa semestr zimowy 2018

III TUTORIAL Z METOD OBLICZENIOWYCH

Matematyka stosowana i metody numeryczne

Macierze. Rozdział Działania na macierzach

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Wykład Ćwiczenia Laboratorium Projekt Seminarium Liczba godzin zajęć zorganizowanych w Uczelni ,5 1

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

WEKTORY I MACIERZE. Strona 1 z 11. Lekcja 7.

Krótkie wprowadzenie do macierzy i wyznaczników

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Transkrypt:

1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich struktur danych w zależności od metody rozwiązywania problemu. Praktyczne zapoznanie się z problemem skończonej binarnej reprezentacji liczb oraz wynikającego stąd problemu niedokładności obliczeń. 2 Program zajęć Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb Ocena realizacji zadania z poprzedniego laboratorium ocenie podlega poprawność realizacji zadania, styl pisania programu oraz opisy. Ocena przygotowania do zajęć ocenie podlega schemat blokowy działania programu (szczegóły wymagań patrz podrozdział 4) Modyfikacja programu wg wskazań osoby prowadzacej ocenie będzie podlegała poprawność realizacji modyfikacji. Pracę nad modyfikacją programu (wszystkie operacje należy wykonywać na kopii) należy rozpocząć już w trakcie pierwszej fazy laboratorium, gdyż prowadzący nie będzie w stanie ocenić wcześniejszego programu wszystkim jednocześnie. 3 Opis zadania programowego Należy napisać program, który umożliwia rozwiązanie układu równań liniowych z trzema niewiadomymi postaci: a 11 x 1 + a 12 x 2 + a 13 x 3 = b 1 a 21 x 1 + a 22 x 2 + a 23 x 3 = b 2 a 31 x 1 + a 32 x 2 + a 33 x 3 = b 3 Przedstawiony powyżej układ równań wygodnie jest reprezentować w postaci macierzowej jako a 11 a 12 a 13 x 1 b 1 a 21 a 22 a 23 x 2 = b 2 a 31 a 32 a 33 x 3 b 3 Tak więc można zapisać sformułowany problem w bardziej zwartej i ogólnej postaci: Ax = b gdzie A to macierz współczynników równania, x wektor nieznanych wartości, które należy wyliczyć, b wektor wyrazów wolnych. Ponadto program dla znalezionego rozwiązania powinien wyliczyć błąd wynikający z niedokładności obliczeń. Reprezentantem błędu będzie wektor różnic przedstawiony poniżej ε = Ax b. 1

Miarą błędu jest długość wektora ε, a więc ε = ε ε, gdzie ε ε jest iloczynem skalarnym wektorów ε. Należy zbadać, kiedy wspomniany błąd staje się znaczący. Aby móc to określić należy odwołać się do interpretacji geometrycznej wspomnianego układu równań. Nie przypadkiem został wybrany układ z trzema niewiadomymi. Dla układu z czterema (i więcej) niewiadomymi byłoby to już niemożliwe (dlaczego?). UWAGA: Definiowane w programie klasy muszą odzwierciedlać kluczowe pojęcia znajdujące się w opisie problemu. Do pojęć takich należy między innymi macierz współczynników, wektor wyrazów wolnych oraz układ równań liniowych. Pomimo tego, że program piszemy dla układu z trzema niewiadomymi, w programie jako rozmiaru nie można używać liczby 3. Należy zdefiniować poprzez dyrektywę preprocesora odpowiedni symbol, który będzie dalej wykorzystywany, np. #define ROZMIAR 3 Symbol ten powinien zostać wykorzystany później zarówno przy definiowaniu klasy Wektor, jak też Macierz. Musi on być wykorzystany we wszystkich miejscach, w których odwołujemy się do rozmiaru wektora lub macierzy (np. w pętlach typu for). Wspomniany wcześniej symbol powinien być zdefiniowany w osobnym pliku nagłówkowym. 3.1 Działanie programu Program nie ma udostępniać żadnego interfejsu użytkownika. Zakłada się, że kolumny macierzy współczynników równania oraz wektor wyrazów wolnych [A b] czytane są w postaci transponowanej, tzn [A b] T. Dla lepszego zrozumienia rozważmy układ równań: 2x 1 + 2x 2 + x 3 = 9 x 1 + 2x 2 + 1,5x 3 = 8,5 x 1 + 3x 2 + x 3 = 8 Połączony zapis macierzy współczynników i wektora wyrazów wolnych ma postać: 2 2 1 9 [A b] = 1 2 1,5 8,5 1 3 1 8 Postać transponowana to: [A b] T = 1 1,5 1 9 8,5 8 Dla ułatwienia sobie pracy warto zapisać dane w pliku i później czytać dane z pliku poprzez przekierowanie go na wejście standardowe programu. Taki sposób postępowania przedstawiony jest poniżej. 2

jkowalsk@noxon: rozwiazanie> cat rownanie_liniowe.dat 1 1.5 1 9 8.5 8 jkowalsk@noxon: rozwiazanie>./uklad_rownan < rownanie_liniowe.dat Macierz A^T: 1 1.5 1 Wektor wyrazow wolnych b: 9 8.5 8 Rozwiazanie x = (x1, x2, x3): 2 1 3 Wektor bledu: Ax-b = ( 4.768e-07, 2.33e-07, 0 ) Dlugosc wektora bledu: Ax-b = 5.3068563e-07 jkowalsk@noxon: rozwiazanie>_ Uwaga: Dane o błędzie mają jedynie charakter poglądowy. Nie są to faktycznie wyliczone wartości. Ułożenie znaków w linii w przypadku wyświetlania macierzy, nie musi być idealnie równe, aby jeden wiersz długością pasował do drugiego. 3.2 Materiały pomocnicze Zalążek programu wraz z plikiem zawierającym przykładowe dane znajduje się w katalogu bk/edu/kpo/zad/z3. 3.3 Wymagania co do konstrukcji programu Oprócz wymagań sformułowanych w opisie zadania należy uwzględnić uwarunkowania przedstawione poniżej. Należy zdefiniować klasy Wektor, Macierz oraz UkladRownanLiniowych. Muszą one mieć tylko i wyłacznie niezbędne pola reprezentujace atrybuty danego pojęcia. Należy odpowiednio przeciążyć operator indeksujący dla klasy Wektor, operator funkcyjny dla klasy Macierz i odpowiednio posługiwać się nimi w programie. Możliwe są również również inne kombinacje tych operatorów. 3

Należy przeciążyć operator mnożenia, tak aby była możliwość przemnożenia macierzy przez wektor. Ponadto konieczne jest przeciążenie operatora dodawania i odejmowania wektorów oraz mnożenia i dzielenia przez liczbę. Program musi zachować strukturę modułową i odpowiednią strukturę kartotek. O ile będzie to konieczne, należy zmodyfikować plik Makefile (np. gdy dodany zostanie nowy moduł). Każda z klas powinna zostać zdefiniowana w oddzielnym pliku nagłówkowym. Metody tej klasy powinny być natomiast definiowane w osobnym module związanym z daną klasą, np. definicja klasy UkladRownanLiniowych powinna znaleźć się w pliku nagłówkowym UkladRownanLiniowych.hh, zaś metody w pliku UkladRownanLiniowych.cpp. Proste metody można definiować bezpośrednio w ciele klasy. Wszystkie metody, które nie zmieniają stanu obiektu, na którym działają, powinny być metodami typu const. Oprócz tego pozostają w mocy wszystkie wcześniejsze wymagania dotyczące struktury katalogów, pliku Makefile, modułowej struktury programu, jak też opisów. 3.4 Wersja uproszczona oceniana nie więcej niż na 4,0 W wersji uproszczonej można ograniczyć się do układu z dwoma zmiennymi. 3.5 Rozszerzenia nieobowiazkowe Proponuje się, aby równanie było wyświetlane przez program w postaci: x_1 1 1 2 1 x_2 = 2 1 1 1 x_3-1 Zamiast oddzielnie macierz A i wektor wyrazów wolnych b. Niniejszy sposób wyświetlenia musi być zrealizowany poprzez przeciażenie operatora << działajacego na strumieniu wyjściowym dla klasy modelujacej pojęcie układu równań liniowych. 4 Przygotowanie do zajęć 4.1 Tydzień 0 Przed zajęciami należy napisać diagram czynności reprezentujący ideę działania programu bez wchodzenia nadmiernie w detale, np. operacja wyświetlenia układu równań i jego rozwiązania, operacja czytania parametrów równania. Tym operacjom powinny odpowiadać pojedyncze czynności reprezentowane przez pojedyncze bloczki. Zaleca się wybranie metody rozwiązywania układu równań z wykorzystaniem wzorów Cramera. W takim przypadku operację liczenia wyznacznika należy również przedstawić w postaci pojedynczej czynności, jak też wstawianie odpowiedniej kolumny do macierzy. 4

4.2 Tydzień 1 Przed zajęciami muszą zostać przygotowane następujące elementy zadania. Wszystko co będzie ponad to będzie oceniane in plus. Należy przygotować możliwie szczegółowy schemat blokowy liczenia wyznacznika metodą eliminacji Gaussa (diagram musi mieć postać elektroniczną). Powinna być zdefiniowana klasa Wektor wraz z przeciążeniem operatorów zapisu do strumienia wyjściowego (cout, operator <<). czytania ze strumienia wejściowego (cin, operator >>). Należy również przeciążyć operację dodawania i odejmowania wektorów, mnożenie wektora przez wektor (iloczyn skalarny) oraz wektora przez liczbę, jak też dzielenia wektora przez liczbę. Klasa i metody muszą być opisane. Definicje klasy i metod powinny być zapisane w osobnym module. Należy również zdefiniować klasę Macierz. Należy przeciążyć operację zapisu macierzy do strumienia wyjściowego (cout, operator <<). Klasa i metody muszą być opisane. Definicja klasy powinna być w osobnym module. Oba moduły powinny zostać uzupełnione modułem main i kompilować się oraz konsolidować jako program. 4.3 Tydzień 2 Rozliczenie się z gotowego programu i rozpoczęcie następnego zadania (tydzień 0 dla zadania nr 3). 5