2. Matlab. Algebra liniowa, Elektrotechnika - notatki, sprawozdania, Metody numeryczne w technice


0x01 graphic

SPRAWOZDANIE

PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W CHEŁMIE

Instytut Nauk Technicznych i Lotnictwa

Kierunek: Elektrotechnika

II rok III semestr

LABORATORIUM METOD NUMERYCZNYCH W TECHNICE

Imię i nazwisko:

Temat ćwiczenia:

Matlab 7.6.0

Algebra liniowa

Nr ćwiczenia:

2

Data:

Grupa A

Rok akademicki

2012/2013

Ocena / podpis


1. Cel ćwiczenia

Celem ćwiczenia zapoznanie się z podstawowymi funkcjami zastosowania algebry liniowej, a także zapoznanie się z funkcjami i skryptami w MATLAB'ie.

2. Wykonanie ćwiczenia

Dowolne sekwencje instrukcji Matlab'a można zapisać w pliku tekstowym z rozszerzeniem „.m”. Powstaje w ten sposób tak zwany M-skrypt. Wpisanie w linii poleceń nazwy pliku (bez rozszerzenia) powoduje wczytanie pliku i wykonanie zawartych w nim instrukcji. Operują one zawsze na głównej przestrzeni roboczej Matlab'a i ich efekt jest identyczny, jakby wprowadzono je ręcznie z linii poleceń.

Użycie M-skryptów bywa wygodne, ale w przypadku wielokrotnie używanych w różnych okolicznościach sekwencji instrukcji należy rozważyć nadanie jej postaci funkcji użytkownika, tak zwanej M-funkcji.

Taki nagłówek powoduje odmienne potraktowanie pliku. Wystąpienie nazwy pliku po raz pierwszy powoduje jego wczytanie do pamięci, a w razie wykrycia nagłówka funkcji zamianę zawartości na tak zwany p-kod, który pozostaje w pamięci aż do jawnego usunięcia poleceniem clc.

Jeśli użyto nazwy funkcji, która została już przekształcona do p-kodu, sprawdzone zostaje, czy lista parametrów aktualnych jest zgodna z lista parametrów formalnych. Następnie parametry aktualne wiązane są z formalnymi i wykonywany jest p-kod. W stosunku do M-skryptu różnica polega na tym, ze M-funkcja ma własna przestrzeń robocza, a zmienne z głównej przestrzeni roboczej są dostępne tylko pod warunkiem jawnego zadeklarowania jako globalnych zarówno w głównej przestrzeni, jak i wewnątrz funkcji. Poza tym wszystkie zmienne maja charakter lokalny i przekazywanie wyników może odbyć się tylko poprzez parametry wyjściowe.

Już pierwsza wersja Matlab'a obok rozwiązywania układów równań liniowych udostępniała szereg zaawansowanych operacji na wektorach i macierzach oferowanych przez biblioteki LINPACK i EISPACK. W najnowszej wersji przepisane w języku C procedury z tych bibliotek zastąpiono biblioteką LAPACK - najobszerniejszym niekomercyjnym zestawem procedur z dziedziny algebry liniowej. Stad obok operatorów arytmetycznych, „/” oraz „n” dostępnych jest szereg procedur, z których najważniejsze to lu, chol, inv, rcond, cond, pinv, qr, eig, schur, svd, expm. Ponadto polecenie gallery daje dostęp do szerokiego repertuaru funkcji generujących różnorodne specjalne macierze dogodne do testowania algorytmów tworzonych przez użytkownika.

Macierz posiada elementy z ciała liczb zespolonych C. Poszczególne elementy w wierszu oddzielamy przecinkami lub spacjami, wiersze natomiast oddzielamy średnikami. Do odwoływania się do większej ilości elementów możemy użyć operatora : (dwukropek). Użyty sam, oznacza cały dostępny zakres, użyty w formie n:m wskazuje na elementy od n-tego do m-tego, uzyty w formie n:p:m oznacza elementy z przedziału od n-tego do m-tego co p-ty element, przy czym n,m, p należy do N.

