T W06


Informatyka
Transport Wykład 6
Matlab c.d.
" Praca wsadowa (m- pliki)
" Praca wsadowa (m- pliki)
" Instrukcja warunkowa if
" Tablice i ich zastosowania
1
M-pliki
W Matlab-ie można zapisać tekst ciągu instrukcji w
pliku tekstowym ASCII o rozszerzeniu m
nazwa.m (tzw. m-pliki),
a następnie wykonać plik - instrukcje wykonywane
a następnie wykonać plik - instrukcje wykonywane
są kolejno jedna po drugiej.
Matlab zawiera własny edytor plików ASCII.
Okno edytora m-plików
wykonanie m-pliku
Uwagi praktyczne
Efekty wykonania m-pliku widoczne Command Window
Mogą być wykonywane tylko m-pliki z katalogu roboczego
(Current Directory)  widoczne na liście w oknie  chociaż
istnieje też możliwość dodania wielu katalogów do listy
katalogów roboczych
Polecenia w m-pliku piszemy dla czytelności w osobnych
Polecenia w m-pliku piszemy dla czytelności w osobnych
wierszach, choć można w jednym wierszu, oddzielając je
przecinkiem (lub średnikiem)
Jeśli średnik umieścimy na końcu polecenia to nie ma echa
instrukcji na ekranie Command Window
Po znaku % piszemy komentarze  ignorowane przez Matlaba
Uwaga na błędy instrukcji!
Interakcja z użytkownikiem (instrukcja wejścia)
zmienna = input('tekst zachęty');
Działanie: skrypt się zatrzymuje i czeka na podanie wartości dla zmiennej
a = input('Podaj a:');
b = input('Podaj b:');
c = input('Podaj c:');
Przykładowy tekst w m-pliku:
clc
clear
a=input('Podaj a:'), b=input('Podaj b:'),c=input('Podaj c:'),
delta= b*b-4*a*c;
disp('Współczynniki równania kwadratowego:')
disp(a),disp(b),disp(c)
disp('Wartość delta wynosi:'),disp(delta)
Efekt wykonania m-pliku w Command Window
Współczynniki równania kwadratowego:
4.000000
-3.400000
2.450000
Wartość delta wynosi:
-27.640000
Instrukcja warunkowa
Instrukcja służy do sprawdzenia warunków i alternatywnego wykonywania
różnych grup instrukcji gdy dany warunek będzie prawdziwy (true)
Postać ogólna
if warunek1
instrukcje (wykonywane gdy jest spełniony warunek1)
elseif warunek2
instrukcje (wykonywane gdy jest spełniony warunek2)
elseif warunek3
elseif warunek3
instrukcje (wykonywane gdy jest spełniony warunek3)
& itd
else
instrukcje (wykonywane gdy niespełnione oba warunki)
end
Uwaga1: Bloki else i elseif mogą zostać pominięte.
Uwaga2: Gdy kolejny warunek jest prawdziwy, pozostałe warunki nie są
już sprawdzane
Warunek to połączenie dwóch wyrażeń
arytmetycznych znakami:
> < >= <= == (równe) != (nie równe)
Dwa warunki można związać:
koniunkcja warunków: znak &&
koniunkcja warunków: znak &&
alternatywa warunków: znak ||
Przykłady warunków:
a == 0 (równe UWAGA: dwa znaki =)
b2*a >= 5
x ~= 5 (różne od)
Przykład 1
a = 1;
b = 6;
c = 3;
delta = b^2-4*a*c;
if delta<0
disp ('delta jest ujemne') % wyświetlenie tekstu
elseif delta==0
elseif delta==0
disp('delta równe 0')
else
disp(delta) % wyświetlenie wartości delta
end;
Przykład 2
Test zawierania się liczby w przedziale:
a = input('Podaj liczbę:');
if (a>6) && (a<10)
disp('a w przedziale (6, 10)')
else
else
disp('a poza przedziałem (6, 10)')
end
TABLICE
Tworzenie tablicy
wektor wierszowy
M1=[1 2 3 4 5] lub M1=[1, 2, 3, 4, 5]
wektor kolumnowy
wektor kolumnowy
M2=[1; 2; 3; 4; 5]
tablica dwuwymiarowa
M3 = [1 2 3; 2 1 1; 1 0 0]
11
Metoda generowania tablicy o elementach
ciągu arytmetycznego
x=0:2:10 %generowanie wektora od 0 do 10 co 2
% wart_pocz:krok:wart_koncowa
0 2 4 6 8 10
x= 0:0.1:2 %dozwolona wartość dziesiętna kroku
x= 0:0.1:2 %dozwolona wartość dziesiętna kroku
Można pominąć krok:
x=0:10 %generowanie wektora od 0 do 10 co 1
% wart_pocz:wart_koncowa
0 1 2 3 4 5 6 7 8 9 10
12
Podobnie w tablicach wielowymiarowych
M = [0:5 ; 10:15] %wartość początkowa: wartość końcowa (krok=1)
0 1 2 3 4 5
10 11 12 13 14 15
ale UWAGA!
M = [0:5; 10:17]
błąd
arguments dimensions are not consistent
NIE ZGADZAJ SI WYMIARY!
13
Można wygenerować tablicę z wartościami funkcji:
x= [0 : 0.1: 10] %wartość początkowa: krok: wartość końcowa
M=[x; sind(x)]
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
0 0.0017 0.0035 0.0052 0.0070 0.0087 0.0105 0.0122 0.0140 0.0157 0.0175
x= [1 :10]
M=[x; log(x)]
1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000
0 0.6931 1.0986 1.3863 1.6094 1.7918 1.9459 2.0794 2.1972 2.3026
14
Dostęp do elementu tablicy
M1=[ 1 3 5 -11 7]
disp(M1(3))
wyświetlony zostanie trzeci element tablicy
tablica dwuwymiarowa
M2 = [1 2 3; 2 1 1.5; 1 0 0]
M2 = [1 2 3; 2 1 1.5; 1 0 0]
disp(M2(2,3))
Można elementy zdefiniowanej tablicy wykorzystać w
wyrażeniach, np:
y= M(2,2)^2
15
Operacje na tablicach (macierzach)
m4=[1 2 34 6;6 8/2 4 -2; 2 -5 56 6; 6 72 0.2 12]
m4t = m4' %macierz sprzężona  transponowana
m4o = m4^-1 %macierz odwrotna (macierz kwadratowa!)
mo= inv(m)
mo= inv(m) % także obliczenie macierzy odwrotnej!
s=m4*m4o %sprawdzenie - macierz jednostkowa
w=det(m4) %wyznacznik,uwaga:macierz kwadratowa!
16
Operatory "kropkowe" dla tablic
jeśli A i B są tablicami
C=A*B
to iloczyn macierzowy  kiedy dozwolony? - gdy
macierz A ma tyle kolumn ile macierz B wierszy
D=A.*B to iloczyn elementowy  każdy element
macierzy D powstaje z iloczynu odpowiednich
macierzy D powstaje z iloczynu odpowiednich
elementów macierzy A i B  dozwolony gdy A i B
mają te same rozmiary
podobnie ./ .^ (dzielenie i potęgowanie
elementowe)
A^2 % tożsame z A*A (uwaga:A musi być kwadratowa)
A.^2 % każdy element do kwadratu  A dowolne
17
Proste przykłady operacji macierzowych:
1 2 2 8
sumy iloczynów
* =
3 4 3 18
1 3 2 2 2 6
.*
=
4 1 3 1 12 1
1 3 2 2 0.5 1.5
./
=
4 1 16 1 0.25 1
2 3 2 2 4 9
.^
=
4 6 3 1 64 6
18
Wybrane metody wykorzystania tablic
Rozwiązywanie układu równań liniowych
2x + 3y  4z = 5
x + y  z = 3,5
 2,5y  z = 2
