03 macierze2

background image

1

Operacje na macierzach

w programie

MATLAB

background image

2

Operacje na macierzach

Na zajęciach tych uwagę poświęcono następującym zagadnieniom:

algebrze liniowej,

tablicom,

funkcjom analizy danych.

background image

3

Algebra liniowa

Algebra liniowa zajmuje się liniowymi przekształceniami macierzy.
Na przykładzie macierzy magicznej Dürera przedstawione
zostanie szereg przykładów operacji macierzowych wykonywanych
w programie MATLAB:
 

» A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
 
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
 

Na

poprzednich

zajęciach

zaprezentowano

operację

transponowania macierzy, A'. Dodanie macierzy transponowanej
do macierzy źródłowej generuje macierz symetryczną.

background image

4

Algebra liniowa

» A + A'
ans =
32 8 11 17
8 20 17 23
11 17 14 26
17 23 26 2

Wymnożenie macierzy transponowanej przez macierz źródłową
również generuje macierz symetryczną:

» A'*A
ans =
378 212 206 360
212 370 368 206
206 368 370 212
360 206 212 378

.

background image

5

Algebra liniowa

Wyznacznik macierzy magicznej Dürera jest równy zeru co
oznacza, że jest to macierz osobliwa:
 

» d = det(A)
d =
0

 
Jeżeli macierz jest osobliwa, to niemożliwe jest odwrócenie
macierzy
. W przypadku wydania polecenia:

» X = inv(A)

otrzymujemy komunikat:

Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.175530e-

017.

 

background image

6

Algebra liniowa

W przypadku macierzy Z:

»

Z=[1 2 3;4 5 6;7 8 0]

 Z =
1 2 3
4 5 6
7 9 0
 

wyznacznik macierzy jest różny od zera:
 

» dz = det(Z)
dz =
27

  

background image

7

Algebra liniowa

Wartości własne macierzy magiczne są również interesujące:

» e = eig(A)
e =
34.0000
8.0000
0.0000
-8.0000

Jedna z wartości własnych jest równa zeru, co jest jedną z konsekwencji
osobliwości macierzy. Największa wartość własna macierzy 34 jest równa
magicznej sumie. W przypadku macierzy Z wartości własne są równe:

» ez = eig(Z)
ez =
-0.3884
12.1229
-5.7345

  

background image

8

Algebra liniowa

Polecenie programu MATLAB:

» [V,D] = eig(Z)

generuje macierz diagonalną D wartości własnych oraz pełną
macierz

V,

której

kolumny

wektorami

własnymi

odpowiadającymi określonym wartościom własnym:

Powyższe macierze spełniają następujący warunek: Z*V = V*D.

background image

9

Algebra liniowa

Jeżeli macierz magiczną przemnożymy przez jej magiczną sumę:

» P = A/34

otrzymujemy macierz stochastyczną, której kolumny i wiersze są
równe jedności:

P =
0.4706 0.0882 0.0588 0.3824
0.1471 0.2941 0.3235 0.2353
0.2647 0.1765 0.2059 0.3529
0.1176 0.4412 0.4118 0.0294
 

Powyższe macierze przedstawiają proces stochastyczny nazywany
procesem Markowa.
 

background image

10

Algebra liniowa

Kolejne potęgi macierzy zawierają kolejne kroki procesu. W
naszym przypadku piąta potęga macierzy P:
 

» P^5

 
wynosi:
 

0.2507 0.2495 0.2494 0.2504
0.2497 0.2501 0.2502 0.2500
0.2500 0.2498 0.2499 0.2503
0.2496 0.2506 0.2505 0.2493

 
Przy k dążącym do nieskończoności, wszystkie elementy k-tej
potęgi , P

k

, dążą do ¼.

background image

11

Tablice

W programie MATLAB tablicami są dwuwymiarowe macierze o
wartościach numerycznych. Operacje arytmetyczne na tablicach
wykonywane są element po elemencie – oznacza to, że dodawanie
i odejmowanie jest takie samo, jak w przypadku macierzy, zaś
mnożenie daje w rezultacie inne wyniki. W programie znak kropki .
oznacza, że występujący po niej operator arytmetyczny dotyczy
tablic oraz operacja będzie wykonywana element po elemencie.

background image

12

Tablice

Jeżeli kwadratową macierz magiczną Dürera przemnożymy
element po elemencie przez nią samą:
 

» A.*A

 
otrzymujemy tablicę zawierającą kwadraty liczb całkowitych z
przedziału od 1 do 16:
 

ans =
256 9 4 169
25 100 121 64
81 36 49 144
16 225 196 1

background image

13

Tablice

Operacje na tablicach są również wykorzystywane podczas generowania
nowych tablic. Niech n jest wektorem kolumnowym:

» n = (0:9)';

wówczas polecenie:

» pows = [n n.^2 2.^n]

generuje tablicę kwadratów i potęg dwójki:

pows =

0 0 1
1 1 2
2 4 4
3 9 8
4 16 16
5 25 32
6 36 64
7 49 128
8 64 256
9 81 512

