PMKwOI, PMKwOI wyk2, Podstawy Metod Komputerowych w Obliczeniach Inżynierskich


Podstawy Metod Komputerowych w Obliczeniach Inżynierskich . WYKŁAD-2

MACIERZE PUSTE

Przypisanie macierzy pustej elementowi macierzy lub pod macierzy) powoduje usunięcie tego fragmentu z macierzy.

Uwaga: usuwany fragment może powodować zmianę wymiarów macierzy.

A =

5 -6 4 6

-2 4 5 8

2 4 7 9

3 5 8 1

>> A(:,1:3)=[] % usunięcie trzech pierwszych kolumn macierzy A

A =

6

8

9

1

>> A(2:3,3)=[]

??? Indexed empty matrix assignment is not allowed.

OPERATORY

Wyrażenia w MATLAB-ie buduje się stosując różnego rodzaju operatory. Priorytet (kolejność działania) operatorów jest następujący:

OPERATORY ARYTMETYCZNE

W MATLAB-ie wykonuje się za pomocą operatorów dwa rodzaje operacji arytmetycznych na macierzach:

***

OPERACJE MACIERZOWE

Działania na macierzach

Zapis symboliczny

Składnia języka MATLAB

Dodawanie, odejmowanie

A + B, A - B

A + B, A - B

Transpozycja1)

AT

A'

Iloczyn macierzy

AB

A*B

Iloczyn macierzy przez wektor

Ax

A*x

Iloczyn skalarny

xTy

x'*y, dot(x,y)

Iloczyn zewnętrzny

xyT

x*y'

Iloczyn wektorowy2)

x×y

cross(x,y)

Macierz odwrotna

A-1

inv(A), / , \

Potęgowanie macierzy3)

An

A^n

Wyznacznik

det(A)

det(A)

Uwarunkowanie macierzy

cond(A)

cond(A), rcond(A)

Rząd macierzy

rank(A)

rank(A)

1) Jeżeli macierz A ma elementy zespolone to po transponowaniu elementy będą sprzężone.

2) Operacja iloczynu wektorowego jest definiowana tylko dla N=3.

3) Macierz A musi być kwadratowa a wykładnik n musi być skalarem.

OPERACJE TABLICOWE

Działania na tablicach

Zapis symboliczny

Zapis indeksowy

Składnia języka MATLAB

Dodawanie, odejmowanie

A + B, A - B

ajk + bjk , ajk - bjk

A + B, A - B

Iloczyn

AB

aijbij

A .* B

Dzielenie

A÷B

aij / bij

A ./ B, B .\ A

Potęgowanie

AB

(aij)bij

A .^ B

Transpozycja4)

A°

aji

A .'

4) Tablicowa transpozycja macierzy zespolonej różni się od transpozycji macierzowej jedynie tym, że nie przekształca elementów w elementy sprzężone.

DODAWANIE, ODEJMOWANIE MACIERZOWE

Przykład:

» A=[1 -1 2; -2 3 1]

» B=[1 1 1; 0 -2 2]

» A+B

ans =

2 0 3

-2 1 3

» A-B

ans =

0 -2 1

-2 5 -1

Dodanie do elementów macierzy A liczby 2.15:

A =

1 -1 2

-2 3 1

>> A+2.15

ans =

3.1500 1.1500 4.1500

0.1500 5.1500 3.1500

MNOŻENIE MACIERZY w sensie Cauchy

Przykład:

Zdefiniuj dwie macierze A i B, a następnie oblicz ich iloczyn oraz pomnóż elementy macierzy A przez 2.

A = %(2 x 4)

1 1 0 3

2 1 1 4

B = %(4 x 1)

2

2

2

4

Iloczyn macierzy A przez wektor B. Liczba kolumn macierzy A musi być równa liczbie wierszy macierzy B!

>> A*B %(2 x 1)

ans =

16

24

Iloczyn macierzy przez liczbę:

>> A*2

ans =

2 2 0 6

4 2 2 8

TRANSPOZYCJA

Przykład:

Zdefiniuj macierz A, i dokonaj transpozycji.

>> A=[1 2 3; 0 9 8; 3 4 7]