Możemy wykonywać operacje na macierzach, np.: dodawać +, odejmować -, mnożyć *, dzielić lewostronnie \ lub prawostronnie /, wyznaczać odwrotność (polecenie inv()), itd. Możemy także scalać macierze o odpowiednich wymiarach.

Podstawowym narzędziem do rozwiązywania układów równań liniowych jest w Matlab'ie operator „n”. Rozwiązuje on równanie: Ax = B gdzie A jest macierzą kwadratowa (powiedzmy nxn), zaś B macierzą o n wierszach. Wynik jest macierzą o wymiarach nxm, chociaż w rzeczywistości stosowana jest zazwyczaj metoda eliminacji Gaussa z częściowym wyborem elementów głównych w kolumnie. W pewnych przypadkach szczególnych stosowane są inne algorytmy: jeśli na przykład macierz A jest symetryczna, to dokonuje się sprawdzenia, czy jest dodatnio określoną, a jeśli test wypadnie pomyślnie stosowany jest rozkład Choleskiego. Specjalne algorytmy stosowane są, gdy macierz A jest rzadka. Operator działa tez wtedy, gdy macierz A jest prostokątną, a w konsekwencji układ równań jest niedookreślony (k > n), albo nadokreślony (k < n). Wtedy stosowany jest rozkład QR z zamiana kolejności wierszy. Należy zwrócić uwagę, ze jeśli A ma niepełny rząd, to A\B nie jest tym samym co pomnożenie B przez macierz pseudoodwrotna do A.

Operator „/” działa podobnie - konstrukcja B / A jest równoważna (A'\B')', a w większości wypadków odpowiada obliczeniu BA-1.

W przykładzie 1, w trakcie zajęć, należało napisać plik skryptowy rozwiązujący układ równań liniowych dla parametru R i obliczający wartość wyznacznika macierzy.

Aby zapisać równanie w postaci macierzy [A]{x} = {b}, gdzie {x} jest wektorem niewiadomych, musisz umieścić niewiadome w wektorze x, współczynniki niewiadomych w macierzy A, zaś wartości stałe, przeniesione na prawą stronę, w wektorze b.

Wyznaczyliśmy macierz, gdzie:

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
macierz współczynników: A = wektor stałych: b = wektor niewiadomych x =

0x08 graphic
0x08 graphic
5 2r r 2 x1

3 6 2r-1 3 x2

2 r-1 3r 5 x3

0x01 graphic

Zapisaliśmy wykonane czynności jako plik funkcyjny a później skryptowy.

Wprowadzamy macierz A oraz wektor b i znajdujemy rozwiązanie dla wektora x przez x=A\b. Wyliczamt także wyznacznik det(A).

Można tu użyć funkcji linsolve, która rozwiązuje układy liniowe, o ile macierz A ma strukturę zdatną do wykorzystania (np. trójkątną, dodatnio określoną itd.).

0x01 graphic

W przykładzie 2 do przećwiczenia na zajęciach było rozwiązanie układu równań metodą eliminacji Gaussa. Należało wyliczyć x: x = A\b oraz wyznacznik det(A).

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
A = b =

5 -3 2 10

3 8 4 20

2 4 -9 9

Metoda eliminacji Gaussa to technika, która wymaga uformowania prostokątnej macierzy, zawierającej macierz współczynników A oraz wektor znanych wartości b w macierzy rozszerzonej. Za pomocą procedury eliminacji Gaussa-Jordana macierz ta jest przekształcana do postaci normalnej. MATLAB zawiera wbudowaną funkcję rref, która zadanie to wykonuje bardzo precyzyjnie, przekształcając macierz do postaci normalnej.

Należało uformować macierz rozszerzoną b. Aby rozwiązać równania za pomocą rref, wpisywaliśmy polecenia:

