• Nie Znaleziono Wyników

Laboratorium komputerowe 6 Macierze

N/A
N/A
Protected

Academic year: 2021

Share "Laboratorium komputerowe 6 Macierze"

Copied!
8
0
0

Pełen tekst

(1)

1

Laboratorium komputerowe 6 Macierze – przykłady, zadania

1. Macierze – odwoływanie się do elementów, modyfikacje, wybrane funkcje.

1.1. Odwoływanie się do elementów macierzy.

Do elementów macierzy odwołujemy się podając numer wiersza i numer kolumny w nawiasach okrągłych. Przy czym możemy odwołać się albo do jednego elementu, albo do wielu elementów naraz (w szczególności do całego wiersza/całej kolumny czy wybranej podmacierzy).

W drugim przypadku można wykorzystać operator zakresu :, albo zapis wektorowy [], pozwalający zdefiniować wektory indeksów wierszy i kolumn. Indeksy wierszy/kolumn są liczbami naturalnymi od 1 do end.

Dla przypomnienia, operator zakresu używamy w następujący sposób:

początek : przyrost : koniec

Przy czym przyrost możemy pominąć i wówczas jego wartość domyślnie wynosi 1. Jeśli dodatkowo pominiemy początek oraz koniec i pozostawimy tylko sam operator :, wówczas odwołujemy się do całego zakresu (cały wiersz lub cała kolumna).

Przykład

Zdefiniujmy macierz

𝐴 = [

−2 0.5 −3 0.7 3 2

1.2 3.5 2.3 2.9 0.7 −1 0.2 3.1 5 −4 −1.4 2

]

A(1,3) % pierwszy wiersz, trzecia kolumna wynik: -3

A(2,end) % drugi wiersz, ostatnia kolumna wynik: -1

A(3,2:5) % trzeci wiersz, kolumny od drugiej

% do piątej wynik: [3.1 5 -4 -1.4]

A(3,1:2:end) % wiersz trzeci, kolumny nieparzyste wynik: [0.2 5 -1.4]

(2)

2

A(2,:) % drugi wiersz

wynik: [1.2 3.5 2.3 2.9 0.7 -1]

A(:,1) % pierwsza kolumna

wynik: -2 1.2 0.2

A(1,[1 6]) % wiersz pierwszy, kolumny: pierwsza

% i szósta wynik: [-2 2]

A([1,3],2) % wiersze: pierwszy i trzeci, kolumna druga wynik: 0.5

3.1

A([2,3],[1,end]) % wiersze: drugi i trzeci, kolumny:

% pierwsza i ostatnia wynik: 1.2 -1

0.2 2

Analogicznie możemy odwoływać się do elementu bądź elementów wektorów (wektor jest po prostu szczególnym typem macierzy).

1.2. Modyfikacje macierze – wstawianie, usuwanie, modyfikowanie wierszy i kolumn Przykład

Zdefiniujmy macierz i wektory:

A = [

2 −3 −1

4 1 2

7 −4 3

] 𝐚 = [ 1 2 3

] 𝐛 = [

−2

−3 1

] 𝐚 = [2 1 4 −1 3]

Wstawienie dodatkowej kolumny do macierzy:

A = [A a] % wstawienie dodatkowej kolumny po ostatniej

% kolumnie macierzy A

A = [a A] % wstawienie dodatkowej kolumny przed

% pierwszą kolumną macierzy A A = [A(:,1) b A(:,2:end)]

% wstawienie dodatkowej kolumny pomiędzy

% pierwszą i drugą kolumną macierzy A

(3)

3

Po wykonaniu trzech powyższych operacji uzyskujemy macierz:

A = [

1 −2 2 −3 −1 1

2 −3 4 1 2 2

3 1 7 −4 3 3

]

Usunięcie kolumny:

A(:,1) = [] % usunięcie pierwszej kolumny macierzy wynik:

A = [

−2 2 −3 −1 1

−3 4 1 2 2

1 7 −4 3 3

]

Modyfikacja kolumny:

A(:,5) = [1;1;1]

% zdefiniowanie piątej kolumny od nowa wynik:

A = [

−2 2 −3 −1 1

−3 4 1 2 1

1 7 −4 3 1

]

A(:,2) = 2*A(:,2) + A(:,5)

% pomnożenie drugiej kolumny przez dwa

% i dodanie do niej kolumny piątej wynik:

A = [

−2 5 −3 −1 1

−3 9 1 2 1

1 15 −4 3 1

]

