You are on page 1of 10

Podstawy Informatyki 3 – ćwiczenia01

Podstawy Informatyki
Programowanie w Matlab

Wstęp
Czym jest Matlab?
MATLAB (Matrix Laboratory) to pakiet programowy, który przeznaczony jest do wykony-
wania złożonych obliczeń numerycznych oraz graficznej prezentacji wyników. Pakiet stanowi
interaktywne środowisko łączące obliczenia, wizualizację i programowanie. Daje użytkowni-
kowi możliwość korzystania z setek wbudowanych funkcji obliczeniowych, które wykorzy-
stują sprawdzone metody numeryczne, oraz z funkcji graficznych i animacyjnych. Dostępne
funkcje pozwalają w prosty sposób rozwiązać wiele problemów inżynierskich bez konieczno-
ści posiadania gruntownej wiedzy o szczegółach zastosowanej metody numerycznej. Oblicze-
nia wykonywane w Matlabie są wiarygodne, gdyż biblioteki Matlaba zawierają sprawdzone
funkcje pisane w większości przez specjalistów, nie powinny więc zawierać błędów. Oczywi-
ście możliwa jest w niektórych obliczeniach kumulacja błędów wynikająca z niedokładności
reprezentacji numerycznej danych, i w takich przypadkach Matlab ostrzega o możliwej nie-
dokładności wyników.

Matlab może pracować w trybie interakcyjnym przez wykonywanie poszczególnych poleceń


z linii komend, jak również w trybie wsadowym przez wykonywanie instrukcji z pliku zawie-
rającego kolejne polecenia (tzw. m-pliki).
Dla bardziej ambitnych użytkowników Matlab daje możliwość modyfikowania kodów źró-
dłowych dostępnych funkcji oraz oprogramowania własnych metod i rozwiązań. W gruncie
rzeczy Matlab jest językiem wysokiego poziomu, co pozwala na samodzielną rozbudowę za-
kresu zastosowań poprzez tworzenie własnych skryptów i funkcji. Niezwykle istotną cechą
Matlaba jest jego otwarta struktura. Ze środowiska Matlaba można wywoływać własne funk-
cje pisane w samym języku Matlaba, jak również funkcje pisane w innych językach progra-
mowania, np. w Fortranie czy C. Funkcje pisane przez użytkownika działają w taki sam spo-
sób jak funkcje wbudowane Matlaba.
Programiści Matlaba udostępnili kilkadziesiąt dodatkowych tzw. zestawów narzędziowych
(toolbox), które przeznaczone są do wykonywania zadań specjalnych, takich jak obliczenia
statystyczne, optymalizacyjne, projektowanie systemów kontroli, przetwarzania sygnałów,
przetwarzania obrazów i wiele innych. Na uwagę zasługuje Symbolic Math Toolbox, który
pozwala na wykonywanie obliczeń symbolicznych (np. rozwiązywanie równań na symbolach
bez podstawiania danych) oraz Simulink dający możliwość symulacji różnych układów dy-
namicznych.

Matlab jest programem komercyjnych firmowanym przez The MathWorks Incorporated