c = [A b]; % formuje macierz rozszerzoną

cr = rref(c); % redukcja wierszowa macierzy rozszerzonej

Ostatnia kolumna Cr jest rozwiązaniem x.

0x01 graphic

0x01 graphic

Następne ćwiczenie (przykład 3) polegało na szukaniu miejsc zerowych. Należało napisać n-plik skryptowy wyznaczający miejsca zerowe funkcji sinus oraz wyznaczający pierwiastki równania trzeciego rzędu (równanie nieliniowe).

Przy rozwiązywaniu równa, poszukujemy pierwiastków równa,, maksimów i minimów funkcji. Pierwiastki rzeczywiste równania, (czyli miejsca zerowe) -> f(x)=0. W Matlabie funkcja fzero wyszukuje pierwiastek równania w pobliżu zadanej wartości zmiennej. Czyli do znalezienia wszystkich pierwiastków równania trzeba podać okolice gdzie ma on występować.

Minimum lokalne funkcji poszukuje się analogicznie do pierwiastków przy pomocy funkcji fminbnd. Maximum lokalne funkcji poszukuje się przez poszukiwanie minimum funkcji odwrotnej do danej, czyli -> -f(x).

W przypadku wielomianów wartości funkcji wyszukuje się przez funkcje roots(c), gdzie c jest wektorem współczynników wielomianu. Pierwiastek n-tego stopnia z danej liczby to rozwiązanie równania: x^n = r. Funkcja roots liczy wszystkie pierwiastki wielomianu p będącego jej argumentem. W matlabie wielomian konstruuje się podając współczynniki stojące przy kolejnych potęgach x, poczynając od n-tej, a kończąc na zerowej.

W celu obliczenia wartości wielomianu korzystamy z funkcji polyval(c,x), gdzie x jest liczbą, wektorem lub macierzą dla której liczymy wartości wielomianu.

Przykład z zajęć:

>> z=fzero(`sin', 10); % szuka miejsca zerowego funkcji sinus w okolicach 10

>> m=fminbnd(`sin',10,11); % szuka najmniejszej warto_ci funkcji sinus w przedziale (10,11)

>> p=[3, -2, 4, 1]; % definicja wielomianu p=3x^3-2x^2+4x+1

>> r=roots(p); % zwraca pierwiastki równania

>> w=polyval(p 2); % zwraca wartość wielomianu 3*2^3-2*2^2+4*x+1

Przykład 4.

Matlab ma bardzo rozwinięte algorytmy rozwiązywania równa, liniowych. W zależności od potrzeb można używać metod zaawansowanych (Matlab stara się dobrać metodę w tle) lub ręcznie przez Metodę Gaussa, uzyskiwanie rozkładu macierzy na macierze trójkątne itd.) Układ równań linowych można zapisać wektorowo w postaci: A*x=b, gdzie A macierz współczynników, x - wektor zmiennych [x1...xn].

Z rozwiązaniem układu równań nie ma problemu pod warunkiem, że układ nie jest sprzeczny, jest dobrze określony, i jest liniowo niezależny. W przeciwnym wypadku trzeba stosować bardziej zaawansowane metody obliczeń. Do sprawdzania uwarunkowania macierzy służy funkcja cond(a). Duże wartości funkcji cond świadczą o złym uwarunkowaniu - to wpływa na dokładność obliczeń numerycznych.

Mając dane z zajęć: A (macierz współczynników) i b wprowadzić działania z algebry liniowej:

x=A\b x=pinv(A)*b

lu x=inv(A)*b;

A*x=b;

cond(A); p=pinv(A)

det(A) x=p*b

0x08 graphic
A = b =

0x08 graphic
0x08 graphic
0x08 graphic
1 0 0 1

1 0.0001 0 1

1 1 9999 10000

Na poniższym zdjęciu pokazana jest macierz A, b, a także:

