Matlab_cw_01__08.doc HM str. 5
M A T L A B
WSTP
Świadomość, że komputer jest urządzeniem do prowadzenia
obliczeń, nie jest wśród jego użytkowników powszechna. Zadziwiający jest
fakt, że wiele osób mających na co dzień dostęp do komputera, nie potrafi
przy jego pomocy przeprowadzić żadnych, nawet najprostszych obliczeń.
Celem nadrzędnym niniejszego opracowania jest wypełnienie luki
w tej zbiorowej nieświadomości . Ponieważ zawartość zeszytu przeznaczona
jest dla studentów, nie przedstawiam możliwości obliczeniowych, jakie tkwią
w samym systemie operacyjnym, czy w pakietach wspomagajÄ…cych pracÄ™
biura. Na wyraznie zgłoszone zapotrzebowanie kolegów, którzy prowadzą
zajęcia na starszych latach studiów, przedstawiam w skrócie i poprzez
wybrane zagadnienia, podstawowe możliwości pakietu MATLAB.
Ponieważ pracujemy i studiujemy na Wydziale Mechanicznym
Politechniki Szczecińskiej, większość zadań oparta jest o problemy zrozumiałe
(mam nadzieję) dla tzw. mechaników. Przyjęto założenie, że zajęcia w oparciu
o niniejsze opracowanie, prowadzone są na niskich semestrach studiów. Opis
zagadnień, przykłady i zadania do samodzielnego rozwiązania oscylują wokół
wiedzy, którą student powinien posiąść na 1 lub 2-gim semestrze.
MATLAB jest przyjaznym środowiskiem integrującym metody
numeryczne, prezentację graficzną i język programowania. Celem niniejszego
opracowania nie jest zaprezentowanie wszystkich elementów tego pakietu,
a raczej przedstawienie podstawowych wiadomości wystarczających do jego
efektywnego wykorzystywania. Ośmieleni łatwością podstawowych działań,
powinniśmy nie obawiać się sięgnięcia w razie potrzeby, do bardziej
zaawansowanych możliwości MATLABA. Możliwości te są ogromne i jeśli ktoś
zachęcony ćwiczeniami z tego zeszytu, skorzysta z nich w przyszłości, to cel
niniejszego opracowania zostanie osiągnięty.
Opracowując prezentację zawartości merytorycznej poszczególnych
ćwiczeń, przyjęto założenie, że podążają one w ślad za poprzedzającym je
wykładem. Stąd krótka, często sucha część wprowadzająca do zadań.
Autor
str. 6 HM Matlab_cw_01__08.doc
M A T L A B
ĆWICZENIE 1 - Podstawy interfejsu Matlaba
Wykonaj następujące polecenia:
1. Uruchom Matlaba. Jesteś teraz w środowisku Matlaba. Masz przed
sobą tzw. interfejs Matlaba, którego możliwości będziesz
wykorzystywał do prowadzenia obliczeń w trybie bezpośrednim, a
pózniej do tworzenia własnych programów w języku Matlaba.
2. Rozciągnij okno Matlaba tak, by zajmowało cały ekran monitora.
3. Przestrzeń robocza Matlaba podzielona jest na kilka okienek. Zmień
wymiary tych okienek tak, by:
" okienko Command Window (okno poleceń) zajmowało 75%
szerokości ekranu,
" okienko Command History (historia poleceń) zajmowało 30%
wysokości ekranu.
4. Wykorzystując przycisk strzałki w górę
na pasku tytułowym
okienka Command History spowoduj, żeby okienko przestało być
przestrzennie związane z pozostałymi okienkami i przesuń je w prawy
dolny róg okna Matlaba.
5. Sprawdz na dole ekranu zawartość paska zadań systemu Windows.
6. Wstaw do szeregu okienko Command History używając przycisku
ekranowego strzałki w dół z paska menu tego okienka.
7. Zamknij okienko Command History w tradycyjny sposób.
8. Spowoduj, by w obszarze roboczym Matlaba widoczne były tylko dwa
okienka: Command Window oraz Workspace (przestrzeń robocza).
Wykorzystaj do tego znane już operacje na okienkach i zakładkę
Workspace.
9. WykorzystujÄ…c opcje menu Desktop / Desktop Layout / Default ustaw
przestrzeń roboczą Matlaba tak, by ekran przyjął ustawienia domyślne
(w starszych wersjach Matlaba w menu, zamiast opcji Desktop jest
opcja View).
ĆWICZENIE 2 Praca w trybie bezpośrednim
W oknie poleceń Command Window wydaje się komendy. O gotowości
Matlaba do przyjęcia komendy (polecenia) świadczy widoczny w wierszu
poleceń znak zachęty >> . Wykonanie komendy następuje po naciśnięciu
klawisza [Enter]. Jeśli podamy polecenie, bez określenia w jakiej zmiennej
przechowany ma być jego wynik, to Matlab umieści go w zmiennej o nazwie
ans .
Wykonaj następujące zadanie bez używania własnych zmiennych, tj. trochę
podobnie jak w tradycyjnym kalkulatorze. Nie wolno także zapisywać wyników
pośrednich w notatniku.
Zadanie 1
Oblicz pole powierzchni figury (rysunek) jaka pozostanie z koła
o promieniu 10, po wycięciu trójkąta równoramiennego wpisanego w to
koło. Trójkąt ma jeden bok oparty na średnicy koła. Znajdz też pole
powierzchni odcinka koła oznaczonego symbolem A.
Uwaga: odwołuj się do wyniku z poprzedniego działania pamiętając, że
jest on zawarty w zmiennej ans.
Matlab_cw_01__08.doc HM str. 7
M A T L A B
wyniki:
214,16; pole odcinka A=28,54
A
Przekonałeś się, że kalkulatorowy
sposób działania przy obliczeniach
choć trochę złożonych, jest bardzo
niewygodny. Od tej pory, prowadzÄ…c
obliczenia będziesz najczęściej
stosował zmienne pomocnicze.
10
Nazwa zmiennej musi zaczynać się od litery i może składać się z dowolnej
liczby liter, cyfr i znaków podkreślenia, przy czym Matlab uwzględnia tylko 31
pierwszych znaków nazwy. Rozróżniane są duże i małe litery. Nie jest
wymagane deklarowanie zmiennych, ani określanie ich typu (rozmiaru).
Zwróć uwagę, że:
" jeśli obliczenia mają być wykonane, ale nie interesuje nas wynik
polecenia, to należy na końcu polecenia umieścić znak średnika [ ; ] .
" jeśli polecenie nie mieści się w jednym wierszu, to kończymy wiersz
trzema kropkami i kontynuujemy zapis polecenia w wierszu
następnym.
" jeśli w jednym wierszu chcemy napisać kilka poleceń, to możemy:
o oddzielić je średnikami jeśli nie chcemy oglądać wyników,
o oddzielić je przecinkami jeśli chcemy widzieć wyniki.
" znakiem oddzielającym część ułamkową liczby od części całkowitej jest
kropka.
Wykonaj zadanie stosując zapisywanie wyników pośrednich do własnych
(tj. wymyślonych przez siebie) zmiennych.
Zadanie 2
a) Wykonaj obliczenia wg treści zadania 1 (z pominięciem uwagi).
Zastosuj następujące (lub podobne) nazwy zmiennych:
" promien
" pole_kola
" srednica
" podstawa
" wysokosc
" pole_trojkata
" pole_wynikowe
" polowa_kola
" pole_odcinka_A
b) Wykonaj te same obliczenia w taki sposób, by na ekranie uzyskać
tylko podgląd wyników końcowych (pole_wynikowe,
pole_odcinka_A).
str. 8 HM Matlab_cw_01__08.doc
M A T L A B
Sprawdzenie wyników pośrednich (np. gdy wyniku końcowego nie darzymy
zaufaniem) można wykonać po obliczeniach, wpisując nazwę zmiennej
przechowującej wynik i naciskając klawisz [Enter]. Przydatne w tym działaniu
są okienka Command History (gdzie możemy prześledzić ciąg wydanych
poleceń) oraz Workspace (pokazujące zagospodarowanie pamięci w
przestrzeni roboczej).
Zadanie 3
Oblicz wartości sił reakcji (R1 i R2) w podporach belki przedstawionej na
rysunku (mechanika, równania statyki).
Uwaga, powinieneś użyć funkcji:
sin(), cos() (kÄ…t w radianach), pierwiastek kwadratowy: sqrt(),
operatora potęgowania: ^ (np. z^2 ).
y
P1=532
P3=320
Ä…=60o
R1=?
x
P2=270
R2=?
a=0,7 b=1,5 c=0,18e1
Wyniki: R1x= -266,00; R1y= 258,60; R1= 370,98
R2y= 252,13
ĆWICZENIE 3 Macierze tworzenie - część 1
Podstawowym typem zmiennej w Matlabie jest macierz. Mówiąc o wymiarze
macierzy zawsze najpierw określamy liczbę wierszy, a potem liczbę kolumn.
Z punktu widzenia Matlaba szczególnymi odmianami macierzy są:
" skalar macierz o wymiarze 1 x 1,
" wektor wierszowy macierz o wymiarze 1 x n (jeden wiersz),
" wektor kolumnowy - macierz o wymiarze n x 1 (jedna kolumna).
Przy definiowaniu macierzy trzeba przestrzegać następujących reguł:
" lista wartości elementów musi być ujęta w nawiasy kwadratowe [ ],
" wartości elementów macierzy wpisuje się wierszami, oddzielając je
spacjÄ… lub przecinkiem,
" wiersze kończymy znakiem średnika ; lub naciskając klawisz [Enter].
Liczby całkowite i rzeczywiste zapisuje się w Matlabie w jednej z dwóch
postaci:
" stałopozycyjnej: 123000, -4234.34, +0.0453 ;
" zmiennopozycyjnej: 123e3, -0.423434E4, +453e-4 .
Liczby zespolone zapisuje się z użyciem znaku i lub j :
123 + 34i
321 43j
Sprawne tworzenie macierzy jest podstawową umiejętnością jaką trzeba
posiąść, by efektywnie działać w Matlabie.
Matlab_cw_01__08.doc HM str. 9
M A T L A B
Zadanie 4
a) Utwórz macierze A i B. Pomnóż je, wynik podając w macierzy C:
1 3 5 11 12
îÅ‚ Å‚Å‚ îÅ‚ Å‚Å‚
ïÅ‚ ïÅ‚ śł
A = 2 4 7śł B = 21 22
ïÅ‚ śł ïÅ‚ śł
ïÅ‚- 3 3 6ûÅ‚
śł ïÅ‚- 31 - 32ûÅ‚
śł
ðÅ‚ ðÅ‚
wynik: C = -81 -82
-111 -112
-156 -162
b) Zmień kolejność macierzy w mnożeniu i sprawdz rezultat.
Macierze można składać z podmacierzy, przestrzegając dokładnie takich
samych zasad, jak przy przybudowaniu macierzy z liczb (patrz wyżej). Trzeba
przy tym kontrolować wymiary macierzy. Nie może w wyniku takiego składania
dojść do braków elementów w wierszach lub kolumnach.
Zadanie 5
Utwórz macierze składowe:
A wektor wierszowy o 3 elementach,
B macierz o wymiarze 4x3,
C wektor kolumnowy o 3 elementach.
a) zbuduj z nich kilka macierzy D (D1, D2, itd.),
b) zbuduj z nich kilka macierzy E, w taki sposób, żeby każda z macierzy
składowych wprowadziła elementy 10 razy większe lub 10 razy
mniejsze od wartości elementów własnych.
c) zbuduj z nich, wpisujÄ…c w razie potrzeby dodatkowe liczby oraz
wykorzystując możliwość zagnieżdżania nawiasów kwadratowych,
kilka macierzy F o wymiarze: F1 - 5x4, F2 - 5x5, F3 - 6x5, F4 - 6x6.
Budowanie macierzy z użyciem dwukropka polega na składaniu w macierz
wygenerowanych wektorów wierszowych, przez określenie dla każdego z
nich:
" minimum i maksimum, według schematu min : max gdy kolejne
elementy stanowią arytmetyczny ciąg liczb całkowitych z różnicą
równą 1,
" minimum, przyrostu i maksimum, wg schematu min : krok : max
gdy ciąg arytmetyczny ma dowolną różnicę (niecałkowitą lub ujemną).
Przykładową macierz o nazwie dwukropek, wygenerowaną z użyciem
dwukropka pokazuje rysunek (zrzut fragmentu okienka Command Window).
????
str. 10 HM Matlab_cw_01__08.doc
M A T L A B
Zwróć uwagę na to, jak powstał ostatni wiersz tej macierzy i jaki jest efekt jego
tworzenia.
Zapamiętaj: clear, clear zmienna1, clear all usuwa z pamięci (przestrzeni
roboczej) wszystkie zmienne, wybraną zmienną, czyści całą
przestrzeń roboczą;
clc czyści okno poleceń
Zadanie 6
Wyczyść przestrzeń roboczą i okno poleceń.
Utwórz macierz A przedstawioną niżej, z użyciem dwukropka:
ĆWICZENIE 4 Macierze tworzenie - część 2
Macierze można budować za pomocą specjalnych funkcji. Czyni się to wtedy,
gdy i same macierze mają specjalną (specyficzną) postać. Najczęściej
stosowane funkcje dzielimy na:
" funkcje generujÄ…ce macierze,
" funkcje przekształcające macierze.
Funkcje generujÄ…ce macierze podaje tabela.
tworzy macierz jednostkową o wymiarze n x n (1 na głównej
eye(n)
przekÄ…tnej)
zeros(n) tworzy macierz kwadratową o wymiarze n x n wypełnioną
samymi zerami
tworzy macierz kwadratową o wymiarze n x n wypełnioną
ones(n)
samymi jedynkami
tworzy macierz kwadratową o wymiarze n x n wypełnioną
rand(n) liczbami pseudolosowymi z przedziału <0, 1> o rozkładzie
jednostajnym
tworzy macierz kwadratową o wymiarze n x n wypełnioną
randn(n)
liczbami pseudolosowymi o rozkładzie normalnym ze średnią 0
i wariancją równą 1
Jeśli argumentami tych funkcji będą dwie liczby naturalne, to zostaną
wygenerowane macierze prostokÄ…tne.
Funkcje przekształcające macierze podaje tabela.
wstawia składniki wektora x na głównej przekątnej
A=diag(x)
macierzy zerowej A,
tworzy wektor x z głównej przekątnej macierzy A
x=diag(A)
tworzy macierz odwrotnÄ… do macierzy A
inv(A)
tworzy z macierzy A macierz trójkątną dolną
tril(A)
(zerowanie elementów nad główną przekątną)
tworzy z macierzy A macierz trójkątną górną
triu(A)
obraca macierzy A o 90o w kierunku
rot90(A)
powiela macierz A m razy w pionie i n razy w poziomie
repmat(A,m,n)
reshape(A,m,n) tworzy macierz o m wierszach i n kolumnach z
elementów macierzy A branych kolejno kolumnami
Matlab_cw_01__08.doc HM str. 11
M A T L A B
W kolejnych zadaniach zastosuj przedstawione wyżej funkcje oraz poznane
wcześniej metody budowania macierzy (nie zapomnij też, że jednym z
najprostszych działań jest dodawanie macierzy).
Zadanie 7
Zbuduj macierze uwzględniając okoliczność, że do tworzenia kolejnych,
możesz wykorzystać macierze już istniejące.
A =
7 0 0 0
0 7 0 0
0 0 7 0
0 0 0 7
B = C = D =
2 2 2 2 9 2 2 2 0 0 0 0
2 2 2 2 2 9 2 2 0 0 0 0
2 2 2 2 2 2 9 2
2 2 2 2 2 2 2 9
E = F = H =
9 2 2 2 2 5 8 11 0 0 0 0
2 9 2 2 0 0 0 0
2 2 9 2 2 0 0 0
2 2 2 9 0 5 0 0
0 0 0 0 0 0 8 0
0 0 0 0 0 0 0 11
K = L =
9 2 2 2 2 2 2 9 0 11
2 9 2 2 2 2 9 2 8 0
4 2 9 2 2 9 2 7 0 0
2 7 2 9 9 2 4 2 0 0
0 0 8 0
0 0 0 11
M = ME =
48 89 44 214 48 48 48 48
62 54 157 44 54 54 54 54
58 138 54 89 54 54 54 54
105 58 62 48 48 48 48 48
N =
2 2 2 9 0 11
0 2 9 2 8 0
0 0 2 7 0 0
0 0 0 2 0 0
str. 12 HM Matlab_cw_01__08.doc
M A T L A B
P = R =
2 9 2 9 2 9 2 9
0 2 0 2 0 2 0 2
0 7 0 7 0 7 0 7
0 2 0 2 0 2 0 2
2 0 2 0 2 0 2 0
2 8 2 8 2 8 2 8
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
2 11 2 11 2 11 2 11
9 0 9 0 9 0 9 0
2 0 2 0 2 0 2 0
0 0 0 0 0 0 0 0
ĆWICZENIE 5 Zapis i odczyt danych
Istnieje wiele programów, które w rezultacie swych działań tworzą tabele. Są
to np. arkusze kalkulacyjne, bazy danych, edytory tekstów, itp. Matlab może te
tabele wczytać do przestrzeni roboczej i przekształcić w macierze, pod
warunkiem, że wspomniane programy są w stanie zapisać swoje tabele w
formacie pliku tekstowego. Taka importowana macierz ma nazwÄ™
wczytanego pliku (bez rozszerzenia). Funkcja realizujÄ…ca wczytanie pliku, to:
load nazwa_pliku.rozsz
Zadanie 8
1) Otwórz arkusz kalkulacyjny Excel.
2) Utwórz, poczynając od komórki A1, tablicę liczbową o 10 wierszach
i 10 kolumnach. Nie dodawaj żadnych opisów kolumn i tytułów tablicy.
3) Zapisz plik Excela w folderze roboczym Matlaba ustalajÄ…c:
typ zapisywanego pliku z rozszerzeniem .txt ,
nazwę pliku bez spacji, polskich liter i innych dziwnych znaków .
Nie przejmuj się dużą liczbą pojawiających się okienek dialogowych,
które utrudniają przeprowadzenie zapisu. Konsekwentnie wybieraj
opcje prowadzÄ…ce do zapisu.
4) Zamknij program Excel.
5) Przejdz do Matlaba i obejrzyj zawartość okienka Current Directory.
Znajdz tam plik przed chwilÄ… zapisany.
6) Wczytaj plik do przestrzeni roboczej Matlaba.
7) Przełącz się na podgląd okienka Workspace.
8) Z wczytanej macierzy utwórz macierz o nazwie AA.
9) Wykorzystując odpowiednią funkcję utwórz wektor xx z elementów
rozmieszczonych na głównej przekątnej macierzy AA.
Znacznie łatwiej prowadzić zapis do pliku i odczyt danych z pliku, kiedy
operujemy tylko na tablicach (macierzach) z przestrzeni roboczej Matlaba.
Funkcje, które obsługują te operacje przedstawione są w tabeli. Trzeba
pamiętać, że pliki zapisywane przez Matlaba, to tzw. pliki zapisane binarnie,
a więc nie dające się przeczytać w edytorze tekstowym.
Matlab_cw_01__08.doc HM str. 13
M A T L A B
zapisanie wszystkich zmiennych w pliku
save
matlab.mat
zapisanie wszystkich zmiennych w pliku o
save plik
nazwie plik.mat
save plik zm1 zm2 zapisanie wymienionych zmiennych (zm1, zm2)
w pliku o nazwie plik.mat
wczytanie zmiennych zapisanych w pliku
load
matlab.mat
wczytanie zmiennych zapisanych w pliku
load plik
plik.mat
Do zapisu i odczytu zmiennych możesz także wykorzystać opcje menu
i przyciski narzędziowe.
Zadanie 9
Pamiętając, że masz w przestrzeni roboczej macierze utworzone w
zadaniu 8:
1) zbuduj macierz BB o wymiarze 10x11, składając macierz AA i xx,
2) zapisz macierze AA, xx, BB w pliku AAxxBB.mat w folderze
roboczym,
3) wyczyść zawartość przestrzeni roboczej Matlaba,
4) wczytaj zawartość pliku AAxxBB.mat do przestrzeni roboczej.
ĆWICZENIE 6 Odwołania do elementów i fragmentów macierzy
Odwołanie do elementu macierzy dwuwymiarowej może być wykonane na
dwa sposoby:
przez wskazanie numeru wiersza i kolumny,
przez podanie tylko jednego indeksu.
W tym drugim przypadku odliczenie wg indeksu nastąpi w taki sposób, jakby
wszystkie kolumny macierzy ustawione były jedna pod drugą i tworzyły jedną
długą kolumnę. Przykłady odwołania do elementów macierzy podane są niżej.
Z =
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
znalezienie wartości elementu macierzy przez podanie
numeru wiersza i kolumny
>> elementZ=Z(2,4)
elementZ =
24
znalezienie wartości elementu macierzy przez podanie
tylko jednego indeksu
>> elementZ=Z(11)
elementZ =
24
str. 14 HM Matlab_cw_01__08.doc
M A T L A B
wstawienie wartości do macierzy przez podanie numeru
wiersza i kolumny elementu
>> Z(2,4)=99
Z =
11 12 13 14 15
21 22 23 99 25
31 32 33 34 35
wstawienie wartości do macierzy przez podanie tylko
jednego indeksu elementów macierzy
>> Z(7)=88; Z(4)=elementZ (wartość uzyskana w
poprzednich przykładach)
Z =
11 24 88 14 15
21 22 23 99 25
31 32 33 34 35
Odwołanie do fragmentu macierzy wykonywane jest przy pomocy
dwukropka.
Usuwanie wierszy lub kolumn polega na wstawieniu w ich miejsce macierzy
pustej reprezentowanej przez zapis [ ] . Dla przykładu, usunięcie 2 kolumny
macierzy Z przeprowadzimy następująco
>> Z(: , 2)=[ ]
Z =
11 88 14 15
21 23 99 25
31 33 34 35
W tej operacji dwukropek oznacza wszystkie wiersze. Takie znaczenie
dwukropka (który nie rozdziela wartości skrajnych od : do) będzie wielokrotnie
wykorzystywane.
Użycie samotnego dwukropka oznacza zawsze, że działanie odbywa
siÄ™ na wszystkich wierszach lub/i na wszystkich kolumnach macierzy.
W niżej podanym przykładzie macierze YA, YB i YC utworzone są z
fragmentów macierzy Y.
>> Y=[11:15; 21:25; 31:35; 41:45]
Y =
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
>> YA=Y(: , 3), YB=Y(1:3, :), YC=Y(2:3, 2:4)
YA =
13
23
33
43
Matlab_cw_01__08.doc HM str. 15
M A T L A B
YB =
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
YC =
22 23 24
32 33 34
Jeśli wybierane fragmenty macierzy nie stanowią obszaru spójnego , to
należy wyszczególnić numery wierszy lub kolumn w specjalnych wektorach.
Przeanalizuj przykłady.
>> YD=Y( [1 3] , : ), YE=Y(2:4 , [1 3 5] )
YD =
11 12 13 14 15
31 32 33 34 35
YE =
21 23 25
31 33 35
41 43 45
Zadanie 10
Pamiętając, że masz w przestrzeni roboczej macierze utworzone w
zadaniu 7, zbuduj macierze przedstawione niżej, wykorzystując
umiejętnie zapisy z dwukropkiem. Pierwsza litera w nazwie macierzy
wskazuje na macierz, którą powinieneś wykorzystać.
EA = EB =
9 2 2 2 9 2 2
2 9 2 2 2 9 2
2 2 9 2 2 2 9
2 2 2
0 0 0
0 0 0
LA = LB =
2 7 0 0 9 8
4 2 0 0 4 0
LC = LD =
18 16 18.9 16.8
8 0 8.4 0
RA = RB =
2 0 2 0 2 0 2 0 2 0 2 0
2 8 2 8 2 8 2 8 2 8 2 8
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
2 11 2 11 2 11 2 11 2 11 2 11
9 0 9 0 9 0 9 0 9 0 9 0
2 0 2 0 2 0
0 0 0 0 0 0
MA = MB =
0 0 0 0 48000 89000 44000 214000
0 0 0 0 62 54 157 44
58 138 54 89 58000 138000 54000 89000
105 58 62 48 105 58 62 48
MC =
48 999 44 999
62 999 157 999
58 999 54 999
105 999 62 999
str. 16 HM Matlab_cw_01__08.doc
M A T L A B
ĆWICZENIE 7 Operacje na macierzach
W Matlabie istniejÄ… dwa rodzaje operacji na macierzach:
" zgodne z zasadami algebry macierzy (operatory macierzowe),
" operacje tablicowe traktujące macierze jak zwykłe tablice liczbowe.
Operatory tablicowe funkcjonują w taki sposób, że działaniom operatorów
podlegają odpowiadające sobie pary elementów obu macierzy (macierze
muszą mięć ten sam wymiar). Operatory tablicowe poprzedzone są zawsze
kropkÄ….
operator arytmetyczny operator macierzowy operator tablicowy
dodawanie A+B A+B
odejmowanie A-B A-B
mnożenie A*B A.*B
B*A B.*A
nie jest przemienne jest przemienne:
A*B`"B*A A.*B=B.*A
dzielenie prawostronne B/A=B*A-1 B./A=A.\B
dzielenie lewostronne A\B=A-1*B A.\B=B./A
potęgowanie A^2=A*A A.^2
transpozycja A A
odwracanie A^-1=inv(A) A.^-1
Jeśli wyniki działań w Matlabie przekraczają zakres tzw. zakres arytmetyki
komputera, to Matlab nie przerywa działania, podając jako rezultaty
charakterystyczne zmienne
inf lub Inf (nieskończoność).
Jeśli w wyniku działań operacje są matematycznie niezdefiniowane (np. 0/0),
to jako rezultaty otrzymujemy zmienne
NaN lub nan
Zadanie 11
Zdefiniuj dwie macierze (M1 i M2) o wymiarze 3x3 z użyciem dwukropka.
Zmień niektóre elementy tych macierzy zakłócając rezultaty
poprzedniego działania. Druga macierz nie powinna mieć elementów
zerowych. Wykonaj następujące polecenia:
1. Sprawdz, czy mnożenie macierzy jest przemienne obliczając,
różnicę wyników obydwu wariantów mnożenia.
2. Sprawdz, czy tablicowe mnożenie macierzy jest przemienne
obliczając, różnicę wyników obydwu wariantów mnożenia.
3. Sprawdz, czy możesz bez problemów podnieść macierz M2 do
potęgi 1. Jeśli nie, to oceń dlaczego, zmień wartość niektórych
elementów i powtórz próbę.
4. Sprawdz, czy możesz bez problemów wykonać tablicową operację
podniesienia macierzy M2 do potęgi 1.
Zadanie 12
Zdefiniuj macierz o wymiarze 3x7 z użyciem dwukropka. Oblicz średnią
wartość każdego wiersza macierzy wykonując wyłącznie operacje
macierzowe lub tablicowe. Odpowiednio do potrzeb zdefiniuj macierze
pomocnicze.
Udowodnij poprawność wyników w inny (niemacierzowy) sposób.
Matlab_cw_01__08.doc HM str. 17
M A T L A B
Dowolny tekst możesz zapisać w Matlabie zaczynając wiersz od znaku %.
Tekst ten nie będzie interpretowany jako zapis operacji matematycznych.
Takie zapisy stosuje się, gdy chcemy wprowadzić komentarz. Można tym
sposobem swobodnego pisania w Matlabie posłużyć się wtedy, gdy niejako
na brudno zapisujemy przekształcenia wzorów, albo równania. Potem, po
wzrokowym sprawdzeniu, można całe sekwencje tych zapisów wykorzystać
i przenieść do właściwych miejsc w Matlabie (klasyczna operacja kopiuj-wklej).
Rozwiązywanie układu równań liniowych to zagadnienie, który występuje w
wielu zadaniach inżynierskich. Rozpatrzymy ten problem na przykładzie
następującego układu równań.
x1+x2+x3-3=0
x1+2x2+3x3-1=0
x1-x2+x3-2=0
Wykorzystując metody algebry liniowej i znane nam już operacje na
macierzach, rozwiązania poszukuje się w sposób następujący:
przenosi się wyrazy wolne na prawą stronę znaku równości
i porządkuje wyrazy względem niewiadomych (x),
x1+x2+x3=3
x1+2x2+3x3=1
x1-x2+x3=2
tworzy się macierz współczynników przy niewiadomych A, wektor
niewiadomych x i wektor wyrazów wolnych B:
1 1 1 x1 3
A= 1 2 3 ; x= x2 ; B=1
1 -1 1 x3 2
Przy tak zdefiniowanych macierzach równania zapisuje się
w postaci
Ax=B
i można dokonać przekształcenia (lewostronne mnożenie
przez A-1).
A-1Ax=A-1B
Uwzględniając, że
A-1A=I
przedstawia macierz jednostkową (jedynki na głównej
przekątnej) otrzymujemy końcowy zapis.
Ix=A-1B
x=A-1B
wykonuje się przedstawione wyżej działanie otrzymując poszukiwane
rozwiÄ…zanie x.
str. 18 HM Matlab_cw_01__08.doc
M A T L A B
Zadanie 13
Znajdz wartości sił reakcji w podporach (R1x, R1y, R2y) posługując się
rachunkiem macierzowym.
y
P1=532
P3=320
Ä…=60o
R1=?
x
P2=270
R2=?
a=0,7 b=1,5 c=0,18e1
UWAGA:
1. Równania statyki
R1x +P1x=0
R1y+P1y+P2y+P3y+R2y=0
P1y*a+P2y*(a+b)+P3y*(a+b+c)+R2y*(a+b+c)=0
uporządkuj względem niewiadomych.
2. Przenieś składniki bez niewiadomych (tzw. wyrazy wolne) na
prawą stronę równania.
Zauważ, że cały zestaw równań możesz zapisać macierzowo
A*R=W
gdzie: A macierz współczynników przy niewiadomych (R1x,
R1y, R2y),
W macierz wyrazów wolnych,
R macierz szukanych składowych sił reakcji o postaci
R1x
îÅ‚ Å‚Å‚
ïÅ‚ śł
R = R1y
ïÅ‚ śł
ïÅ‚
ðÅ‚R2yśł
ûÅ‚
3. Określ wartości wszystkich elementów macierzy A i W.
4. Dokonując prostego przekształcenia powyższego wzoru, oblicz
wartości elementów wektora R stosując działania na macierzach.
Wyniki: R1x= -266,00;
R1y= 258,60;
R2y= 252,13
Matlab_cw_01__08.doc HM str. 19
M A T L A B
ĆWICZENIE 8 Funkcje standardowe
Matlab ma w swej bibliotece wiele funkcji. Musisz pamiętać, że wszystkie
zmienne Matlab traktuje jak macierze, więc oczywiste jest, że argumentem
każdej funkcji może być macierz. Odpowiednia operacja zostanie wykonana
na każdym elemencie macierzy. Wynikiem działania funkcji jest więc także
macierz. Niektóre z funkcji Matlaba podaje poniższa tabela.
funkcje podstawowych operacji matematycznych
sin(),cos(),tan(), funkcje trygonometryczne argumenty w
radianach
cot()
asin(), acos(), ..
funkcje cyklometryczne wynik w radianach
pierwiastek kwadratowy przy ujemnym
sqrt()
argumencie wynik jest liczbÄ… zespolonÄ…
logarytm naturalny, logarytm przy podstawie 2,
log(), log2(),
logarytm przy podstawie 10 - przy ujemnym
log10()
argumencie wynik jest liczbÄ… zespolonÄ…
wartość absolutna, a dla liczby zespolonej jej
abs()
moduł
angle()
argument liczby zespolonej
real(), imag()
część rzeczywista i urojona liczby zespolonej
round()
zaokrąglenie do najbliższej liczby całkowitej
funkcje operujÄ…ce na wektorach
max() zwraca największy element wektora (każdej kolumny macierzy)
min() zwraca najmniejszy element wektora (każdej kolumny macierzy)
sum() zwraca sumę elementów wektora (każdej kolumny macierzy)
zwraca iloczyn elementów wektora (każdej kolumny macierzy)
prod()
mean() zwraca średnią arytmetyczną elementów wektora (każdej kolumny
macierzy)
funkcje określające wymiary macierzy
rozmiar macierzy wynikiem jest macierz dwuelementowa
size()
[liczba_wierszy liczba_kolumn ]
zwraca większy z wymiarów macierzy
length()
funkcje środowiska Matlaba
clear, clear z, clear all usuwa z pamięci zmienne
clc, clf czyści okno poleceń, okno rysunku
Zadanie 14
Sporządz tabelę, która dla wartości kąta wyrażonej w stopniach,
zestawia wartości wszystkich czterech podstawowych funkcji
trygonometrycznych. Stopniowanie kÄ…ta co 1, a zakres tabeli od 90 do
+90 stopni.
str. 20 HM Matlab_cw_01__08.doc
M A T L A B
Z a d a n i a d o s a m o d z i e l n e g o w y k o n a n i a
Praca w trybie bezpośrednim - działania na macierzach
Zadanie 1. W krajach anglosaskich używa się jeszcze jednostki długości
1 cal (1 ). Wiedząc, że 1 =25.4 mm, opracuj tabelę służącą do
szybkiego odczytu długości w milimetrach, jeśli ktoś podaje długość w
calach (calach i jego ułamkach). Przykład: z tabeli powinno się
szybko odczytać, że 7 i 3/16 cala to 182,5625 mm. Stopniowanie
długości wyrażonej w calach nie powinno być gęściejsze niż 1/16
cala, a cały zakres tabeli powinien zawierać wyniki w granicach od 0
do 1 m. Zastosuj poznane operacje macierzowe.
Zadanie 2. W Stanach Zjednoczonych (i niektórych innych krajach) do
określania temperatury stosuje się skalę Fahrenheita. Wiedząc, że
skalę temperatur Celsjusza i Fahrenheita wiąże następujący wzór
toC=(5/9)*(toF-32)
o
opracuj tabelę służącą do szybkiego odczytu temperatury w C, gdy
ktoś podaje informację o temperaturze w skali Fahreinheita. Cały
zakres tabeli powinien zawierać się pomiędzy 40 oC a 50 oC.
Zadanie 3. W pewnym eksperymencie prowadziłeś pomiary składowych
siły F, czyli rejestrowałeś Fx oraz Fy. Zarejestrowałeś 100 takich par
(utwórz macierz składowych siły o wymiarze 100x2 z wykorzystaniem
funkcji generującej liczby pseudolosowe). Przy pomocy operatorów
macierzowych i tablicowych utwórz macierz kolumnową (wektor
o wymiarze 100x1), która zawierać będzie obliczone wartości
wypadkowej siły F.
Wyszukiwarka
Podobne podstrony:
MATLAB cw SkryptyMATLAB cw Skorowidz haselMATLAB cw Metody numermatlab cwMATLAB cw LiteraturaMATLAB cw Spis tresciMATLAB cw 3MATLAB cw Wykresycad2 cw 5 6cw formularzCw 2 zespol2 HIPSCw 9 Wzmacniacz mocyCw 1SIMULINK MATLAB to VHDL RouteIMiR NM2 Introduction to MATLABmetrologia cw 1 protokolwięcej podobnych podstron