(http://www.mathworks.com). Istnieją również inne podobne środowiska obliczeniowe: jedne
ukierunkowane na obliczenia numeryczne (Scilab, Octave, MathCAD), inne na obliczenia
symboliczne (Mathematica, Maple).
O sile i popularności Matlaba decydują zasobne biblioteki sprawdzonych funkcji gromadzone
w toolbox’ach, które pokrywają podstawowe potrzeby obliczeniowe w wielu dziedzinach
nauki i techniki. Możliwość modyfikowania tych funkcji na poziomie kodu źródłowego oraz
możliwość tworzenia i integrowania własnych funkcji daje wręcz nieograniczone możliwości
zastosowań tego pakietu.

Strona 1 z 10
Podstawy Informatyki 3 – ćwiczenia01

Interfejs
Głównym oknem Matlaba jest Command Window. Praca w trybie bezpośrednim (interak-
tywnym) polega na wpisywaniu poleceń w tekstowym oknie poleceń. Ten sposób komunika-
cji z programem, choć przypomina dawne systemy operacyjne, nie powinien odstraszać użyt-
kowników zdominowanych przez współczesne, wszechobecne interfejsy graficzne. Okazuje
się bowiem, że od trybu bezpośredniego do pośredniego, czyli do programowania, jest tylko
jeden krok. Skrypty, o których będzie mowa w dalszych ćwiczeniach, to nic innego, jak wiele
poleceń zapisanych w jednym pliku i uruchamianych jednym poleceniem.
Obok okna poleceń, które jest niezbędne do komunikacji z programem, użytkownik ma do
dyspozycji kilka okien pomocniczych. Są to Command History, Current Directory, Work-
space, Launch Pad, Profiler, Help. Rysunek 1 przedstawia typowy układ okien. W oknie
poleceń pojawiają się polecenia wydawane przez użytkownika oraz wyniki (odpowiedzi) Ma-
tlab. Historia poleceń zawiera wszystkie polecenia wydane w bieżącej sesji natomiast works-
pace to lista aktualnie dostępnych zmiennych wraz z informacją o rozmiarze i typie elemen-
tów.

Rys. 1 Standardowy układ okien Matlaba

Polecenia języka Matlab


Większość poleceń Matlaba ma postać

[A B C …] = polecenie(a, b, c, …)

gdzie A, B, C… oznaczają wyjścia czyli wyniki danego polecenia, natomiast a, b, c, …


to argumenty wejściowe. Często możliwe jest pominięcie podawania nazw zmiennych wyj-
ścia. Wynik polecenia zapisywany jest wtedy do zmiennej o standardowej nazwie ans.
Bez dużej wiedzy na temat Matlaba w oknie komend można prowadzić obliczenia w stylu
kalkulatorowym zarówno na liczbach rzeczywistych, jak i na liczbach zespolonych, wykorzy-

Strona 2 z 10
Podstawy Informatyki 3 – ćwiczenia01

stując przy tym predefiniowane stałe (np. liczbę pi) oraz intuicyjne nazwy funkcji (np.
sin(x), cos(x) czy log(x)).
Po uruchomieniu Matlab zgłasza się znakiem >>, który oznacza gotowość wykonania polece-
nia.

Przykład 1.1.
W pierwszym ćwiczeniu sprawdźmy czy 2+3 to na pewno 5. W Matlab działanie to można
zrealizować na wiele sposobów. Spróbujmy najprostszego, najbardziej intuicyjnego. Po znaku
gotowości >> wpiszmy:

2+3 (1.1)

Odpowiedź:

ans =

Zgodnie z oczekiwaniami. Użyliśmy działania matematycznego (dodawanie) nie definiując


uprzednio składników jako zmienne. Podobnie nie zadeklarowaliśmy zmiennej wynikowej i
dlatego właśnie została utworzona zmienna ans, w której został zapisany wynik dodawania.

Wpiszmy:

who (1.2)

W odpowiedzi zobaczymy listę aktualnie dostępnych zmiennych:

Your variables are:

ans

Jeżeli wpiszemy:

ans (1.3)

Matlab odpowie:

ans =

wyświetli zatem wartość zmiennej o nazwie ans. Spróbujmy teraz to samo działanie prze-
prowadzić w sposób nieco bardziej formalny. Zdefiniujmy dwie zmienne a=2 oraz b=3 na-
tomiast zmiennej c przypiszmy wartość wyrażenia a+b. W oknie poleceń wpiszmy:

a=2; b=3; c=a+b (1.4)

Odpowiedź Matlaba

Strona 3 z 10
Podstawy Informatyki 3 – ćwiczenia01

c =

Wiersz (1.4) wprowadza trzy nowe elementy:


• definiowanie zmiennych
• wydawanie kilku poleceń w jednym wierszu
• wydawanie poleceń bez wyświetlania odpowiedzi

Po kolei. Polecenie a=2 przypisuje zmiennej o nazwie a wartość 2. Średnik na końcu polece-
nia wskazuje na to, że nie oczekujemy wyświetlania wyniku polecenia (jest on oczywiście
przechowywany w pamięci programu) oddzielając jednocześnie kilka poleceń wpisanych w
jednym wierszu. Polecenie c=a+b przypisuje zmiennej c sumę a i b. Ponieważ po ostatnim
poleceniu nie ma średnika Matlab wyświetla wartość zmiennej c (czyli 5).
Jeżeli jednak chcemy zobaczyć odpowiedź Matlab na wszystkie polecenia wpisywane w jed-
nym wierszu, powinny one być oddzielone przecinkami.

Proszę wykonać poniższe polecenia zwracając za każdym razem baczną uwagę na odpowie-
dzi generowane przez program.

a=2, b=3, c=a+b (1.5)


a=2, b=3, c=a+b; c (1.6)
a=2; b=3; c=a+b; c (1.7)

Wpisując teraz komendę who w odpowiedzi zobaczymy listę wszystkich zmiennych znajdu-
jących się w pamięci (w tzw. przestrzeni roboczej). Zmienne te możemy również zobaczyć
aktywując zakładkę okna pomocniczego Workspace.

Ćwiczenie 1.1.
Wykonaj kolejno następujące polecenia:

log(2) - logarytm naturalny


log(2.7183)
exp(1) - liczba e
log(exp(1))
log10(2.7183) – logarytm przy podstawie 10
log10(10)
pi
sin(pi/2)
2^3
sin(0.4)^2+cos(0.4)^2
z1=1+2i – liczba zespolona
z2=10j – liczba zespolona
real(z1) – część rzeczywista liczby zespolonej
imag(z1) – część urojona liczby zespolonej
sqrt(-1) – pierwiastek kwadratowy z liczby -1
i^2
sqrt(-4)
1/0

Strona 4 z 10
Podstawy Informatyki 3 – ćwiczenia01

Zmienne
Elementem wyróżniającym Matlab spośród innych języków jest przyjęty format zmiennych:
są nim wyłącznie macierze (stąd nazwa Matlab: Matrix Laboratory). W formie macierzy za-
pisywane są zarówno zmienne numeryczne, jak i logiczne czy tekstowe. Szczególnym przy-
padkiem są wektory – macierze jednokolumnowe lub jednowierszowe i liczby – macierze o
wymiarze 1×1. (Sprawdź w oknie Workspace, że zmienne a, b i c z poprzedniego przykładu
to nic innego jak macierze o wymiarze 1×1. Również polecenie whos pozwoli wyświetlic
nazwy i wymiary zmiennych). W ogólnym przypadku zmienne mają wymiar dowolny.
Zmienną w Matlab można zdefiniować na wiele sposobów:
• wprowadzając elementy w wierszu poleceń
• generując elementy
• budując z innych macierzy
• wykorzystując mieszankę powyższych technik
Nazwy zmiennych w Matlabie powinny zaczynać się od litery i nie powinny zawierać spacji,
polskich liter i znaków zastrzeżonych (np. operatorów arytmetycznych +, * itp.). Trzeba rów-
nież pamiętać, że Matlab rozróżnia wielkość liter, tzn. odróżnia litery małe od wielkich.
Zatem zmienne y0 i Y0 oznaczają dwie różne zmienne.

Wektory (macierze jednowierszowe lub jednokolumnowe)


Wektory w Matlabie tworzy się najczęściej podając w nawiasach kwadratowych kolejne ele-
menty oddzielone spacjami lub przecinkami, albo generuje się wektory automatycznie (w tym
przypadku można zrezygnować z nawiasów kwadratowych).

Przykład 1.2.
Wpisz następujące polecenia:
X=[2, 5, 7, 8] – wektor wierszowy
Y=[1, 2, 4]’ - wektor kolumnowy; uwaga: znak ’oznacza transpozycję wektora
X=X’
W=1:6 - generowanie elementów od 1 do 6 z domyślnym krokiem 1
Z=0:0.1:1 - generowanie elementów od 0 do 1 z krokiem 0.1

Polecenie w postaci Z=i:j:k generuje i przypisuje zmiennej Z ciąg liczb od i do k z kro-


kiem j. Proszę również zwrócić uwagę na różnicę pomiędzy wektorem X i Y. Pierwszy z nich
jest wektorem wierszowym (macierzą 1×4) drugi kolumnowym (macierzą 3×1). Znak ’ (apo-
strof) oznacza transpozycję macierzy. Proszę porównać także tę parę macierzy:

Jednym z przykładów wykorzystania wektora o elementach z zadanego przedziału jest tabli-


cowanie funkcji.

Przykład 1.3.
Proszę sprawdzić wynik polecenia:
sin(0:pi/4:2*pi)
Alternatywnie wektor zawierający wartości funkcji sinus w przedziale <0, 2π> można uzy-
skać w następujący sposób:
alfa=0:pi/4:2*pi; sin(alfa)
Polecenie powyższe jest doskonałym przykładem macierzowej natury środowiska Matlab.
Polecenie sin(alfa) zwraca macierz o wymiarach macierzy alfa. Użytkownik nie musi
troszczyć się, czy jest to liczba, wektor czy macierz dwu- lub wielowymiarowa.

Strona 5 z 10
Podstawy Informatyki 3 – ćwiczenia01

Macierze dwuwymiarowe
Elementy macierzy dwuwymiarowych podaje się w nawiasach kwadratowych wpisując ele-
menty wiersza oddzielone spacjami natomiast same wiersze oddzielone są średnikami.
Wpiszmy:
a=[11 12 13;21 22 23] (1.8)

W wyniku otrzymujemy:
a =

11 12 13
21 22 23

Zdefiniowaliśmy macierz wprowadzając wszystkie jej elementy w jednym poleceniu. Taki


sam efekt można uzyskać odwołując się do każdego z elementów z osobna. Wpiszmy w
trzech wierszach, każdy zakończony Enter:
clear a (1.9)
a(1,1)=11, a(1,2)=12, a(1,3)=13, ... (1.10)
a(2,1)=21, a(2,2)=22, a(2,3)=23 (1.11)

Polecenia (1.9), (1.10) i (1.11) dają dokładnie taki sam efekt jak polecenie (1.8). Pojawiają się
natomiast godne uwagi możliwości:
• usuwanie zmiennej z workspace clear <nazwa>
• adresowanie elementów macierzy nazwa(i,j)
• kontynuacja długiego polecenia ...

Sprawdźmy zatem jaką odpowiedź dostaniemy wpisując:

a(2,2)/a(1,1) (1.12)

Wynik to 2. Podzieliliśmy element z drugiego wiersza i drugiej kolumny przez element z


pierwszego wiersza i pierwszej kolumny.

Zauważmy również, że pisząc polecenie:


b= [1; 5; 7] (1.13)
zdefiniujemy macierz o wymiarach 3 × 1, czyli wektor jednokolumnowy.

Kolejnym sposobem zapełnienia macierzy liczbami jest skorzystanie z jednego z wbudowa-


nych w Matlab generatorów macierzy. Poniższa tabelka zawiera listę najczęściej używanych
poleceń tworzących macierze.

Funkcja Opis
macierz o wymiarach m×n z jedynkami na głównej przekątnej (macierz
eye(m,n)
jednostkowa gdy m=n; można wywołać w skróconej postaci eye(n))
ones(m,n) macierz m×n o wszystkich elementach równych 1
zeros(m,n) macierz m×n o wszystkich elementach równych 0
macierz m×n liczb pseudolosowych o rozkładzie jednostajnym na prze-
rand(m,n)
dziale <0, 1>
macierz m×n liczb pseudolosowych o rozkładzie normalnym o wartości
randn(m,n)
średniej 0 i wariancji 1

Strona 6 z 10
Podstawy Informatyki 3 – ćwiczenia01

Przykład 1.4.
Proszę wykonać poniższe polecenia zwracając za każdym razem baczną uwagę na odpowie-
dzi generowane przez program.

a=eye(5) (1.14)
a=eye(3,5) (1.15)
a=ones(3) (1.16)
a=rand(5) (1.17)

Kolejnym sposobem definiowania macierzy jest wykorzystanie kolumn, wierszy lub pojedyn-
czych elementów macierzy istniejących w przestrzeni roboczej. Poniższa tabela zawiera sze-
reg metod i funkcji pomocnych w tego typu operacjach macierzowych.

Polecenie Opis
A(i,j) element z i-tego wiersza oraz j-tej kolumny macierzy A
A(i,:) i-ty wiersz macierzy A
A(:,j) j-ta kolumna macierzy A
A(i,m:n) wszystkie elementy z i-tego wiersza o numerach od m do n
macierz złożona z wierszy o numerach od k do l i kolumn od m do n
A(k:l,m:n)
macierzy a
A lub A(:,:) cała macierz A
disp(A) wyświetla zawartość macierzy A bez zamieszczania nazwy zmiennej
ndims(A) wyświetla liczbę wymiarów macierzy A
wyświetla wektor wierszowy zawierający liczbę elementów w każ-
size(A)
dym z wymiarów macierzy A
zwraca liczbę elementów w pierwszym wymiarze macierzy A, dla
size(A,1)
macierzy dwuwymiarowej jest to liczba wierszy
Jeśli A jest wektorem to tworzy macierz ze składnikami wektora A na
diag(A) głównej przekątnej. Jeśli A jest macierzą to zwraca wektor złożony z
elementów znajdujących się na diagonali macierzy A
inv(A) tworzy macierz odwrotną do A
repmat(A,n,m) powielenie macierzy A n razy w pionie i m razy w poziomie
rot90(A) obrócenie macierzy A o 90° przeciwnie do ruchu wskazówek zegara
scalenie macierzy A i B ze względu na wiersze (macierz B przyklejo-
cat(1,A,B)
na pod macierzą A) . Taki sam efekt uzyskamy poleceniem [A; B]
scalenie macierzy A i B ze względu na kolumny (macierz B przykle-
cat(2,A,B)
jona z prawej strony do macierzy A), odpowiednik polecenia [A B]

Ćwiczenie 1.2.
Wykorzystując różne polecenia proszę zbudować macierz, która na przekątnej prostopadłej do
przekątnej głównej będzie miała wartości od 2 do 5 (licząc od lewego, dolnego rogu). Pozo-
 0 0 0 5
 0 0 4 0
stałe elementy mają być zerami, czyli:  
 0 3 0 0
 
 2 0 0 0

Strona 7 z 10
Podstawy Informatyki 3 – ćwiczenia01

Działania macierzowe i tablicowe


Matlab jest systemem, który w sposób szczególny przystosowany jest do wykonywania ope-
racji macierzowych. Należy przy tym rozróżnić działania macierzowe, wykonywane zgodnie
z zasadami algebry, od operacji tablicowych wykonywanych element po elemencie. W przy-
padku dodawania i odejmowania oraz transpozycji efekt jest taki sam. Różnice pojawiają się
przy mnożeniu, dzieleniu oraz potęgowaniu. Operatory działań zebrane są w poniższej tabeli:

Działanie Operator macierzowy Operator tablicowy


dodawanie + +
odejmowanie - -
mnożenie a*b a.*b
dzielenie b/a a\b b./a a.\b
potęgowanie a^2=a*a a.^2
transpozycja a’ a’

Ćwiczenie 1.3.
Istnieje pewna dwuwymiarowa macierz kwadratowa, o dowolnej liczbie wierszy większej lub
równej od 3, zwana magiczną. Ma tę własność, że suma elementów w każdej z kolumn jest
taka sama. Co więcej, również suma elementów każdego z wierszy jest tą samą liczbą. O ma-
gicznym pochodzeniu tej macierzy przesądza jednak fakt, że suma elementów leżących na
głównych przekątnych też jest taka sama. Wiedząc, że funkcja sum(a) wyświetla wektor
wierszowy, zawierający sumy elementów w kolumnach macierzy a, wykaż, że macierz utwo-
rzona poleceniem magic(5) jest macierzą magiczną.

Podsumowanie ćwiczeń 1
• Lista zmiennych who lub whos
• Wartości zmiennej <nazwa>
• Polecenie bez wyświetlania wyniku <polecenie>;
• Kilka poleceń w wierszu <pol1>, <pol2>, … lub
<pol1>; <pol2>; …
• Usuwanie zmiennej z workspace clear <nazwa>
• Usuwanie wszystkich zmiennych clear lub clear all
• Adresowanie elementów macierzy nazwa(i,j)
• Macierz transponowana nazwa’
• Wektor „od a do b z krokiem c” a:c:b
• Operatory macierzowe + - * / \ ^ ‘
• Operatory tablicowe + - .* ./ .^ ‘

Strona 8 z 10
Podstawy Informatyki 3 – ćwiczenia01

Zadania do ćwiczeń 01
−1
25  1 
1.1. Oblicz wartość wyrażeń: 5 oraz 1 − 5 
2 −1  2 
1+ x
1.2. Oblicz wartość wyrażenia: y = 3 dla x = 0.2
1− x
1.3. Oblicz wartość wyrażeń: ln(e 2 ) oraz log10 (e 2 )
π π
1.4. Oblicz wartość wyrażenia: sin 2 + cos 2
4 4
π
i
3
π π
1.5. Oblicz wartość wyrażeń: e oraz cos + i sin
3 3

1.6. Przypisz zmiennym x, y, z wybraną wartość, a następnie oblicz wartość wyrażeń:

a) a= x − 1 − 3 | y |, b = x(arc tg z + e − ( x +3) ); (abs, atan)


