Część II MatLab (Środowisko, Praca Konsolowa, Wektory i Macierze)


Programowanie w Matlabie
Materiały Cz. I
Zagadnienia:
ogólne możliwości Matlaba
okna Matlaba
uruchamianie istniejących programów
uruchamianie edytora programów Matlaba
i zapis m-plików
Wybór katalogów, pliki i ich rodzaje
graficzny interfejs użytkownika- charakterystyka
Praca z MATLAB w trybie konsoli
Command Window  polecenia konfigurujÄ…ce
Workspace  polecenia operujÄ…ce na danych
i plikach
Typy danych w Matlabie- funkcje konwersji
Podstawowe funkcje i stałe matematyczne
Definiowanie macierzy i wektorów
o Funkcje systemowe
o Operacje na macierzach i wektorach
Literatura
A. Kamińska, B. Pańczyk, Matlab. Przykłady i zadania, Mikon 2002
B. Mrozek, Z. Mrozek, Matlab i Simulink. Poradnik użytkownika,
2004
B. Mrozek, Z. Mrozek, Matlab. Uniwersalne środowisko do obliczeń
naukowo technicznych.
Matlab Help Printable documentation
R. Klempka, A. Stankiewicz, Programowanie z przykładami w języku
Pascal i Matlab, 2002
B. Mrozek, Z. Mrozek, MATLAB Leksykon kieszonkowy. Wyd. HELION
1
Charakterystyka środowiska Matlab
(MATrix LABoratory)
Matlab to proste w użyciu środowisko łączące obliczenia,
wizualizacjÄ™ i programowanie. Zastosowania pakietu to:
" obliczenia matematyczne,
" algorytmy numeryczne,
" modelowanie i symulacja,
" analiza danych i wizualizacja,
" grafika inżynierska,
" aplikacje z wykorzystaniem graficznych
interfejsów użytkownika GUI (Graphics User Interface)
Matlab jest systemem interaktywnym, którego podstawową
strukturÄ™ danych stanowi dwuwymiarowa tablica dynamiczna o
nieokreślonej z góry liczbie elementów. Takie podejście pozwala
rozwiązywać wiele technicznych problemów, w szczególności
opisanych za pomocą macierzy i wektorów, bez definiowania
takich struktur (co nie jest możliwe w językach programowania np.
typu C).
Dodatkowe biblioteki Matlaba (ang. toolboxes) umożliwiają
stosowanie specjalistycznych technologii. Biblioteki składają się z
funkcji Matlaba (tzw. m-plików), które poszerzają standardowy
zestaw funkcji pakietu o możliwości rozwiązywania specyficznych
problemów np.:
o Control System Toolbox- projektowanie układów sterowania
o Optimization Toolbox - metody optymalizacji,
o Neural Network Toolbox - sieci neuronowe itp.).
Integralną częścią Matlaba jest Simulink - interaktywny system,
umożliwiający graficzne modelowanie i symulację układów.
Przykład budowy
prostego układu i
symulacji jego pracy
przedstawiono na
rysunku obok.
2
Pakiet Matlab składa się z 5 podstawowych elementów:
1. język Matlab -język wysokiego poziomu, umożliwiający
tworzenie zarówno małych programów, jak i kompletnych aplikacji,
udostępniający funkcje, obsługę wejścia/wyjścia i elementy
programowania obiektowego;
2. środowisko robocze Matlaba - zestaw narzędzi do
zarzÄ…dzania zmiennymi w przestrzeni roboczej, m-plikami,
aplikacjami Matlaba oraz do importowania i eksportowania
danych;
3. system graficzny - zawierajÄ…cy funkcje wysokiego poziomu
do tworzenia 2D i 3D wykresów, funkcje przetwarzania obrazów i
tworzenia animacji oraz wiele niskopoziomowych poleceń,
umożliwiających kontrolę wyglądu tworzonych grafik i budowę
graficznego interfejsu użytkownika;
4. biblioteka funkcji matematycznych  obejmuje zarówno
funkcje podstawowe (np. sumowanie, funkcje trygonometryczne,
funkcje liczb zespolonych), w macierzowe (np. obliczanie macierzy
odwrotnych, wyznaczanie wartości własnych), jak i wiele
specjalistycznych funkcji matematycznych, np. funkcje Bessela,
FFT (Fast FourierTtransform);
5. interfejs API (application program interface) ~ biblioteka
umożliwiająca tworzenie programów w językach C i Fortran,
współpracujących z rogramami napisanymi w Matlabie.
Praca z pakietem Matlab może odbywać się na dwa sposoby:
w trybie bezpośrednim - robocze prowadzenie dialogu
pomiędzy użytkownikiem a pakietem na zasadzie: pytanie -
odpowiedz;
w trybie pośrednim - umożliwia efektywne wykonanie
obliczeń i prezentację wyników za pomocą uruchomienia
programu napisanego w języku pakietu Matlab, czyli tzw.
skryptu
Po uruchomieniu pakietu polecenia można wydawać bezpośrednio w
oknie Matlaba. O gotowości świadczy znak zachęty (>>)
w wierszu poleceń.
3
Matlab  po uruchomieniu
Okno
Command
>> -znak zachęty
Przykład własnego GUI
do uzyskania wykresów funkcji:
f(x) = b*x +Amp*sin(omega*x)
Katalog Matlaba z
toolbox ami
w oknie
Launch Pad
Okno
History
Uruchamianie istniejÄ…cego programu Matlaba (file.m)
Należy określić ścieżkę dostępu do programu wybierając:
File Open
Wybieramy katalog w
którym jest program
Wyświetlają się nazwy
programów Matlaba
(pliki z rozszerzeniem:
xxxx.m lub yyyy.fig
Wybieramy ten który
ma być uruchomiony
4
Tworzenie nowego programu dla Matlaba
W celu napisania programu w języku Matlak należy użyć
specjalnego edytora. Zastanie on otwarty po wyborze opcji:
File New M-file
Wybór opcji M-file
otworzy okno specjalnego
edytora ułatwiającego pisanie
u uruchamianie programu w
Matlabie
Okno Command Window można czyścić np. wpisując po znaku
zachęty polecenie jak niżej:
<< clc
Polecenie to usuwa zawartość z wszystkich linii okna,
a kursor zostaje umieszczone w górnym lewym rogu.
Edytor pozwala wprowadzać polecenia Matlaba.
Wyróżnia kolorem niektóre elementy składni.
Po napisaniu programu należy go zapisać we
wskazanym katalogu jako tzw. M-plik (ma on
rozszerzenie .m) np.: /Matlab/work/równanie.m
Zapis:
- File Save as
{ i ustalamy ścieżkę dostępu do katalogu w
którym chcemy zapisać program }
-Nadajemy nazwÄ™ i potwierdzamy
całość OK.
5
Tworzenie Graficznego Interfejsu Użytkownika w Matlabie
Panel z elementami GUI otwiera polecenie:
File New GUI
Okno
Obiekty
projektu
GUI
GUI
Projektujemy GUI przeciÄ…gajÄ…c obiekty i
rozciągając je do właściwych rozmiarów.
Zapisujemy projekt:
File Save as { scieżka do katalogu}
Nadajemy nazwÄ™ z rozszerzeniem:
Np.: Projekt1
Po zapisie powstanÄ… 2 piki: Projekt1.m
Projekt1.fig`
Uwaga:
1. w trakcie budowy GUI powstaje automatycznie (w tle) program
szkieletowy,
2. w odpowiednich miejscach szkieletu należy dopisać instrukcje
Matlaba określające co ma być robione (np. po przeciągnięciu
suwaka do okienka ma zostać wprowadzona wartość
bieżąca).
6
Przykładowe aplikacje z wykorzystaniem GUI
Poniżej przedstawiono przykład GUI z suwakami i oknem
graficznym.
Suwaki
zmieniajÄ…ce
pulsacjÄ™ i
amplitudÄ™
sinusoidy
Poniżej przedstawiono przykład GUI (prosty kalkulator)
z okienkami do wprowadzania danych i wyświetlania wyników oraz
z wykorzystaniem 2 rodzajów przycisków.
7
Praca z MATLABEM w trybie konsoli
Command Windows- w tym oknie wprowadzane sÄ… polecenia
Matlaba oraz wyświetlane są wyniki (konsola).
Workspace- w miarę powoływania (używania) zmiennych w oknie
Command Win.- informacja o nich jest w tym oknie. Może być
ono przełączane na Current Directory.
Command History- w oknie tym pojawiajÄ… siÄ™ kolejne wpisywane w
Command Windows polecenia (ale nie ma tu inf. np. o wyświetlanych
zawartościach zmiennych. Okno pozwala np. na kopiowanie
wcześniej zapisanych poleceń i użycie ich w czasie bieżących
obliczeń. Okno pamięta historię z przed wielu dni!
My wpisujemy
polecenia po
znaku zachęty >>
Matlab natychmiast
wykonuje polecenie
i podaje wynik
(gdy polecenie
kończy  ; lub tylko
pamięta wynik)
Czyszczenie
zawartości okien
zapewniajÄ… opcje
w Edit:
-Clear Works.
Pozwala określić jakie informacje
-Clear Comm
wyswietlać w Workspace (np.
-Clear Hist.
size- rozmiar zmiennej, itp.)
i w jakiej kolejności (np.:
alfabetycznie, w kolejności
definiowania itp)
8
Katalogi, pliki i ich rodzaje
Simulink- Å‚atwa
Wybór katalogów,
symulacja układów
np. regulacji
programów itp.
automat. czy też
obliczeń
matematycznych np.
przy analizie zjawisk
zmiennych w czasie
M- pliki (np. rownanie.m)- umożliwiają definiowanie własnych
poleceń obliczeniowych i algorytmów.
FIG-pliki- zawierajÄ… polecenia realizacji interfejsu graficznego
GUI (Graphics User Interface) tworzonego przez użytkownika. GUI
jest budowany z gotowych komponentów, ale trzeba ręcznie
zapewnić powiązania między obiektami GUI a własnym programem.
Np. jeśli w GUI wprowadzimy przycisk OBLICZ to trzeba do niego
dodać  instrukcje co ma robić program po naciśnięciu przycisku
przez użytkownika.
MAT-pliki  i pliki ASCII- służą do wymiany danych między Matlab a
innymi programami. MEX-pliki- skompilowane w C lub Fortranie
programy do obliczeń lub sterowania urządzeniami.
Toolbox-y- 20 specjalizowanych pakietów (np. Neural Network).
9
Praca w Matlabie w trybie konsoli
Ogólny wygląd okien przy wpisywaniu poleceń w oknie
Command Window
Poniżej przedstawiono ciąg poleceń w Matlabie, pozwalający na
obliczanie pierwiastków równania kwadratowego. Ciąg poleceń
pozwala na:
wprowadzenie liczb do zmiennych a,b,c będących
współczynnikami równania typu: ax*x +b*x +c
sprawdzenie warunku istnienia pierwiastków rzeczywistych
(delta > lub równa zero)
Jeśli pierwiastki istnieją- to obliczenie ich i wyświetlenie w
oknie Command Window,
Jeśli pierwiastki nie istnieją to wyświetlenie stosownego
komunikatu,
Zmienne pojawiajÄ… siÄ™ w przestrzeni
roboczej (Workspace) kolejno w trakcie
wpisywania poleceń w Command Window
Uwaga:
Wyjaśnienie tego
przykładu na
następnej
stronie!
W oknie Historii (Command History) są pamiętane tylko
polecenia. Przy ponownym pisaniu sekwencji poleceń w oknie
Command Window niektóre z nich mogą być  przeciągane 
co przyspiesza proces realizacji obliczeń.
10
Obliczenia w Matlabie w trybie konsoli - przykład
Poniżej, dla lepszej przejrzystości przedstawiono ciąg poleceń
wpisywanych w oknie Command Window . Polecenia realizujÄ…
obliczanie pierwiastków równania kwadratowego.
Uwaga: kolory w tekście nadaje Matlab w trakcie pisania poleceń.
To get started, select "MATLAB Help" from the Help menu.
>> clc
>> a=input('a=');
>> format compact a=
Taki jak wyżej jest efekt wykonania
>> a=input('a=');
polecenia. Matlab czeka na
a=2
wprowadzenie wartości zmiennej i
potwierdzenie naciśnięciem Enter
>> b=input('b=');
b=3
>> c=input('c=');
c=-1
>> delta=b.*b-4*a*c
delta =
Po wpisaniu tej instrukcji i
17
zakończeniu jej wciśnięciem
% Obliczenia  to jest komentarz
Enter nie wystÄ…piÄ… dalej znaki
>> if delta>0
zachęty << bo Matlab nie wie
gdzie będzie koniec tej
x1=(-b-sqrt(delta))/(2*a)
konstrukcji- czeka na end !
x2=(-b+sqrt(delta))/(2*a)
disp('Pier1='),disp(x1)
disp('Pier2='),disp(x2)
elseif delta==0
x1=-b/(4*a); disp('Pier1=Pier2='), disp(x1);
else
disp('Brak pierw. rzeczywistych')
end
Poniższe wyniki ukażą się dopiero po poprawnym zakończeniu
powyższej sekwencji instrukcji i jej interpretacji przez Matlab
NastÄ…pi to z chwilÄ… wprowadzenia instrukcji end
x1 =
x1, x2- sÄ… zwracane bo
-1.7808
instrukcje definiujÄ…ce
obliczanie x1 i x2 nie
x2 =
kończą się średnikiem !
0.2808
Pier1=
Wyniki wyjściowe:
-1.7808 x1, x2- sÄ… zwracane w wyniku
wykonania instrukcji wyjścia typu
Pier2=
disp(). Wartości poprzedzone są
0.2808
wydrukami tekstowymi
(tu Pier1= oraz Pier2=)
>>
11
Pisanie dłuższego ciągu poleceń na konsoli jest trudne, bo prawie
nie sposób uniknąć błędów. Wygodniej jest:
o zapisać polecenia w pliku,
Poleceniem: File New wybrać M-file
Matlab udostępni okno edytora z domyślną nazwą pliku
(programu) Untitled . Przy pomocy edytora należy wpisać
polecenia (np. jak niżej w tabeli). W trakcie pisania edytor
rozpoznaje pewne konstrukcje językowe i zmienia kolor tekstu.
o Po wpisaniu poleceń należy zapisać plik wybierając:
File Save As (można tu poda inną niż domyślna nazwę programu)
o Następnie program można uruchomić z okna edytora
wybierajÄ…c kolejno opcje: Debug Run
clc
format compact
a=input('Podaj a=');
b=input('Podaj b=');
c=input('Podaj c=');
% Wprowadzono dane teraz obliczenia  to
jest komentarz
delta=b*b-4*a*c;
if delta>0
x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
disp('Pier1='),disp(x1);
disp('Pier2='),disp(x2);
elseif delta==0
x1=-b/(4*a); disp('Pier1=Pier2='),
disp(x1);
else
disp('Brak pierw. rzeczywistych');
end
Jeśli wpisane polecenia są poprawne to Matlab je wykona, a ich
efekty będą widoczne w oknie Command np. jak niżej:
Podaj a=-2
Podaj b=5
Podaj c=4
Pier1=
3.1375
Pier2=
-0.6375
>>
12
Åšrodowisko Matlab- okno Command Window
Środowisko Matlaba obejmuje zagadnienia: obsługi programu, odczytu i zapisu
danych w plikach, a także zarządzania pamięcią. Przed przystąpieniem do pracy z
pakietem można, ustawiając odpowiednie opcje, przygotować środowisko pracy.
Służą do tego specjalne funkcje obsługujące okno poleceń(tzn Command
Window):
Funkcja Opis
clc czyści okno i umieszcza kursora w lewym górn. rogu
home umieszcza wiersza poleceń i kursora w lewym g. r. okna
echo on/echo off włącza/wyłącza wysyłanie na ekran treści wykonywanych
poleceń
more on/more off włącza/wyłącza stronicowanie tekstów wysyłanych na ekran
diary plik_nazwa polecenia i teksty (bez grafiki) wysyłane na ekran będą
zapisywane w pliku o podanej nazwie
diary off/on przełącznik funkcji diary
Sposób wyświetlania liczb w oknie określa funkcja format. Nie
wpływa ona na dokładność obliczeń, a tylko na widok liczby na
ekranie. W tabeli przedstawiono liczbę1/23 w różnych formatach.
Format
Opis Wynik dla liczby 1/23
5-cyfrowa liczba stałopozycyjna (format
short 0,0435
domyślny)
5-cyfrowa liczba zmiennopozycyjna
short e 4,3478e-002
15-cyfrowa liczba stałopozycyjna
long 0,04347826086957
15-cyfrowa liczba zmiennopozycyjna
long e 4,347826086956522e-2
5 znaczących cyfr liczby stało- lub zm. poz.
short g 0,043478
15 znaczących cyfr liczby stało- lub zm.
long 0,0434782608695652
poz.
liczba szestnastkowa
hex 3fa642c8590b2164
drukuje znak + dla liczb dodatnich, - dla
+ +
ujemnych, spacjÄ™ dla zera
format walutowy (część całkowita i do
bank 0,04
dwóch miejsc po przecinku)
przybliża liczbę ułamkami małych liczb
rat 1/23
całkowitych
Wył. dodawanie dodatkowych pustych
compact
wierszy
WÅ‚. dodawanie dodatkowych pustych
loose
wierszy
Odpowiedni format ustawia siÄ™ poleceniem np. format bank
13
Przykład
Polecenie diary pozwala na rejestrację bieżących wyników w pliku i ich
odtworzenie w stosownym czasie. Np. zapisywanie wydawanych poleceń
w pliku ZAPIS.txt wymaga uruchomienia poleceniem:
diary ZAPIS
Rejestrację kończy polecenie diary off.
Na poniższym rysunku pokazano polecenia wprowadzania macierzy
liczbowych (A,B,C) jedno i 2 wierszowych oraz macierzy znakowych NaZ
oraz Im. Pokazano też łączenie 2 macierzy znakowych Im i Naz oraz
stringu (w apostrofach). Połączenie tworzy dłuższy zredagowany tekst.
diary ZAPIS -Start
Tekst rejestrowany
diary off- Stop
w pliku ZAPIS
Jeśli wyczyścić okno poleceń i odczytać zawartość ZAPIS (jest w
bieżącym katalogu) to mamy odtworzony przebieg wpisywania poleceń
i wyświetlania wyników w trakcie naszej pracy- tak jak to pokazano
powyżej w dwu oknach .
14
Przestrzeń robocza- Workspace
Przestrzeń robocza (Workspace) Matlaba jest to obszar
pamięci, w którym przechowywane są zmienne utworzone w oknie
poleceń Command Window. W Matlabie są funkcje umożliwiające
operacje na tych zmiennych . SÄ… one przedstawione w tabeli:.
Funkcja Opis
who wyświetla listę wszystkich zmiennych znajdujących się w
pamięci
whos wyświetla listę wszystkich zmiennych wraz z informacją na
temat ich rozmiaru i rodzaju
who global wyświetlają informacje o zmiennych globalnych
whos global
clear usuwa z pamięci wszystkie zmienne
clear z usuwa z pamięci zmienną o nazwie z
clear zl z2 z3 usuwa z pamięci wymienione zmienne
clear global z usuwa z pamięci zmienną globalną o nazwie z
clear all usuwa z pamięci wszystkie zmienne i funkcje; pozostawia
przestrzeń roboczą zupełnie pustą
Ponieważ zmienne przechowywane są w pamięci tylko
podczas danej sesji pracy z pakietem (lub dopóki nie zostaną
usunięte), można zapisać całą aktualną zawartość przestrzeni
roboczej w pliku, a pózniej ją odtworzyć  tabela
Funkcja Opis
save zapisuje binarnie wszystkie zmienne w pliku matlab.mat
save plik zapisuje binarnie wszystkie zmienne w pliku o nazwie
plik.mat
save plik lista zapisuje binarnie w pliku o nazwie plik.mat tylko zmienne
wymienione jako Lista
load wczytuje zmienne zapisane w pliku matlab.mat do Workspace
load plik wczytuje zmienne zapisane w pliku plik.mat
load plik.rozsz wczytuje zmienne zapisane w pliku tekstowym o podanej
nazwie i dowolnym rozszerzeniu; dane muszą tworzyć
tablicÄ™ prostokÄ…tnÄ…; wczytane dane zostanÄ… zapisane w
macierzy o nazwie plik
15
Przykład
Wykonaj następujące polecenia:
a) zdefiniuj zmienne (tablice) :
b)
>>A=randn(1,100);
>>B=rand(1,100)
Zostanie wygenerowana tablica A wierszowa zawierajÄ…ca 100
losowych wartości z rozkładu normalnego N(0,1) oraz tablica B
zawierajÄ…ca 100
Liczb z rozkładu równomiernego z przedziału [0:1.0]
c) zapisz zmienne A i B(tablice ) w pliku o nazwie Tablice.mat,
save Tablice A B
d) skasuj tablicę z pamięci (workspace)
clear all
e) zamknij Matlab i ponownie go uruchom odczytaj dane
zapisane w pliku Tablice.mat.
load Tablice %odczyt rejestracji
W pamięci Workspace ponownie pojawi się tablica A i B
zawierzajÄ…ce liczby losowe.
Powyższe czynności pokazują jak zachowywać zmienne do
dalszego wykorzystania (np. w innym programie, w innym
czasie).
16
Typy danych
Matlab dopuszcza użycie sześciu typów danych: double, char,
cell i struct. W praktyce najczęściej stosowane są dwa:
" double - liczby podwójnej precyzji,
" char - znaki i łańcuchy znaków.
Liczby podwójnej precyzji
Wszystkie obliczenia Matlaba wykonywane sÄ… na liczbach
podwójnej precyzji. Zakres typu zależy od komputera i określony
przez stałe realmin i realmax.
Aańcuchy znakowe
Aańcuchy są wektorami składającymi się ze znaków. Aańcuch
znakowy definiuje się za pomocą apostrofów, np.
> Naz1='KOWALSKI '
Naz1 =
KOWALSKI
>> Naz2='kowalski '
Naz2 =
kowalski
Aańcuch przechowywany jest w pamięci w postaci wektora liczb
całkowitych reprezentujących kody ASCII poszczególnych znaków.
Konwersji łańcucha na wektor kodów ASCII można dokonać za
pomocÄ… polecenia
> n1=double(Naz1)
n1 =
75 79 87 65 76 83 75 73 32
>> n2=double(Naz2)
n2 =
107 111 119 97 108 115 107 105 32
KonwersjÄ™ odwrotnÄ… wykonuje polecenie char( )
>> T=char(n1)
T =
KOWALSKI
Z łańcuchów można budować macierze znakowe pozwalające na
przedstawianie dłuższych tekstów np.:
>> NazIm=['Jan ', Naz1]
NazIm =
Jan KOWALSKI
17
Ponieważ łańcuch jest wektorem, można na nim wykonywać
operacje, jak na zwykłych wektorach. Przykładowo polecenie
dl= length(NazIm)
zwróci w dl liczbę 13 (liczba znaków w łańcuchu ).
Do wyświetlania łańcuchów można użyć funkcji disp, np.
disp(NazIm)
Jan KOWALSKI
Oprócz tego Matlab zawiera liczne funkcje operujące na
łańcuchach. Niektóre z nich zostały przedstawione w tabeli:
Funkcja Opis
deblank(s) usuwa spacje z końca łańcucha, np. s=deblank(s)
findstr(sl,s2) szuka krótszego z łańcuchów sl i s2 w dłuższym; zwraca
wektor indeksów, od których zaczyna się krótszy łańcuch
lower(s) zmienia wszystkie litery w łańcuchu na małe
strcat(sl,s2,s3,...) łączy łańcuchy w poziomie z pominięciem spacji na
końcu Polecenie strcat('Język ', s) zwróci 'JęzykMatlab'
strcmp(sl,s2) porównuje dwa łańcuchy; jeśli są identyczne, zwraca 1,
jeśli nie - 0; funkcja rozróżnia wielkość liter
strcmpi(sl,s2) porównuje dwa łańcuchy bez rozróżniania wielkości liter
strncmp(sl,s2,n) porównuje n pierwszych znaków w dwu łańcuchach
łączy łańcuchy w pionie, dodając na końcu każdego z
strvcat(sl,s2,s3)
nich odpowiedniÄ… liczbÄ™ spacji; zwraca macierz
upper(s) zmienia wszystkie litery w łańcuchu na duże
WAŻNE: Czasem zachodzi konieczność przekształcenia danej liczbowej na
tekst (np. podczas wyświetlania wartości liczbowych w oknie graficznym)
lub odwrotnie. Służą do tego m.in. funkcje konwertujące liczby na łańcuchy
Są one zestawione w poniższej tabeli.
Funkcja Opis
int2str(n) konwertuje liczbę całkowitą n na łańcuch (niecałkowita
przed konwersją jest zaokrąglona); argum. może być mac.
num2str(x) konwertuje wyrażenie Matlaba (liczbę, macierz lub polecenie)
na łańcuch
str2double(s) konwertuje łańcuch s na liczbę (rzeczywistą lub zespoloną);
liczba w łańcuchu musi mieć prawidłowy format
18
Przykład
Aby np. zdefiniować w Workspace zmienne:
x=12.34, y=12.34e-5, s= stala oraz s1 =  56.78'.
trzeba wpisać poniższe polecenia:
>> x=12.34, y=12.34e-5, s='stala', s1='56.78'
Polecenia nie są kończone średnikami stąd ich efekt ich wykonania
jest widoczny poniżej :
x =
12.3400
y =
Matlab
1.2340e-004
wyświetli taką
s =
zawartość
program
zmiennych
sl =
56.78
Aby zamienić liczby na ciągi znaków ASCII można użyć np. poleceń:
s2=num2str(x), s3=int2str(x), s4=num2str(y)
Efekt tych poleceń jest widoczny poniżej:
s2 =
12.34
s3 =
12 (liczba rzeczywista została zaokrąglona)
s4 = 0.0001234
Aby zamienić ciąg znaków ze zmiennych s i s1 na liczby można
użyć funkcji:
>> x1=str2double(s), x2=str2double(s1)
xl
= NaN (bo nie ma możliwości konwersji stałej tekstowej na liczbę)
x2
= 56.7800
Można też dokonywać konwersji wyrażeń np.: sin(2*pi*x) na
łańcuch znaków
>> x=0.25;
>> num2str(sin(2*pi*x))
ans
= 1
19
Podstawowe funkcje i stałe matematyczne
Najważniejsze z funkcji zostały przedstawione w tabeli. Większość
funkcji dopuszcza użycie argumentów zespolonych. Ponieważ
wszystkie zmienne Matlaba sÄ… traktowane jako macierze,
argumentem każdej funkcji może też być macierz. W takim wypadku
odpowiednia operacja wykonywana jest na każdym elemencie
macierzy z osobna.
Opis
Funkcja
funkcje trygonometryczne: sinus, cosinus, tangens,
sin(z), cos(z), tan(z), cot(z)
cotangens; argument funkcji podawany jest w rad.
asin(z), acos(z), atan(z), funkcje cyklometryczne; wynik podawany jest w
acot(z) radian.
sinh(z), cosh(z), tanh(z), funkcje hiperboliczne- argument funkcji w
radianach
coth(z)
funkcje odwrotne do hiperbolicznych-wynik w
asinh(z), acosh(z), atanh(z)
rad.
sqrt(z)
"z (jeśli z<0, wynik jest zespolony)
"
"
"
exp(z) e^z
log(z) In z (jeśli z<0, wynik jest zespolony)
log2(z) log2 z (jeśli z<0, wynik jest zespolony)
logl0(z) log]0 z (jeśli z<0, wynik jest zespolony)
abs(z) z lub moduł liczby zespolonej
angle(z) argument liczby zespolonej
real(z), imag(z) część rzeczywista i urojona liczby zespolonej
conj(z) liczba zespolona sprzężona
complex(x,y) utworzenie liczby zespolonej: complex(x,y)=x + y*i
ceil(z) zaokrąglenie liczby w górę
floor(z) zaokrąglenie liczby w dół
fix(z) zaokrąglenie liczby dodatniej w dół, ujemnej w górę
round(z) zaokrąglenie liczby do najbliższej liczby całkowitej
reszta z dzielenia x przez y obliczona według
rem(x,y)
wzoru: rem(x,y)=x-n*y, gdzie n=fix(x/y)
Reszta z dzielenia całkowitego x przez y
mod(x,y)
Funkcja signum (1 dla x>0, 0 dla x=0, -1 dla x<0)
sign(x)
Grupy funkcji można wyświetlić korzystając z systemu pomocy:
help elfun
help matfun
help specfun
20
Funkcje statystyczne i stałe
Jedna z grup funkcji matematycznych Matlaba (tabela niżej)
operuje tylko na wektorach. Jeśli argumentami tych funkcji są
macierze, zwracajÄ… one wynik w postaci wektora, obliczony
oddzielnie dla każdej kolumny macierzy.
Opis
Funkcja
max(x) zwraca największy element wektora x
min(x) zwraca najmniejszy element wektora x
sum(x) zwraca sumę elementów wektora x
prod(x) zwraca iloczyn elementów wektora x
mean(x) zwraca średnią arytmetyczną elementów wektora x
std(x) Zwraca odchylenie standardowe elementów wektora x
W Matlabie zostały też zdefiniowane niektóre stałe
matematyczne (tabela niżej). Posługując się nimi, należy jednak
pamiętać, że ich nazwy nie są zastrzeżone. Przez nieuwagę ich
wartość może ławo zostać zastąpiona inną. Ustawienia domyślne
wartości stałych przywraca funkcja clear.
Stała
Opis
pi
przybliżenie wartości Ą
Ä„
Ä„
Ä„
"-1
"
"
"
i lub j
eps względna dokładność zmiennoprzecinkowa
Inf lub inf nieskończoność (ang. infinity); jest rezultatem operacji, która
przekracza zakres arytmetyki komputera- np. dzielenie
przez 0
NaN lub nan nie liczba (ang. Not-a-Number); jest wynikiem matematycznie
niezdefiniowanych operacji - np. Inf/Inf lub 0/0; dzięki
takiemu podejściu dzielenie przez zero nie prowadzi do
przerwania operacji - wyświetlany jest odpowiedni
komunikat, a zmiennej nadawana jest wartość specjalna
21
Pomiar czasu
Do mierzenia upływu czasu (np. podczas wykonywania obliczeń)
i określania aktualnej daty służą funkcje zestawione w tabeli.
Funkcja Opis
podaje aktualną datę i czas w postaci sześcioelementowego
clock
wektora [rok miesiąc dzień godzina minuta sekunda]
date podaje aktualną datę w postaci łańcucha o formacie: 'dd-mmm-rnr'
etime(t2, tl) podaje różnicę czasu, który upłynął między chwilami tl i t2
(gdzie: tl, t2 - wektory o formacie, jak w poleceniu clock)
tic zeruje odmierzanie czasu przed użyciem polecenia toc
toc podaje czas (w sekundach), który upłynął od momentu użycia
polecenia tic
Przykład
Wygeneruj wektor A zawierający 1mln liczb z rozkłady normalnego, a
nastepnie posortuj jego elementy i zapisz w wektorze B.
Oblicz czas tych operacji w komputerze.
>> tic;
>> A=randn(1,100000);
>> B=sort(A);
>> czas_obl= toc
czas_obl =
0.01500000000000
Uwaga: Trzeba pamiętać o średnikach bo ich brak spowoduje
wyświetlanie liczb, co będzie trwało bardzo długo !
Jeśli ilość pamięci nie jest wystarczająca otrzymamy komunikat:
??? Error using >:
Out of memory. Type HELP MEMORY for your options
Datę i czas wyświetla poniższe polecenie:
> B=clock
B =
1.0e+003 *
2.0100 0.0100 0.0220 0.0180 0.0480 0.0197
Wygodniejsze jest poniższe polecenie zwracające tablicę 6 elementową:
>> A=fix(clock)
A =
2010 10 22 18 48 26
22
Definiowanie macierzy i wektorów
Definiowanie bezpośrednie
Reguły:
" Elementy w wierszu muszą być oddzielone spacją lub
przecinkiem,
" Średnik lub znak nowego wiersza (Enter) kończy wiersz
macierzy i powoduje przejście do następnego,
" Lista elementów musi być ujęta w nawiasy kwadratowe,
" Ogólna struktura macierzy A jest następująca:
>> A=[.......elementy i separatory elementów i kolumn...........]
>> A=[1 2 3 ; 4 5 6]
A =
1 2 3
4 5 6
>> size(A)
ans = % Matlab podaje wartość, ale po przez ans bo size
2 3 % nie przyporządkowano żadnej zmiennej.
>> A= [1, 2, 3
4, 5, 6 ] % inny sposób zdefiniowania A
>> X=[1 2 3 4] % definiowanie wektora z separatorem spacji
X =
1 2 3 4
>> X=[1, 2, 3, 4] % definiowanie wektora z użyciem separatora  ,
X =
1 2 3 4
Budowa macierzy z podmacierzy:
>> A=[1 2; 3 4]
A =
1 2
3 4
>> B=[5 6 7]
B =
5 6 7
>> C=[8;9]
C =
8
9
>> D=[B; C A]
D =
5 6 7
8 1 2
9 3 4
23
Wyświetlanie macierzy i ich rozmiarów
Podane w poniższej tabeli funkcje wyświetlają zawartość i rozmiar
macierzy.
Funkcja Opis
disp(A) wyświetla zawartość macierzy A w oknie poleceń
size(A) wyświetla rozmiar dwuwymiarowej macierzy A (liczbę
wierszy i kolumn) w postaci dwuelementowego wektora
wierszowego [liczba wierszy liczba kolumn]
[n m]=size(A) przypisuje zmiennej n liczbÄ™ wierszy, a zmiennej m -
liczbÄ™ kolumn macierzy A
n=size(A,l) przypisuje zmiennej n liczbÄ™ wierszy macierzy A
m=size(A,2) przypisuje zmiennej m liczbÄ™ kolumn macierzy A
length(x) zwraca długość wektora x lub dłuższy z wymiarów
macierzy
Funkcje generujące i przekształcające macierze
W tabeli przedstawiono funkcje Matlaba ułatwiające definiowanie
niektórych macierzy specjalnych.
Funkcja Opis
eye(n) tworzy macierz jednostkowÄ… o rozmiarze nxn z jedynkami na
głównej przekątnej, reszta elementów równa zeru),np.X=eye(3)
ones(n) tworzy macierz o rozmiarze nxn o wszystkich elementach = 1
zeros(n) tworzy macierz o rozmiarze nxn o wszystkich elementach = 0
rand(n) tworzy macierz o rozmiarze nxn wypełnioną liczbami
pseudolosowymi z przedziału <0,l> o rozkładzie jednostajnym
randn(n) tworzy macierz o rozmiarze nxn wypełnioną liczbami
pseudolosowymi o rozkładzie normalnym ze średnią 0 i war. =1
Uwaga:
Wszystkie funkcje przedstawione w tabeli 4 mogą generować
macierze prostokÄ…tne o rozmiarze mxn. OdpowiedniÄ… funkcjÄ™
należy wtedy wywołać z dwoma argumentami, np. rand(m,n).
24
W operacjach macierzowych pomocne sÄ… funkcje przedstawione w
poniższej tabeli:
Funkcja Opis
A=diag(x) utworzenie macierzy przekątniowej A ze składnikami
wektora x na głównej przekątnej
x=diag(A) utworzenie wektora x z elementów znajdujących się na
głównej przekątnej macierzy A
inv(A) utworzenie macierzy odwrotnej do A; inv(A)=A^(-l)
repmat(A,n,m) utworzenie macierzy przez powielenie podmacierzy A m
razy w poziomie i n razy w pionie
reshape(A,n,m) utworzenie macierzy o n wierszach i m kolumnach z
elementów branych kolejno kolumnami z macierzy A;
jeśli A nie zawiera mxn elementów, to pojawi się
komunikat o błędzie
rot90(A) obrócenie macierzy A o 90° w kierunku przeciwnym do
ruchu wskazówek zegara
tril(A) utworzenie z macierzy A macierzy trójkątnej dolnej
(wyzerowanie elementów leżących powyżej głównej
przekÄ…tnej)
triu(A) utworzenie z macierzy A macierzy trójkątnej górnej
(wyzerowanie elementów leżących poniżej głównej
przekÄ…tnej)
25
Użycie operatora dwukropka w definicji macierzy
Dwukropek może być wykorzystywany na kilka sposobów np.:
" Wyrażenie min : max  generuje wektor wierszowy zawierający
liczby całkowite od min do max,
" Wyrażenie min: krok: max pozwala generować wektor
wierszowy zawierający ciąg liczb z dowolnym krokiem (także
niecałkowitym lub ujemnym).
>> X = 2 : 6 % tu nie musimy używać nawiasów[ ], ale możemy
X =
2 3 4 5 6
>> X=2.0 : 6.0
X =
2 3 4 5 6
>> X=2.1 : 6.3
X =
2.1000 3.1000 4.1000 5.1000 6.1000
>> y=-2.0 :0.5 : 2 % definiowanie elementów z zadanym krokiem
y =
-2.000 -1.5000 -1.000 -0.500 0 0.500 1.000 1.500 2.000
>> A=[1: 5 ; 6: 0.5: 8 ; 15 :19]
A =
1.0000 2.0000 3.0000 4.0000 5.0000
6.0000 6.5000 7.0000 7.5000 8.0000
15.0000 16.0000 17.0000 18.0000 19.0000
Poniższa tabela zawiera zestawienie sposobów odwołania do
fragmentów macierzy z użyciem dwukropka.
Odwołan Opis
ie
x(j:k) elementy wektora wierszowego x o numerach od j do k
A(i, :) wszystkie elementy w wierszu i macierzy A
A(i,j:l) wszystkie elementy w wierszu i macierzy A o numerach od j do l
A(i:k,j:l) wszystkie elementy w kolumnach od j do l wierszy od i do k
wszystkie elementy w kolumnach od j do l w wierszach mac. A
macierzy A
A(x,j:l)
o numerach określonych przez elementy wektora x
A(:,:) cała dwuwymiarowa macierz A
A(:) cała macierz A w postaci wektora kolumnowego
26
Dostęp do elementów macierzy
Zdefiniujmy macierz:
Ale gdybyśmy nie użyli nawiasów:
>> A=[1:5; 6:10; 11:15]
>> A=1:5;6:10;11:15
A =
ans =
1 2 3 4 5
11 12 13 14 15
6 7 8 9 10
(błędna formuła- ale bez sygnalizacji
11 12 13 14 15
błędu formalnego)
>> y=A(3,2) % adres elementu (w,k)- tu używamy nawiasy typu ( )
y =
12
>> x=A(6) % adres w tablicy A[ elementy kol_1, elementy kol_2, itd.....]
x =
12
>> A(2,4)=99;
>> A
A =
1 2 3 4 5
6 7 8 99 10
11 12 13 14 15
Odwołania do fragmentów macierzy (podmacierzy)
>> A=[1:5;6:10;11:15] % definiujemy macierz
A =
Natomiast polecenie:
1 2 3 4 5
A(2, :)=[ ]- usunie wiersz
6 7 8 9 10
drugi z macierzy- czyli
11 12 13 14 15
zmieni siÄ™ wymiar A
>> A(2:3, 3:4) % dostęp do podmacierzy
ans =
8 9
13 14
27
Odwołania do fragmentów macierzy ze wskazaniem
numerów wierszy lub kolum przez wektory
Niech będzie zdefiniowana macierz:
>> A=[1:5;6:10;11:15] % definicja
A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
Chcemy wybrać fragment macierzy zaznaczony na zielono:
>> x=[2 3] % dostęp do elementów wierszy podanych w wektorze x
>> A(x, 3:5)
ans =
8 9 10
13 14 15
Nr wierszy nie muszą być kolejnymi np.: x=[1 3].
W podobny sposób posługując się innym wektorem np. y możemy
wskazywać kolejne lub niekolejne kolumny macierzy z których
chcemy wybrać elementy.
>> x=[3 1 5]; % tu zdefiniowano inną kolejność wyboru elementów
>> B=A(2, x)
B =
8 6 10
>> B=A(2, :) % wszystkie elementy wskazanego wiersza (tu w=2)
B =
6 7 8 9 10
>>B= A(2, 3:5) % elementy z części kolumn wiersza
B=
8 9 10
>> A(:,:) % cała macierz
ans =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
>> B=A(:) % Zapis macierzy A(w,k) w postaci wektora kolumnowego
ans =
1
6
11
2
7
........
28
Operacje na wektorach
Przykład: Dodawanie wektorów
>> x=[1; 2; 3]
x =
1
2
3
" Powołujemy wektory
>> y=[4; 5; 6]
kolumnowe x, y po przez
y =
ich zdefiniowanie
4
5
" Definiujemy operacjÄ™:
6
z=x+y
>> z= x+y
z =
5
7
9
Przykład: Odejmowanie wektorów
>> x=[1; 2; 3];
>> y=[4; 5; 6];
>> z=x-y
z =
-3
-3
-3
>> z=y-x
z =
3
3
3
Przykład: Mnożenie wektorów przez stałą
>> x=[1;2;3]
x =
1
2
3
>> c=5;
>> z=c * x %mnożenie lewostronne
z =
5
10
15
>> z=x * c %mnożenie prawostronne
z =
5
10
15
29
Przykład: Mnożenie wektorów
Taka operacja dla wektorów
>> x=[1, 2, 3];
jest niepoprawna!
>> y=[4, 5, 6];
>> z=x*y
??? Error using ==> *
Inner matrix dimensions must agree.
>> x=[1, 2, 3];
>> y=[4, 5, 6];
>> z=x.*y % stosujemy operator mnożenia tablicowego .*
% tzn mnożenia element po elemencie
z =
4 10 18
Przykład. Mnożenie wektorów- inna forma wprowadzania danych
>> x=[1 2 3]
x =
1 2 3
>> y=[4; 5; 6]
y =
4
5
6
>> z=x*y
z =
32
Przykład. Ten sam zapis bez wyświetlania wyników pośrednich
>> x=[1, 2, 3];
>> y=[4; 5; 6]; % y- jest tu wektorem kolumnowym
>> z=x*y
z =
32 % wynikiem jest liczba
Przykład: Wektory x i y kolumnowe
>> x=[1; 2; 3]
x =
1
2
3
>> y=[4; 5; 6]
y =
4
Taka operacja jest
5
niepoprawna!
6
>> z=x*y
??? Error using ==> *
Inner matrix dimensions must agree.
30
Przykład: Wektory kolumnowe  Mnożenie z wykorzystaniem
operatora tablicowego
>> x=[1; 2; 3]
x =
1
2
3
>> y=[4;5;6]
y =
4
5
6
>> z=x.*y
z =
4
10
18
Przykład: Dzielenie wektorów wierszowych
>> x=[1 2 3]
Dla operatora tablicowego
x =
operacja jest poprawna:
1 2 3
>> y=[4 5 6]
>> x=[1 2 3];
y =
>> y=[4 5 6];
4 5 6
>> z=x./y
>> z=x/y
z =
z =
0.2500 0.4000 0.5000
0.4156
>> z=y/x
z =
2.2857
Powyższe operacje są realizowane, ale nie są poprawne!!!.
Przykład Dzielenie wektorów kolumnowych
>> x=[1; 2; 3];
Operator tablicowy:
>> y=[4; 5; 6];
>> x=[1; 2; 3];
>> z=x/y
>> y=[4; 5; 6];
z =
>> z=x./y
0 0 0.1667
z =
0 0 0.3333
0.2500
0 0 0.5000
0.4000
>> z=y/x
0.5000
z =
0 0 1.3333
0 0 1.6667
0 0 2.0000
31
Macierze
Arytmetyka macierzowa i tablicowa
Definiujemy dwie macierze A i B:
>> A=[1 -1;-2 3] >> B=[1 1;0 -2]
A = B =
1 -1 1 1
-2 3 0 -2
>> A+B % dodawanie macierzy
ans =
2 0
-2 1
>> A - B % odejmowanie macierzy
ans =
0 -2
-2 5
>> A .+ B
??? A .+ B
Error: "identifier" expected, "+" found.
W dodawaniu i odejmowaniu operator tablicowy nie jest akceptowany.
Dodawanie macierzowe = dodawaniu tablic czyli wynik jest ten sam.
Wymiary macierzy muszą być takie same.
>> A * B % mnożenie macierzy
ans =
1 3
-2 -8
>> B * A % mnożenie macierzy
ans =
-1 2
4 -6
Uwaga: Mnożenie nie jest przemienne
>> A. * B % Mnożenie tablicowe
ans =
1 -1
Uwaga: Mnożenie z operatorem
0 -6
tablicowym jest przemienne
>> B.* A
ans =
1 -1
0 -6
32
Definiujemy do dalszego użycia macierze A i B:
>> A=[1 -1;-2 3] >> B=[1 1;0 -2]
A = B =
1 -1 1 1
-2 3 0 -2
>> C=B/A % dzielenie prawostronne B=C*A
C =
5 2
-4 -2
>> C=A\B % dzielenie lewostronne B=A*C
C =
3 1
2 0
>> A^2 % potęgowanie >> A*A % A*A=A^2
ans = ans =
3 -4 3 -4
-8 11 -8 11
>> A.^2 % potęgowanie tablicy
ans =
1 1
4 9
>> A' % transponowanie  zamiana wierszy na kolumny
ans =
1 -2
-1 3
33
Zmiana kształtu (formy) macierzy
Tworzenie macierzy z(k-liczba kolumn, w-licz. wierszy) z elementów
wektora y(w*k).
>> y=[1,2,3,4,5,6,7,8,9];
>>k=3;
>>w=3; Ten ciąg poleceń Matlaka wpisano
>> if length(y)==w*k po znaku >> zachęty w oknie
Commnand
z=reshape(y,w,k) Naciśnięcie Enter po end powoduje
wyświetlenie wyników czyli
zawartości z (bo instrukcja
else
z=reshape(y,w,k)
'Nie mozna wykonac'
nie jest zakończona średnikiem!
end
Zwróć uwagę na brak znaków
zachęty >> dopóki nie nastąpi
z =
zamknięcie logiczne (end -em)
1 4 7
instrukcji if
2 5 8
3 6 9
Przykład: Mnożenie macierzy przez stałą
>> A=[1 2 3 ; 4 5 6]
A =
1 2 3
4 5 6
>> c=2;
>> z=A*c
z =
2 4 6
8 10 12
>> Z=c*A
Z =
2 4 6
8 10 12
34
Przykład: Mnożenie macierzy przez wektor
>> A=[1 2 3 ; 4 5 6]
A = % liczba w1=2 k1=3
1 2 3
4 5 6
>> x=[7; 8; 9] % liczba w2=1 k2=3
x =
7
8
9
>> Z=A*x
Z =
50
122
% Wynikiem jest wektor kolumnowy o liczbie wierszy w=w1 , k=w2
Operacje transponowania
>>x = [1 2 3]
x=
Wektor x
1 2 3
>> z = x'
z =
Wektor
1
transponowany
2
XT
3
Przykład: Transponowanie macierzy
>> A=[1 2 3 ; 4 5 6]
A = % Macierz A
1 2 3
4 5 6
>> Z=A'
Z =
1 4 % Macierz A transponowana
2 5
3 6
35
Przykład: Mnożenie macierzy
>> A=[1 2 3; 4 5 6]
A = % Macierz A - wA=2, kA=3
1 2 3
4 5 6
>> B=[1 1; 0 2; 3 1] % Macierz B- wB-3 kB=2
B =
1 1
0 2
3 1
>> Z=A*B
Z = % Macierz kwadratowa Z=A*B  licz. w=2 k=2
10 8
22 20
>> Z= A.* B % Mnożenie z operatorem tablicowym
??? Error using ==> .* Matrix dimensions must agree.
>> Z=A.*A % Mnożenie z operatorem tablicowym
Z = 1 4 9 % każdy elem. jest iloczynem elem. o tych
% samych indeksach.
16 25 36
Przykład Podnoszenie macierzy do potęgi
>> A=[1 2 3; 4 5 6]
A =
1 2 3
4 5 6
>> A=A*A
??? Error using ==> * Inner matrix dimensions must agree.
>> A=A^2
??? Error using ==> ^ Matrix must be square.
Ale potęgowanie tablicy prostokątnej jest możliwe dla operatora
tablicowego
>> A=A.^2
A =
1 4 9
16 25 36
36
Przykład: Potęgowanie macierzy: A^3= A*A*A
>> A=[1 0; 3 2]
A =
1 0
3 2
>> Z=A^2
Z =
1 0
9 4
>> Z=A^3
Z =
1 0
21 8
Obliczanie Wyznacznika Macierzy
>> A=[1 3 1; 2 5 2; 1 1 0]
>> A=[1 0; 3 2]
A =
A =
1 0
1 3 1
3 2
2 5 2
1 1 0
>> wyzn= det(A)
wyzn =
>> det(A)
2
ans =
1
37
ROZWIZYWANIE UKAADU RÓWNAC LINIOWYCH
Obliczanie macierzy odwrotnej
>> A=[1 3 1; 2 5 2; 1 1 0]
A =
 Ręcznie można obliczyć z wzoru Sarrusa:
1 3 1
1*5*0 + 3*2*1 + 1*2*1  1*5*1-1*2*1-0*2*3=1
2 5 2
1 1 0
>> det(A)
ans =
1
 Ręczne obliczanie macierzy odwrotnej do A wymagałoby:
" obliczenia wyznacznika det(A)
" wyznaczenia macierzy dopełnień D
" wyznaczenia macierzy transponowanej DT
" wyznaczenia macierzy odwrotnej wg: A-1 =1/det(A) * DT
>> OdwrA=A^(-1)% Ta operacja Matlab wyznacza macierz odwrotnÄ… do A
Odwr =
-2.0 1.0 1.0
2.0 -1.0 0
-3.0 2.0 -1.0
Wykorzystanie macierzy odwrotnej przy rozwiÄ…zaniu
układu równań
Przykład: Rozwiązać układ równań
x + 3y + z =10 1 3 1
2x + 5y + 2z=18 Macierz współczynników: A= 2 5 2
x + y =3 1 1 0
-2.0 1.0 1.0
A= A-1 =1/det(A) * DT = 2.0 -1.0 0
-3.0 2.0 -1.0
Układ równań można zapisać w postaci:
x 10
A * y = 18 /trzeba podzielelić przez A (odpowiada to * A-1 )
z 3
x 10
Szukane
y = A-1 18
rozwiÄ…zanie
z 3
x -2 1 1 10 (-2)*10 +1*18 +1*3 1
y = 2 -1 0 * 18 = 2*10 +(-1)*18 +0*3 = 2
z -3 2 -1 3 (-3)*10+2*18 +(-1)*3 3
38
Zasada określania macierzy D dopełnień dla macierzy A
A=
Macierz wyjściowa A
1 3 1
2 5 2
1 1 0
D=
(-1)1+1 (-1)1+2 (-1)1+3
5 2 2 2 2 5
1 0 1 0 1 1
(-1)2+1 (-1)2+2 (-1)2+3
Zasada
3 1 1 1 1 3
obliczania
1 0 1 0 1 1
dopełnienia
dla elementu
(-1)3+1 (-1)3+2 (-1)3+3
A[2, 2]
3 1 1 1 1 3
5 2 2 2 2 5
W efekcie postępowania zgodnie z powyższą zasadą
macierz dopełnień D jest następująca:
-2 2 -3
1 -1 2
1 0 -1
I odpowiadająca jej macierz DT jest jak niżej:
-2 1 1
2 -1 0
-3 2 -1
Mając det(A) i DT można obliczyć macierz odwrotna ze wzoru :
A-1 =1/det(A) * DT
Ponieważ tu 1/det(A) =1 Stąd mamy: A-1 = DT
-2 1 1
2 -1 0
-3 2 -1
Macierz obliczona  ręcznie i otrzymana z Matlaba
poleceniem: >> OdwrA=A^(-1)% sÄ… identyczne
39


Wyszukiwarka

Podobne podstrony:
Podstawowe zasady tworzenia projektu dla STM32F4 w środowisku uVision 4 czesc II
Matlab Struktury Danych Wektory i Macierze
Matlab Struktury Danych Wektory i Macierze
WYMAGANIA BHP DOTYCZACE OBIEKTOW BUDOWLANYCH I TERENU ZAKLADU czesc II drogi
KOMLOGO Multimedialny Pakiet Logopedyczny część I i II(1)
MGO LW WK0 Polityka makroekonomiczna w gospodarce otwartej Model Mundella Fleminga, część II
EGZAMIN MATURALNY Z JĘZYKA ANGIELSKIEGO POZIOM ROZSZERZONY CZĘŚĆ II
Czesc II odp X i Y (2)

więcej podobnych podstron