A(:,1) = 0 % wyzerowanie pierwszej kolumny wynik:

A = [

0 5 −3 −1 1

0 9 1 2 1

0 15 −4 3 1

]

Wstawienie dodatkowego wiersza do macierzy:

A = [A; c] % wstawienie dodatkowego wiersza

% po ostatnim wierszu macierzy A wynik:

A = [

0 5 −3 −1 1

0 9 1 2 1

0 15 −4 3 1

2 1 4 −1 3

]

(4)

4

Usuwanie i modyfikowanie wierszy macierzy wykonywane jest analogicznie do usuwania i modyfikowania kolumn.

1.3. Sprawdzenie działania wybranych funkcji dla wektorów i macierzy.

max(), min(), mean()

dla wektorów: funkcja zwraca odpowiednio największy, najmniejszy, średni element;

dla macierzy: funkcja zwraca odpowiednio największy, najmniejszy, średni element w każdej kolumnie macierzy (w wyniku otrzymujemy wektor wartości największych, najmniejszych, średnich)

sort()

analogicznie jak powyżej, funkcja sortuje wektor lub każdą kolumnę macierzy sortrows()

funkcja sortuje macierz względem podanej kolumny Przykład

𝑎 = [−4 5 1 −3 7 1]

min(a)

wynik: -4 max(a)

wynik: 7 mean(a)

wynik: 1.1667

sort(a) %lub: sort(a, ’ascend’) wynik: [-4 -3 1 1 5 7]

sort(a, ’descend’)

wynik: [7 5 1 1 -3 -4]

𝐴 = [

3 1 3 −3 3

−1 6 3 −7 2

2 1 5 1 5

0 −5 2 1 2

7 2 1 4 1]

min(A)

wynik: [-1 -5 1 -7 1]

max(A)

wynik: [7 6 5 4 5]

(5)

5 mean(A)

wynik: [2.2 1.0 2.8 -0.8 2.6]

sort(A) %lub: sort(A, 1)

wynik:

[

−1 −5 1 −7 1

0 1 2 −3 2

2 1 3 1 2

3 2 3 1 3

7 6 5 4 5]

sort(A, 2) %sortowanie każdego wiersza macierzy wynik:

[

−3 1 3 3 3

−7 −1 2 3 6

1 1 2 5 5

−5 0 1 2 2

1 1 2 4 7]

%alternatywnie sortowanie każdego wiersza możemy uzyskać:

sort(A’)’

sortrows(A, 1) %sortowanie wierszy względem pierwszej

%kolumny wynik:

[

−1 6 3 −7 2

0 −5 2 1 2

2 1 5 1 5

3 1 3 −3 3

7 2 1 4 1]

sortrows(A, 3) %sortowanie wierszy względem trzeciej

%kolumny wynik:

[

7 2 1 4 1

0 −5 2 1 2

3 1 3 −3 3

−1 6 3 −7 2

2 1 5 1 5]

1.4. Funkcje generujące szczególne typy macierzy.

ones(n,m)

funkcja tworzy macierz o rozmiarach n x m wypełnioną jedynkami (w przypadku podania jednego argumentu zostanie utworzona macierz kwadratowa)

zeros(n,m)

funkcja tworzy macierz wypełnioną zerami

(6)

6 eye(n)

funkcja tworzy macierz jednostkową diag([2 1 3 -1 4])

funkcja tworzy macierz diagonalną – na przekątnej zostaną wstawione po kolei elementy z wektora podanego jako argument funkcji

rand(n,m)

funkcja tworzy macierz wypełnioną liczbami pseudolosowymi z przedziału (0, 1)

2. Zadania Przykład 1

Zdefiniować poniższą macierz i wektor:

A = [

−7 2 3.1 4

1 3 0.5 1

1.9 1.2 0 −3

2 0 −1 0.5

] 𝐚 = [

−𝟏 𝟑 𝟏

−𝟏 ]

Wykonać na macierzy A następujące operacje (z zachowaniem kolejności):

- wstawić wektor 𝐚 pomiędzy drugą i trzecią kolumnę macierzy A , - usunąć pierwszą kolumnę macierzy A ,

- zamienić miejscami pierwszy i ostatni wiersz macierzy A ,

- do wiersza drugiego dodać wiersz pierwszy pomnożony przez 0.5 ,

- utworzyć macierz B złożoną z drugiego i ostatniego wiersza oraz pierwszej i ostatniej kolumny macierzy A .

