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

background image

1

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

background image

2

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.

background image

3

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 -
odpowiedź;



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ń.

background image

4

Matlab – po uruchomieniu




Przykład własnego GUI

do uzyskania wykresów funkcji:

f(x) = b*x +Amp*sin(omega*x)






Uruchamianie istniejącego programu Matlaba (file.m)

Należy określić ścieżkę dostępu do programu wybierając:

File





Open













Katalog Matlaba z
toolbox’ami
w oknie
Launch Pad

>> -znak zachęty

Okno

Command

Okno

History

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

background image

5

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


















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.



















Wybór opcji M-file
otworzy okno specjalnego
edytora ułatwiającego pisanie
u uruchamianie programu w
Matlabie

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.

background image

6

Tworzenie Graficznego Interfejsu Użytkownika w Matlabie

Panel z elementami GUI otwiera polecenie:

File





New





GUI

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).

Okno

projektu

GUI

Obiekty

GUI

Projektujemy GUI przeciągając obiekty i
rozciągając je do właściwych rozmiarów.

Zapisujemy projekt:

FileSave as{ scieżka do katalogu}

Nadajemy nazwę z rozszerzeniem:
Np.: Projekt1

Po zapisie powstaną 2 piki: Projekt1.m
Projekt1.fig`

background image

7

Przykładowe aplikacje z wykorzystaniem GUI

Poniżej przedstawiono przykład GUI z suwakami i oknem
graficznym.

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.

Suwaki
zmieniające
pulsację i
amplitudę
sinusoidy

background image

8

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.
-Clear Comm
-Clear Hist.

Pozwala określić jakie informacje
wyswietlać

w

Workspace

(np.

size- rozmiar zmiennej, itp.)
i w jakiej kolejności (np.:
alfabetycznie, w kolejności
definiowania itp)

background image

9

Katalogi, pliki i ich rodzaje







































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).

Wybór katalogów,

programów itp.

Simulink- łatwa

symulacja układów

np. regulacji

automat. czy też

obliczeń

matematycznych np.
przy analizie

zjawisk

zmiennych w czasie

background image

10

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

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ń.

Uwaga:
Wyjaśnienie tego
przykładu na
następnej
stronie!

background image

11

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
>> format compact
>> a=input(

'a='

);

a=2
>> b=input(

'b='

);

b=3
>> c=input(

'c='

);

c=-1
>> delta=b.*b-4*a*c
delta =
17

% Obliczenia – to jest komentarz

>>

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




x1 =
-1.7808
x2 =
0.2808
Pier1=
-1.7808
Pier2=
0.2808
>>

>> a=input(

'a='

);

a=

Taki jak wyżej jest efekt wykonania
polecenia. Matlab czeka na
wprowadzenie wartości zmiennej i
potwierdzenie naciśnięciem Enter

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, x2- są zwracane bo
instrukcje definiujące
obliczanie x1 i x2 nie
kończą się średnikiem !

Wyniki wyjściowe

:

x1, x2- są zwracane w wyniku

wykonania instrukcji wyjścia typu

disp(). Wartości poprzedzone są

wydrukami tekstowymi

(tu Pier1= oraz Pier2=)

Po wpisaniu tej instrukcji i
zakończeniu jej wciśnięciem
Enter nie wystąpią dalej znaki
zachęty << bo Matlab nie wie
gdzie będzie koniec tej
konstrukcji- czeka na end !

background image

12

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























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
>>


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

background image

13

Ś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

short

5-cyfrowa liczba stałopozycyjna (format

domyślny)

0,0435

short e

5-cyfrowa liczba zmiennopozycyjna

4,3478e-002

long

15-cyfrowa liczba stałopozycyjna

0,04347826086957

long e

15-cyfrowa liczba zmiennopozycyjna

4,347826086956522e-2

short g

5 znaczących cyfr liczby stało- lub zm. poz.

0,043478

long

15 znaczących cyfr liczby stało- lub zm.

poz.

0,0434782608695652

hex

liczba szestnastkowa

3fa642c8590b2164

+

drukuje znak + dla liczb dodatnich, - dla

ujemnych, spację dla zera

+

bank

format walutowy (część całkowita i do

dwóch miejsc po przecinku)

0,04

rat

przybliża liczbę ułamkami małych liczb

całkowitych

1/23

compact

Wył. dodawanie dodatkowych pustych

wierszy

loose

Wł. dodawanie dodatkowych pustych

wierszy

Odpowiedni format ustawia się poleceniem np.

» format bank

background image

14

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.




















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 .

diary ZAPIS -Start
diary off- Stop

Tekst rejestrowany
w pliku ZAPIS

background image

15

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
whos global

wyświetlają informacje o zmiennych globalnych

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óźniej 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

background image

16

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).

background image

17

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.

Łańcuchy znakowe

Łańcuchy są wektorami składającymi się ze znaków. Łańcuch

znakowy definiuje się za pomocą apostrofów, np.

» > Naz1=

'KOWALSKI '

Naz1 =

KOWALSKI

>> Naz2=

'kowalski '

Naz2 =

kowalski

Łań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

background image

18

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

strvcat(sl,s2,s3)

łączy łańcuchy w pionie, dodając na końcu każdego z
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

background image

19

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 =

1.2340e-004

s =

program

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


Matlab
wyświetli taką
zawartość
zmiennych

background image

20

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

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.

Funkcja

Opis

sin(z), cos(z), tan(z), cot(z)

funkcje trygonometryczne: sinus, cosinus, tangens,
cotangens; argument funkcji podawany jest w rad.

asin(z), acos(z), atan(z),
acot(z)

funkcje cyklometryczne; wynik podawany jest w
radian.

sinh(z), cosh(z), tanh(z),
coth(z)

funkcje hiperboliczne- argument funkcji w
radianach

asinh(z), acosh(z), atanh(z)

funkcje odwrotne do hiperbolicznych-wynik w
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)

log

2

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

rem(x,y)

reszta z dzielenia x przez y obliczona według

wzoru:

rem(x,y)=x-n*y

, gdzie n=fix(x/y)

mod(x,y)

Reszta z dzielenia całkowitego x przez y

sign(x)

Funkcja signum (1 dla x>0, 0 dla x=0, -1 dla x<0)

Grupy funkcji można wyświetlić korzystając z systemu pomocy:

help elfun
help matfun
help specfun

background image

21

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

.

Funkcja

Opis

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 π

π

π

π

i lub j

√-1

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

background image

22

Pomiar czasu

Do mierzenia upływu czasu (np. podczas wykonywania obliczeń)

i określania aktualnej daty służą funkcje zestawione w tabeli.

Funkcja

Opis

clock

podaje aktualną datę i czas w postaci sześcioelementowego
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

background image

23

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

background image

24

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).

background image

25

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)



background image

26

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

ie

Opis

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

macierzy A

A(x,j:l)

wszystkie elementy w

kolumnach od j do l

w wierszach mac.

A

o numerach określonych przez elementy wektora

x

A(:,:)

cała dwuwymiarowa macierz

A

A(:)

cała macierz

A

w postaci wektora kolumnowego

background image

27

Dostęp do elementów macierzy

Zdefiniujmy macierz:

>> A=[1:5; 6:10; 11:15

]

A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

>> 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 =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

>> A(2:3, 3:4)

% dostęp do podmacierzy

ans =
8 9
13 14

Ale gdybyśmy nie użyli nawiasów:
>> A=1:5;6:10;11:15
ans =
11 12 13 14 15
(błędna formuła- ale bez sygnalizacji
błędu formalnego)

Natomiast polecenie:

A(2, :)=[ ]- usunie wiersz

drugi z macierzy- czyli
zmieni się wymiar A

background image

28

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
........

background image

29

Operacje na wektorach

Przykład: Dodawanie wektorów

>> x=[1; 2; 3]

x =
1
2
3

>> y=[4; 5; 6]

y =
4
5
6

>> 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

Powołujemy wektory

kolumnowe x, y po przez
ich zdefiniowanie

Definiujemy operację:

z=x+y

background image

30


Przykład: Mnożenie wektorów

>> x=[1, 2, 3];

>> 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
5
6

>> z=x*y

??? Error using ==> *
Inner matrix dimensions must agree.

Taka operacja jest
niepoprawna!

Taka operacja dla wektorów
jest niepoprawna!

background image

31

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]

x =
1 2 3

>> y=[4 5 6]

y =
4 5 6
>> z=x/y
z =
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];
>> y=[4; 5; 6];

>> z=x/y

z =
0 0 0.1667
0 0 0.3333
0 0 0.5000

>> z=y/x

z =
0 0 1.3333
0 0 1.6667
0 0 2.0000

Operator tablicowy:
>> x=[1; 2; 3];
>> y=[4; 5; 6];
>> z=x./y
z =
0.2500
0.4000
0.5000

Dla operatora tablicowego
operacja jest poprawna:

>> x=[1 2 3];
>> y=[4 5 6];
>> z=x./y
z =
0.2500 0.4000 0.5000

background image

32

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
0 -6

>> B.* A

ans =
1 -1
0 -6

Uwaga: Mnożenie z operatorem
tablicowym jest przemienne

background image

33

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

background image

34

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;
>>

if

length(y)==w*k


z=reshape(y,w,k)


else

'Nie mozna wykonac'

end


z =
1 4 7
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

Ten ciąg poleceń Matlaka wpisano
po znaku >> zachęty w oknie
Commnand
Naciśnięcie Enter po end powoduje
wyświetlenie wyników czyli
zawartości z (bo instrukcja
z=reshape(y,w,k)
nie jest zakończona średnikiem!
Zwróć uwagę na brak znaków
zachęty >> dopóki nie nastąpi
zamknięcie logiczne (end -em)
instrukcji if

background image

35

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=
1 2 3

>> z = x'

z =

1
2
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

Wektor x

Wektor
transponowany
X

T

background image

36

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

background image

37


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 3 1
2 5 2
1 1 0

>> det(A)

ans =
1











>> A=[1 0; 3 2]
A =
1 0
3 2

>> wyzn= det(A)
wyzn =
2

background image

38

ROZWIĄZYWANIE UKŁADU RÓWNAŃ LINIOWYCH

Obliczanie macierzy odwrotnej

>> A=[1 3 1; 2 5 2; 1 1 0]
A =
1 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 D

T

• wyznaczenia macierzy odwrotnej wg: A

-1

=1/det(A) * D

T

>> 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) * D

T

=

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 po

dzielelić przez A (odpowiada to * A

-1

)

z

3

x 10
y = A

-1

18

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

Szukane

rozwiązanie

„Ręcznie” można obliczyć z wzoru Sarrusa:
1*5*0 + 3*2*1 + 1*2*1 – 1*5*1-1*2*1-0*2*3=1

background image

39

Zasada określania macierzy D dopełnień dla macierzy A

A=





D=

(-1)

1+1


5

2

1

0

(-1)

1+2

2

2

1

0

(-1)

1+3

2

5

1

1

(-1)

2+1



3

1

1

0

(-1)

2+2

1

1

1

0

(-1)

2+3

1

3

1

1

(-1)

3+1



3

1

5

2

(-1)

3+2

1

1

2

2

(-1)

3+3

1

3

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 D

T

jest jak niżej:

-2

1

1

2

-1

0

-3 2

-1

Mając det(A) i D

T

można obliczyć macierz odwrotna ze wzoru :

A

-1

=1/det(A) * D

T

Ponieważ tu 1/det(A) =1 Stąd mamy: A

-1

= D

T





1

3 1

2

5 2

1

1

0

Macierz wyjściowa A

-2

1

1

2

-1

0

-3 2

-1

Macierz obliczona „ręcznie” i otrzymana z Matlaba

poleceniem:

>> OdwrA=A^(-1)

%

są identyczne

Zasada
obliczania
dopełnienia
dla elementu
A[2, 2]


Wyszukiwarka

Podobne podstrony:
(Microsoft Word Cz II Matlab Srodow Pr konsol Wekt i macierze Przyk
Wprowadzenie do ekonometrii dla studentów część II, W tym przypadku y jest wektorem zaobserwowanych
Podstawowe zasady tworzenia projektu dla STM32F4 w środowisku uVision 4 czesc II
PRZEJŚCIA FAZOWE ŚRODOWISKOWO PODATNYCH ŻELI POLIMEROWYCH CZĘŚĆ II WYKORZYSTANIE WŁAŚCIWOŚCI ŻELI PO
Strukturalizm i stylistyka (część II)
Matlab środowisko programu
Pierwszy rok dziecka rozwój czesc II od urodzenia do 6 do 12 m cy
część II
ABC tynków część I i II
2009 czerwiec Egzamin pisemny czesc II
czesc VI, Ochrona środowiska, Ochrona i rekultywacja zbiorników wodnych
metoda 3R - cześć. II, PG, rok2
instrukcja - CHEMIA ORGANICZNA II, Inżynieria środowiska, inż, Semestr II, Chemia ogólna, laboratori
Ćwiczenia aparatu mowy CZĘŚĆ II
Walka klasykow z romantykami, materiały- polonistyka, część II
2008 styczeń Egzamin pisemny czesc II

więcej podobnych podstron