A*x=b; % równanie x=b/A daje wynik rozwiązania układu równa, w postaci x*A=b

x=A\b; % operator dzielenia lewostronnego. Stosuje się tu metodę eliminacji Gaussa z częściowym wyborem elementu głównego

x=pinv(A)*b

0x01 graphic

Kolejny zrzut ekranu przedstawia działania:

x=inv(A)*b; % metoda obliczania układu równań przez mnożenie wektora wynikowego przez macierz odwrotna współczynników; rozwiązanie metodą odwrócenia macierzy

0x01 graphic

Następnie przedstawiłam poniższe wykonane działania w Matlabie:

det(A); % wyznacznik

p=pinv(A)

cond(A); % funkcja do sprawdzania uwarunkowania macierzy

x=p*b

0x01 graphic

Wykonałam także działania:

[L, U]=lu(A)

x= U \ L \ b

Podstawową metodą rozwiązywania układów liniowych jest metoda eliminacji Gaussa - tzw. rozkład LU. Polega on na znalezieniu macierzy L i U takich, że A=L*U, gdzie U jest macierzą trójkątną górną, a L macierzą trójkątną dolną.

W Matlabie eliminację Gausa przeprowadza funkcja lu. Przy wywołaniu [L,U]=lu(A), U jest macierzą trójkątną górną, ale L nie zawsze będzie macierzą trójkątną dolną. Natomiast przy wywołaniu [L,U, P]=lu(A) U jest macierzą trójkątną górną, L nie zawsze będzie macierzą trójkątną dolną, a P macierzą permutacji (zmienia kolejność wierszy w macierzy A). Zachodzi tu zależność L*U=P*A.



Wyszukiwarka

Podobne podstrony:
1. Matlab. Zapoznanie z programem, Elektrotechnika - notatki, sprawozdania, Metody numeryczne w tech
MATLAB - Wprowadzenie do Matlaba, Studia, Sprawozdania, Metody numeryczne
Sprawozdanie metody numeryczne liniowe
SZTUKA PRZEKONYWANIA DO WŁASNYCH RACJI, Elektrotechnika - notatki, sprawozdania, sztuka komunikowani
ćw.7.Badanie wyłącznika APU, Elektrotechnika - notatki, sprawozdania, Urządzenia elektryczne, sprawo
ćw.10.Badanie właściwości łuku prądu stałego, Elektrotechnika - notatki, sprawozdania, Urządzenia el
rownania nieliniowe, Automatyka i robotyka air pwr, VI SEMESTR, Notatki.. z ASE, metody numeryczne,
2. Matlab, aaa, studia 22.10.2014, Materiały od Piotra cukrownika, metody numeryczne w technice, lab
Ćw. 2. Sygnały elektryczne, Elektrotechnika - notatki, sprawozdania, Teoria obwodów, sprawozdania
ćw.3.Wykorzystanie przekaź.swobodnie program.w ukł.sterowania urządz.elektr, Elektrotechnika - notat
Sprawozdanie Metody numeryczne
Sprawozdanie metody numeryczne XCOS
równania nie liniowe, POLIBUDA, sem III, metody numeryczne
sprawko 2 izy, Automatyka i robotyka air pwr, VI SEMESTR, Notatki.. z ASE, metody numeryczne, lab 2
Zagadnienia na egzamin maszyny elektr. II, Elektrotechnika - notatki, sprawozdania, Maszyny elektryc
Zagadnienia do egzaminu napedElektryczny, Elektrotechnika - notatki, sprawozdania, Napęd elektryczny
Pytania z egzaminu z maszyn elektr. I, Elektrotechnika - notatki, sprawozdania, Maszyny elektryczne
Matlab co tam, aaa, studia 22.10.2014, Materiały od Piotra cukrownika, metody numeryczne w technice,
Oświetlenie. Ściąga, Elektrotechnika - notatki, sprawozdania, Instalacje i oświetlenie elektryczne

więcej podobnych podstron