Obliczyć ślad macierzy B (ślad macierzy to suma elementów na przekątnej – można skorzystać z funkcji trace).

Rozwiązanie:

clear clc

A = [-7 2 3.1 4; 1 3 0.5 1; 1.9 1.2 0 -3; 2 0 -1 0.5]

a = [-1; 3; 1; -1]

A = [A(:,1:2) a A(:,3:end)]

A(:,1) = []

tmp = A(1,:);

A(1,:) = A(end,:);

A(end,:) = tmp

(7)

7 A(2,:) = A(2,:) + 0.5*A(1,:) B = A([2 end],[1 end])

wynik = trace(B)

Wynik: 7

Przykład 2

Napisać funkcję, która dla dowolnej macierzy 𝐴𝑛 × 𝑚 obliczy:

√∑ ∑ 𝐴2𝑖,𝑗

𝑚

𝑗=1 𝑛

𝑖=1

Wykonać powyższe zadanie na dwa sposoby:

a) Za pomocą pętli for.

b) Za pomocą funkcji sum().

Rozwiązanie:

a)

function s = normamacierzy1(A)

[n,m] = size(A); % odczytujemy rozmiar macierzy s = 0;

for i = 1:n % przechodzimy po wszystkich wierszach for j = 1:m % i dla każdego wiersza po

% wszystkich kolumnach macierzy

s = s + A(i,j)*A(i,j);

end end

s = sqrt(s);

end

(8)

8 b)

function s = normamacierzy2(A) s = sqrt(sum(sum(A.*A)));

end

Uwaga:

Sprawdzić obydwie funkcje dla tej samej macierzy. Przykładowo, zdefiniować w Command Window dowolną macierz i wywołać dla niej obydwie funkcje. Powinno się uzyskać taki sam wynik.

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

normamacierzy1(A) normamacierzy2(A) wynik: 6.6332

Zadania do samodzielnego wykonania zad. 1.

Utworzyć macierz wypełnioną liczbami pseudolosowymi całkowitymi z przedziału (−5, 10).

Obliczyć sumę i udział procentowy liczb dodatnich w danej macierzy.

Uwaga: można skorzystać z funkcji rand() oraz round().

zad. 2.

Napisać funkcję, która porównuje odpowiadające sobie elementy dwóch macierzy o tych samych rozmiarach: 𝐴𝑛 × 𝑚 oraz 𝐵𝑛 × 𝑚. W wyniku funkcja ma zwracać ile elementów 𝐴𝑖,𝑗 jest większych od odpowiadających im elementów 𝐵𝑖,𝑗. Funkcja powinna sprawdzać czy obydwie macierze mają taki sam rozmiar i wykonywać porównania tylko w takim przypadku.

zad. 3.

Napisać funkcję, która sprawdza czy podana macierz jest macierzą kwadratową, a następnie zlicza, ile jej elementów jest podzielnych przez 2. Jeśli macierz nie jest kwadratowa funkcja ma tylko wyświetlić stosowny komunikat.

Uwaga: skorzystać z funkcji mod(a,b), która zwraca resztę z dzielenia liczby a przez b.

Cytaty

Powiązane dokumenty

Jako siedmiolatek, wspomagany przez Elementarz muzyczny autorstwa swojej matki, „uczy się »porządnie« i systematycznie tylko muzyki”.7 Zapał muzyczny Witkacego z

Pewnie nie będzie dużym ryzykiem wyciągnięcie z poezji Maja, a zwłaszcza Polkowskiego, wniosku, że współzależność motywu miłości i śmierci osiąga u tych

Autorka recenzowanej pracy pre­ zentuje przegląd badań na temat innego postrzegania małżeństwa przez żony i mężów w wielu istotnych aspektach życia

Funkcja obliczająca

reżyserów, aktorów i publiczności. Okazuje się, że to jest najbar- dziej potrzebne zarówno twórcom, jak i filmoznawcom. - Może bierze się to z tego, że poetę czy

Po zapoznaniu się z głównym ideologiem nurtu sceptycyzmu a więc Pyrronem chciałbym abyście poznali poglądy drugie przedstawiciela sceptycyzmu jakim był filozof Sekstus..

210 skonfigurować macierz RAID5 na 3,4,5 dyskach i wykonać pomiar wydajności. Wypełnić

w prowadzonym postępowaniu o udzielenie zamówienia publicznego, którego przedmiotem jest: Dostawa i przesył/ dystrybucja energii cieplnej do budynku Gimnazjum nr 46 im..