y −1
b) a = 3 + e ( y − x ) 2 | y − x |3
, b = 1+ | y − x | + + ;
| y − tg z | 2 2

x + y /( x 2 + 4) 1 + cos( y − 2)
c) a = (1 + y ) , b= ;
e − x − 2 + 1 /( x 2 + 4) x 4 + sin 2 z

2 cos( x − π / 6) z
d) a= , b = 1 + tg 2 ;
1 / 2 + sin 2 y 2

e) a = ln | ( y − | x | ) x − y 
 |,
1
b = cos 2 (arc tg );
2
 z + x /4 z

1.7.Wyznacz wartość sumy 1 1 1 1 1 1 1 1 1 1 1


1− + − + − + − + − + −
2 3 4 5 6 7 8 9 10 11 12

1.8. Zbuduj wektor X= [1 3 5 7] i oblicz X XT oraz XTX

1 0 1 2
1.9. Zdefiniuj macierze A i B : A =   ; B= 
3 2 3 4

1.10. Wykorzystując funkcje eye(n) oraz zeros(n) oraz macierze A i B i wektor X zbuduj
1 0 1 0
3 2 0 1 
 
macierz C = 0 0 1 2
 
0 0 3 4 
1 3 5 7 

Strona 9 z 10
Podstawy Informatyki 3 – ćwiczenia01