A =

1 2 3

0 9 8

3 4 7

>> A'

ans =

1 0 3

2 9 4

3 8 7

Jeżeli macierz jest zespolona to operator transpozycji dodatkowo zmienia znak części urojonej elementów zespolonych. Niech dane będą dwa wektory a, b

>> a=[1 3 2]

>> b=[3 4 5]

>> C1=(a+i*b) % lub C1=[a+i*b]

C1 =

1 + 3i 3 + 4i 2 + 5i % postać macierzy zespolonej

>> C2=[a+i*b]'

C2 = % postać macierzy transponowanej

1 - 3i

3 - 4i

2 - 5i

ODWRACANIE MACIERZY

>> A=[1 2 3; 0 9 8; 3 4 7]

A =

1 2 3

0 9 8

3 4 7

>> inv(A)

ans =

-15.5000 1.0000 5.5000

-12.0000 1.0000 4.0000

13.5000 -1.0000 -4.5000

Sprawdzenie:

>> I=inv(A)*A

I = % macierz jednostkowa

1 0 0

0 1 0

0 0 1

DZIELENIE MACIERZY

C =

1 1 0

2 1 1

6 3 5

D =

2 5 6

4 3 2

2 1 2

>> C\D % lewostronne dzielenie macierzy - równoważne operacji inv(C)*D

ans =

7 2 -2

-5 3 8

-5 -4 -2

>> C/D % prawostronne dzielenie macierzy - równoważne operacji D* inv(C)

ans =

0 1/2 -1/2

-1/12 1/3 5/12

-1/12 1/3 29/12

ILOCZYN SKALARNY i ZEWNĘTRZNY

Przykład

Zdefiniuj wektor kolumnowy x, a następnie oblicz sumę kwadratów elementów tego wektora.

>> x=[1 2 3]'

x =

1

2

3

>> x'*x % iloczyn skalarny

ans =

14

>> x*x' % iloczyn zewnętrzny

ans =

1 2 3

2 4 6

3 6 9

OPERACJE TABLICOWE

Działanie tablicowe jest działaniem, które przekształca poszczególne elementy macierzy oddzielnie.

Przykład:

Zdefiniuj dwie macierze A i B, a następnie wykonaj działania mnożenia, dzielenia i potęgowania tablicowego.

>> A=[5 -6 2; -2 4 1]

A =

5 -6 2

-2 4 1

>> B=[5 2 2; -1 -2 1]

B =

5 2 2

-1 -2 1

>> A.*B

ans =

25 -12 4

2 -8 1

>> A./B % prawostronne dzielenie tablic - wynik macierz o elementach A(i,j)/B(i,j)

ans =

1 -3 1

2 -2 1

>> A.\B % lewostronne dzielenie tablic - wynik macierz o elementach B(i,j)/A(i,j)

ans =

1.0000 -0.3333 1.0000

0.5000 -0.5000 1.0000

ans = % format rat

1 -1/3 1

1/2 -1/2 1

Wniosek: A.\B jest równe B./A

POTĘGOWANIE TABLICOWE

Operacja Z=X.^Y jest wykonywana poprawnie jeśli X i Y są macierzami o tym samym rozmiarze lub gdy jedna z nich jest wartością skalarną

(podniesienie elementów macierzy X do drugiej potęgi):

X=

2 3

3 4

>> Y=[1 2; 2 1]

Y =

1 2

2 1

>> X.^Y

ans =

2 9

9 4

TRANSPOZYCJA TABLICOWA

Transpozycja tablicowa macierzy zespolonej Z:

>> Z=[1 + i*2 3 + i*3; 2 + i*2 3 + i*8]

Z =

1 + 2i 3 + 3i

2 + 2i 3 + 8i

>> ZTT=[1+i*2 3+i*3;2+i*2 3+i*8].' % Tablicowa transpozycja macierzy zespolonej różni się od transpozycji macierzowej jedynie tym, że nie przekształca elementów w elementy sprzężone.

ZTT=

1 + 2i 2 + 2i

3 + 3i 3 + 8i

>> ZTM=[1+i*2 3+i*3;2+i*2 3+i*8]' % przypomnienie - transpozycja macierzowa !