background image

14

Tablice

Elementarne funkcje matematyczne wykonują operacje na tablicach element
po elemencie, np. polecenia:
 

» format short g
» x = (1:0.1:2)';
» logs = [x log10(x)]

 
buduje tablicę logarytmów:
 

logs =

1.0 0
1.1 0.04139
1.2 0.07918
1.3 0.11394
1.4 0.14613
1.5 0.17609
1.6 0.20412
1.7 0.23045
1.8 0.25527
1.9 0.27875
2.0 0.30103

background image

15

Operatory macierzowe i tablicowe

W tablicy zestawiono wyniki operacji dla macierzy A i B:

wykorzystując operatory macierzowe i tablicowe. Operatory
tablicowe poprzedzone są zawsze kropką, np.:

mnożenie macierzowe - gwiazdka *;
mnożenie tablicowe - kropka i gwiazdka (.*).

3

2

1

1

A

2

0

1

1

B

Operator

arytmetyczny

Operator

macierzowy

Operator tablicowy

dodawanie

tak, jak macierzowy

1

2

0

2

B

A

background image

16

Operatory macierzowe i tablicowe

Operator

arytmetyczny

Operator

macierzowy

Operator tablicowy

odejmowanie

tak, jak macierzowy

mnożenie

(brak przemienności
mnożenia macierzy)

5

2

2

0

B

A

8

2

3

1

B

*

A

6

4

2

1

A

*

B

6

0

1

1

A

*

.

B

B

*

.

A

background image

17

Operatory macierzowe i tablicowe

Operator

arytmetyczny

Operator macierzowy

Operator

tablicowy

dzielenie

dzielenie

prawostronne
(B=C1*A)

dzielenie lewostronne
(B=A*C2)

potęgowanie

8

2

3

1

A

/

B

1

C

3

/

2

0

1

1

B

\

.

A

A

/

.

B

0

3

1

3

B

\

A

2

C

11

8

4

3

A

*

A

2

^

A

9

4

1

1

2

.^

A

background image

18

Operatory macierzowe i tablicowe

Operator

arytmetyczny

Operator macierzowy

Operator

tablicowy

potęgowanie

tak, jak
macierzowy

3

1

2

1

'

A

Podczas mnożenia macierzowego A*B liczba wierszy
macierzy A
musi być równa liczbie kolumn macierzy
B
.

W rachunku macierzowym nie jest spełnione prawo
przemienności mnożenia
.

Transponowanie

macierzy

o

składnikach

rzeczywistych daje takie same wyniki niezależnie od
tego, czy wykorzystywany jest operator macierzowy, czy
tablicowy. Różnice pojawiają się, kiedy składniki macierzy
są zespolone
- otrzymujemy dodatkowo macierz o
elementach sprzężonych z odpowiednimi elementami
macierzy zespolonej.

background image

19

Operatory macierzowe i tablicowe

Jeśli:

to:

i

3

i

3

2

i

2

1

i

1

z

i

3

i

2

1

i

3

2

i

1

'

z

i

3

i

2

1

i

3

2

i

1

.'

z

background image

20

Macierze wielowymiarowe

W programie MATLAB możliwe jest definiowanie macierzy
wielowymiarowych. Odwoływania do elementów tych macierzy
wymaga liczby indeksów większej niż 2. Przyjmuje się, że
indeksy oznaczają:

pierwszy indeks - wiersz macierzy (wymiar 1);

drugi indeks - kolumnę macierzy (wymiar 2);

trzeci indeks - stronę macierzy (wymiar 3 i następne).

Macierz taką definiuje się stronami:

» D(:,:,1) =[1 3 0; 5 7 2]

{strona 1}

» D(:,:,2) =[4 7 8; 1 0 5]

{strona 2}

2

7

5

0

3

1

5

0

1

8

7

4

background image

21

Macierze wielowymiarowe

Odwołanie do elementu w pierwszym wierszu, drugiej kolumnie,
na stronie drugiej ma postać:

» D(1,2,2)

ans =

7

Macierze wielowymiarowe można także tworzyć za pomocą
funkcji generujących macierze:

» A = randn(3,5,4)

background image

22

Funkcje przekształcające macierze

utworzenie macierzy diagonalnej A ze składnikami wektora z na
głównej przekątnej:

» A = diag(x)

utworzenie wektora x z elementów znajdujących się na głównej
przekątnej macierzy A:

» x = diag(A)

utworzenie macierzy odwrotnej do A; inv(A)=A^(-1):

» inv(A)

utworzenie macierzy przez powielenie podmacierzy A m razy w
poziomie i n razy w pionie:

» repmat(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:

» reshape(A,n,m)

background image

23

Funkcje przekształcające macierze

obrócenie macierzy A o 90º w kierunku przeciwnym do ruchu
wskazówek zegara:

» rot90(A)

utworzenie z macierzy A macierzy trójkątnej dolnej (wyzerowanie
elementów znajdujących się powyżej głównej przekątnej):

» tril(A)

utworzenie z macierzy A macierzy trójkątnej górnej (wyzerowanie
elementów znajdujących się poniżej głównej przekątnej):

» triu(A)

background image

24

Działania na skalarach

Macierze i skalary można łączyć ze sobą na różne sposoby. Np.
wielkość skalarną można odjąć od macierzy przez odjęcie jej od każdego
elementu macierzy. Średnia wartość elementów macierzy magicznej jest
równa 8.5, stąd polecenie:
 

» B = A - 8.5

 
generuje macierz, której sumy elementów w kolumnach są równe zeru:

B =

7.5 -5.5 -6.5 4.5
-3.5 1.5 2.5 -0.5
0.5 -2.5 -1.5 3.5
-4.5 6.5 5.5 -7.5

 
» sum(B)
ans =
0 0 0 0

background image

25

Działania na skalarach

Podobnie jest w przypadku dodawania skalara do macierzy oraz
mnożenia, dzielenie przez skalar. W przypadku działań na skalarach
MATLAB przyporządkowuje wyszczególnioną wielkość skalarną
wszystkim elementom macierzy znajdującym się w danym zakresie.
Np. polecenie
 

» B(1:2,2:3) = 0

 
przyporządkowuje wartość równą zero danemu blokowi macierzy B :
 

B =
7.5 0 0 4.5
-3.5 0 0 -0.5
0.5 -2.5 -1.5 3.5
-4.5 6.5 5.5 -7.5

background image

26

Indeksy logiczne

Wektory logiczne są generowane przez operacje logiczne lub
operacje relacji. Mogą być one użyte do wyboru określonych
elementów macierzy. Niech X oznacza przykładową macierz, zaś L
jest macierzą o tym samym wymiarze – jest ona rezultatem
operacji logicznej na macierzy X. Wówczas X(L) wybiera te
elementy macierzy X, dla których elementy macierz Lróżne
od zera
.

Rodzaj indeksów może być wybrany poprzez określenie

logicznej operacji wykonywanej na indeksach. Załóżmy, że został
zdefiniowany następujący zbiór danych:
 

»

x =

2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8

gdzie NaN oznacza błędny pomiar. W celu usunięcia błędnych
pomiarów można użyć logiczne indeksowanie.

background image

27

Indeksy logiczne

Funkcja finite(x) przyjmuje wartość „prawda” w przypadku wartości
numerycznych, zaś fałsz dla wartości nienumerycznych NaN oraz w
przypadku nieskończoności Inf:
 

» x = x(finite(x))
x =
2.1 1.7 1.6 1.5 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8

Następujące polecenie usuwa z wektora danych elementy o
wartościach znacznie różniących się od „średnich” elementów
wektora – elementy, w przypadku których różnica od wartości
średniej wektora jest większa niż trzykrotne odchylenie standardowe:

» x = x(abs(x-mean(x)) <= 3*std(x))
x =
2.1 1.7 1.6 1.5 1.9 1.8 1.5 1.8 1.4 2.2 1.6 1.8

background image

28

Operacje logiczne i relacji

background image

29

Polecenie find

Funkcja find znajduje niezerowe elementy w macierzy i podaje ich
położenie (przyjmując, że wszystkie elementy macierzy tworzą wektor
zawierający kolejne kolumny macierzy). W najprostszej formie funkcja
find generuje wektor kolumnowy położeń elementów w macierzy. Np.
polecenie:
 

» k = find(isprime(A))'

 
znajduje położenia liczb pierwszych (funkcja isprime) w macierzy
magicznej przy użyciu jednowymiarowego indeksowania elementów:
 

k =
2 5 9 10 11 13

 
Wektor k zawiera indeksy elementów macierzy zawierające liczby
pierwsze.

background image

30

Polecenie find

Polecenie
 

» A(k)
ans =
5 3 2 11 7 13

 
wyświetla wartości wybranych elementów macierzy. W
przypadku, gdy indeks k zostanie użyty z lewej strony równania
macierz magiczną można przedstawić w następującej postaci:
 

» A(k) = NaN
A =
16 NaN NaN NaN
NaN 10 NaN 8
9 6 NaN 12
4 15 14 1

background image

31

Dziękuję za uwagę


Document Outline


Wyszukiwarka

Podobne podstrony:
03 macierze2id 4410 ppt
03 cwiczenie3 macierze2id 4342 ppt
Asystenci Macierewicza zastraszani Nasz Dziennik, 2011 03 16
03 Sejsmika04 plytkieid 4624 ppt
03 Odświeżanie pamięci DRAMid 4244 ppt
podrecznik 2 18 03 05
od Elwiry, prawo gospodarcze 03
Probl inter i kard 06'03
TT Sem III 14 03
03 skąd Państwo ma pieniądze podatki zus nfzid 4477 ppt
03 PODSTAWY GENETYKI
Wyklad 2 TM 07 03 09
03 RYTMY BIOLOGICZNE CZŁOWIEKAid 4197 ppt

więcej podobnych podstron