1.11. Oblicz iloczyny macierzy A B oraz B A macierzowo i tablicowo

1.12. Oblicz B2 macierzowo i tablicowo

 π 2π 4π 5π 
1.13. Dla wektora t = 0; ; ;π; ; ; 2π  oblicz wartości funkcji x = sin(t)
 3 3 3 3 

t −1
1.14. Dla wektora t z poprzedniego zadania oblicz wartości funkcji y = oraz funkcji
t +1
z = t sin(t)

1.15. Dana jest następująca macierz:


2 3 4 5 
4 6 8 10 
A= 
6 9 12 15 
 
8 12 16 20
Wykonaj na niej następujące operacje:
A(:,1), A(2,:), A(:,2:3), A(2:3,2:3), A(:,1:2:3), A(2:3), A(:), A(:,:),
B = [A, [ones(2,2); eye(2)]], diag(A), diag(A,1), diag(A,-1), diag(A,2)
ndims(A), size (A), size(A,1), size(A,2), inv(A), rot90(A)

1.16. Zbuduj następującą macierz:


 0 π / 4 π / 2
A = π / 6 π / 2 π 
π / 3 π 2π 
a) w macierzy B wyznacz sinusy elementów macierzy A,
b) w macierzy C wyznacz cosinusy elementów macierzy A,
c) oblicz B2+C2 macierzowo oraz tablicowo.

1.17. Utwórz macierz o wymiarach 5 × 6 złożoną z liczb losowych z przedziału <0; 20>

1.18. Utwórz macierz o wymiarach 4 × 4 złożoną z liczb losowych z przedziału <20; 30>

Strona 10 z 10

You might also like