ZTM =

1 - 2i 2 - 2i

3 - 3i 3 - 8i

FUNKCJE TABLICOWE

Funkcje tablicowe podobnie jak operatory tablicowe pozwalają przekształcać poszczególne elementy macierzy np.:

A =

5 -6 2

-2 4 1

1 3 3

>> sin(A) % argument funkcji w radianach

ans =

-0.9589 0.2794 0.9093

-0.9093 -0.7568 0.8415

0.8415 0.1411 0.1411

OPERACJE NA ŁAŃCUCHACH

Uzupełniającym typem danych w języku MATLAB jest łańcuch tekstowy.

Do definiowania zmiennej tego typu stosuje się apostrofy ograniczające łańcuch, np.:

>> s= 'Student trzeciego semestru'

s =

Student trzeciego semestru

Na zmiennych typu łańcuchowego można dokonywać niektórych działań macierzowych, na

przykład transpozycji lub łączenia:

>> a=[s,' Jan Kowalski']

a =

Student trzeciego semestru Jan Kowalski

Konwersja wartości numerycznych na tekst (int2str) i na odwrót jest wykorzystywana np. do tworzenia napisów na rysunkach:

x=0.3; y=0.9; n=4;

>> text(x,y,['Wykres wielomianu',blanks(3), int2str(n), '-go rzedu'])

0x01 graphic

Zmienna typu łańcuchowego może zawierać nazwę instrukcji, którą można wykonać używając funkcji eval.

Przykład:

» t=[0:0.2:1];

» s=`sin(t)';

» eval(s)

ans =

0 0.1987 0.3894 0.5646 0.7174 0.8415

Można wysyłać na ekran wywołanie zachęty oczekujące na wprowadzenie przez użytkownika

danej wartości lub łańcucha znaków, np.:

>> a=input('Podaj wartość parametru a: ')

Podaj wartość parametru a: 2.34

a =

2.3400

lub

>> wzor=input('Podaj wzór funkcji f(x): ','s')

Podaj wzór funkcji f(x): sin(x)

wzor =

sin(x)

UWAGA:

Użycie parametru `s' w funkcji input powoduje, iż wprowadzona dana jest traktowana jako

łańcuch znaków.

OPERATORY RELACJI i LOGICZNE W JĘZYKU MATLAB

Symbol

Operator relacji

Symbol

Operator logiczny

<

mniejsze

&

AND (koniunkcja)

< =

mniejsze równe

>

większe

|

OR (alternatywa)

> =

większe równe

= =

równe

~

NOT (negacja)

~ =

różne

Argumentami relacji mogą być porównywane macierze o takich samych wymiarach;

Wynikiem jest macierz, której elementy przyjmują wartości zero lub jeden w zależności od spełnienia relacji.

Przykład użycia operatora relacji:

A =

5 -6 2

-2 4 1

1 3 3

B =

3 2 1

-3 5 7

4 2 5

x = 4

>> A>=B

ans =

1 0 1

1 0 0

0 1 0

>> B<x

ans =

1 1 1

1 0 0

0 1 0

Przykład użycia operatora logicznego:

ALGEBRA LINIOWA

det(A) - obliczanie wyznacznika macierzy A

eig(A) - obliczanie wartości własnych macierzy A

poly(A) - obliczanie współczynników wielomianu charakterystycznego macierzy A

rank(A) - obliczanie rzędu macierzy A

diag(A) - wyznaczanie elementów leżących na głównej przekątnej macierzy A

• Przykład:

Zdefiniuj macierz A o wymiarze 4x4, a następnie wyznacz jej wyznacznik, wartości własne,

współczynniki wielomianu charakterystycznego oraz zbadaj rząd macierzy.

» A=[1 3 0 -2; 2 0 3 -1; 0 5 0 0; 1 0 2 0];

» det(A)

ans =

0

» eig(A)

ans =

-4.5414

4.0000

1.5414

0.0000

» poly(A)

ans =

1.0000 -1.0000 -19.0000 28.0000 0.0000

» rank(A)

ans =

3



Wyszukiwarka