Rozwiązanie w Matlabie (m-plik):
Rozwiązanie w Matlabie (m-plik):
A = [2 3 -4 ; 1 1 -1 ; 0 -2.5 -1]
B = [ 5 ; 3.5 ; 2]
X= A^(-1)*B wektor rozwiązań
A*X % wynikiem powinien być wektor wyrazów wolnych B
19
& sprawdzenie rozwiązań:
s1=A(1,1)*X(1)+ A(1,2)*X(2)+A(1,3)*X(3)-B(1)
& . powinno dać wartość s1=0
podobnie:
s2=A(2,1)*X(1)+ A(2,2)*X(2)+A(2,3)*X(3)-B(2)
s3=A(3,1)*X(1)+ A(3,2)*X(2)+A(3,3)*X(3)-B(3)
Uwaga:
Rozwiązania istnieją jeśli równania układu nie są
liniowo zależne
20
Wyznaczanie pierwiastków równania n-tego stopnia
funkcja roots(M)
- gdzie M jest wektorem współczynników przy
kolejnych potęgach
np. x3 + 3x2  4=0
instrukcja:
instrukcja:
R=roots ([1 3 0 -4])
wyznacza pierwiastki równania
R  będzie wektorem rozwiązań
- jeśli równanie rzędu N to mamy N rozwiązań
- rozwiązaniami mogą być liczby zespolone!
21


Wyszukiwarka