(Microsoft Word Cz II Matlab Srodow Pr konsol Wekt i macierze Przyk

background image

1



Temat:

Środowisko Matlab


Zagadnienia:

Ogólne możliwości Matlaba

okna Matlaba

uruchamianie istniejących programów

uruchamianie edytora programów Matlaba
i zapis m-plików

Wybór katalogów, pliki i ich rodzaje

graficzny interfejs użytkownika- charakterystyka

Praca z MATLAB w trybie konsoli

Command Window –polecenia konfigurujące

Workspace – polecenia operujące na danych
i plikach

Typy danych w Matlabie- funkcje konwersji

Podstawowe funkcje i stałe matematyczne

Definiowanie macierzy i wektorów

o

Funkcje systemowe

o

Operacje na macierzach i wektorach

Literatura

A. Kamińska, B. Pańczyk, Matlab. Przykłady i zadania, Mikon 2002
B. Mrozek, Z. Mrozek, Matlab i Simulink. Poradnik użytkownika,

2004

B. Mrozek, Z. Mrozek, Matlab. Uniwersalne środowisko do obliczeń

naukowo technicznych.

Matlab Help Printable documentation
R. Klempka, A. Stankiewicz, Programowanie z przykładami w języku

Pascal i Matlab, 2002

B. Mrozek, Z. Mrozek, MATLAB Leksykon kieszonkowy. Wyd. HELION

background image

2

Charakterystyka środowiska Matlab

(MATrix LABoratory)

Matlab to proste w użyciu środowisko łączące obliczenia,

wizualizację i programowanie. Zastosowania pakietu to:

• obliczenia matematyczne,
• algorytmy numeryczne,
• modelowanie i symulacja,
• analiza danych i wizualizacja,
• grafika inżynierska,
• aplikacje z wykorzystaniem graficznych

interfejsów użytkownika GUI

(Graphics User Interface

)

Matlab jest systemem interaktywnym, którego podstawową

strukturę

danych

stanowi

dwuwymiarowa

tablica

dynamiczna o nieokreślonej z góry liczbie elementów.
Takie podejście pozwala rozwiązywać wiele technicznych
problemów, w szczególności opisanych za pomocą
macierzy i wektorów, bez definiowania takich struktur (co
nie jest możliwe w językach programowania np. typu C).

Dodatkowe biblioteki Matlaba (ang.

toolboxes

) umożliwiają

stosowanie

specjalistycznych

technologii.

Biblioteki

składają się z funkcji Matlaba (tzw.

m-plików

), które

poszerzają

standardowy

zestaw

funkcji

pakietu

o

możliwości rozwiązywania specyficznych problemów np.:

o

Control System Toolbox- projektowanie układów sterowania

o

Optimization Toolbox - metody optymalizacji,

o

Neural Network Toolbox - sieci neuronowe itp.).

Integralną częścią Matlaba jest

Simulink

- interaktywny

system, umożliwiający graficzne modelowanie i symulację

układów.

Przykład budowy

prostego układu i
symulacji jego pracy
przedstawiono na
rysunku obok.

background image

3

Pakiet Matlab składa się z 5 podstawowych elementów:

1.

język

Matlab

-język

wysokiego

poziomu,

umożliwiający tworzenie zarówno małych programów, jak i
kompletnych aplikacji, udostępniający funkcje, obsługę
wejścia/wyjścia i elementy programowania obiektowego;

2.

środowisko robocze Matlaba

- zestaw narzędzi do

zarządzania zmiennymi w przestrzeni roboczej, m-
plikami, aplikacjami Matlaba oraz do importowania i
eksportowania danych;

3.

system graficzny

- zawierający funkcje wysokiego

poziomu do tworzenia 2D i 3D wykresów, funkcje
przetwarzania obrazów i tworzenia animacji oraz wiele
niskopoziomowych poleceń, umożliwiających kontrolę
wyglądu tworzonych grafik i budowę graficznego interfejsu
użytkownika;

4.

biblioteka funkcji matematycznych

— obejmuje

zarówno funkcje podstawowe (np. sumowanie, funkcje
trygonometryczne,

funkcje

liczb

zespolonych),

w

macierzowe

(np.

obliczanie

macierzy

odwrotnych,

wyznaczanie

wartości

własnych),

jak

i

wiele

specjalistycznych funkcji matematycznych, np. funkcje
Besse-la, FFT (Fast FourierTtransform);

5.

interfejs API

(application program interface) ~

biblioteka umożliwiająca tworzenie programów w językach
C i Fortran, współpracujących z rogramami napisanymi w
Matlabie.


Praca z pakietem Matlab może odbywać się na dwa

sposoby:

w trybie bezpośrednim

- robocze prowadzenie dialogu

pomiędzy użytkownikiem a pakietem na zasadzie:
pytanie - odpowiedź;

w trybie pośrednim

- umożliwia efektywne wykonanie

obliczeń

i prezentację

wyników

za

pomocą

uruchomienia programu napisanego w języku pakietu
Matlab, czyli tzw.

skryptu


Po uruchomieniu pakietu polecenia można wydawać

bezpośrednio w oknie Matlaba. O gotowości świadczy

znak zgłoszenia (»)

(w

wierszu poleceń)

background image

4

Matlab – po uruchomieniu




Przykład własnego GUI

do uzyskania wykresów funkcji:

f(x) = b*x +Amp*sin(omega*x)






Uruchamianie istniejącego programu Matlaba (file.m)

Należy określić ścieżkę dostępu do programu wybierając:

File

Open













Katalog Matlaba z
toolbox’ami
w oknie
Launch Pad

>> -znak zachęty

Okno

Command

Okno

History

Wybieramy katalog w
którym jest program

Wyświetlają się nazwy

programów Matlaba

(pliki z rozszerzeniem:

xxxx.m lub yyyy.fig

Wybieramy ten który
ma być uruchomiony

background image

5

Tworzenie nowego programu dla Matlaba

W celu napisania programu w języku Matlak należy użyć
specjalnego edytora. Zastanie on otwarty po wyborze opcji:

File

New

M-file


















Okno Command Window można czyścić np. wpisując po
znaku zachęty << polecenie clc. Tak jak niżej:
<<clc
Polecenie to usuwa zawartość z wszystkich linii okna,
a kursor zostaje umieszczone w górnym lewym rogu.



















Wybór opcji M-file
otworzy okno specjalnego
edytora ułatwiającego pisanie
u uruchamianie programu w
Matlabie

Edytor pozwala wprowadzać
polecenia Matlaba.
Wyróżnia kolorem niektóre
elementy składni.
Po napisaniu programu należy go
zapisać we wskazanym katalogu
jako tzw. M-plik (rozszerzenie .m)
np.:

/Matlab/work/równanie.m

Zapis:

- File

Save as

{ i ustalamy ścieżkę dostępu do

katalogu w którym chcemy

zapisać program }

-

Nadajemy nazwę i potwierdzamy

całość OK.

background image

6

Tworzenie Graficznego Interfejsu Użytkownika w Matlabie


Panel z elementami GUI otwiera polecenie:

File

New

GUI

Uwaga:

1. w trakcie budowy GUI powstaje automatycznie (w tle) program

szkieletowy,

2. w odpowiednich miejscach szkieletu należy dopisać instrukcje

Matlaba określające co ma być robione (np. po przeciągnięciu
suwaka do okienka ma zostać wprowadzona wartość
bieżąca).

Okno

projektu

GUI

Obiekty

GUI

Projektujemy GUI przeciągając
obiekty i rozciągając je do
właściwych rozmiarów.

Zapisujemy projekt:

File

Save as

{ scieżka do katalogu}

Nadajemy nazwę z rozszerzeniem:
Np.: Projekt1

Po zapisie powstaną 2 piki:
Projekt1.m
Projekt1.fig`

background image

7

Przykładowe aplikacje z wykorzystaniem GUI

Poniżej przedstawiono przykład GUI z suwakami i oknem
graficznym.

Poniżej przedstawiono przykład GUI (prosty kalkulator)
z

okienkami do wprowadzania danych i wyświetlania wyników oraz

z wykorzystaniem 2 rodzajów przycisków.

Suwaki
zmieniające
pulsację i
amplitudę
sinusoidy

background image

8

Praca z MATLABEM w trybie konsoli

Command Windows- w tym oknie wprowadzane są polecenia
Matlaba oraz wyświetlane są wyniki (konsola).
Workspace- w miarę powoływania (używania) zmiennych w oknie
Command Win.- informacja o nich jest w tym oknie. Może być
ono przełączane na Current Directory.
Command History- w oknie tym pojawiają się kolejne wpisywane w

Command Windows polecenia (ale nie ma tu inf. np. o
wyświetlanych zawartościach zmiennych. Okno pozwala np. na
kopiowanie wcześniej zapisanych poleceń i użycie ich w czasie
bieżących obliczeń. Okno pamięta historię z przed wielu dni!




































My wpisujemy
polecenia po
znaku zachęty

>>

Matlab natychmiast
wykonuje polecenie
i podaje wynik

(gdy polecenie
kończy „;” lub tylko
pamięta wynik)

Czyszczenie

zawartości

okien

zapewniają

opcje w

Edit:

-Clear Works.
-Clear Comm
-Clear Hist.

Pozwala określić jakie

informacje wyswietlać

w

Workspace

(np. size-

rozmiar zmiennej, itp.)

i w jakiej kolejności

(np.: alfabetycznie, w

kolejności definiowania)

background image

9


Katalogi, pliki i ich rodzaje







































M- pliki

(np. rownanie.m)- umożliwiają definiowanie własnych

poleceń obliczeniowych i algorytmów.

FIG-pliki

- zawierają

polecenia realizacji interfejsu graficznego

GUI

(Graphics User

Interface) tworzonego przez użytkownika. GUI jest budowany z

gotowych komponentów, ale trzeba ręcznie zapewnić powiązania

między obiektami GUI a własnym programem. Np. jeśli w GUI

wprowadzimy przycisk OBLICZ to trzeba do niego dodać

„instrukcje”co ma robić program po naciśnięciu przycisku przez

użytkownika.

MAT-pliki

–i pliki ASCII- służą do wymiany danych

między Matlab a innymi programami. MEX-pliki- skompilowane w C

lub Fortranie programy do obliczeń lub sterowania urządzeniami.

Toolbox-

y- 20 specjalizowanych pakietów (np. Neural Network).

Wybór katalogów,

programów itp.

Simulink- łatwa

symulacja

układów np.

regulacji automat.

Czy też obliczeń

matematycznych

np. przy analizie

background image

10

Praca w Matlabie w trybie konsoli

Ogólny wygląd okien przy wpisywaniu poleceń w oknie

Command Window

Poniżej przedstawiono ciąg poleceń w Matlabie, pozwalający na
obliczanie pierwiastków równania kwadratowego. Ciąg poleceń
pozwala na:

wprowadzenie liczb do zmiennych a,b,c będących

współczynnikami równania typu: ax*x +b*x +c

sprawdzenie warunku istnienia pierwiastków rzeczywistych

(delta > lub równa zero)

Jeśli pierwiastki istnieją- to obliczenie ich i wyświetlenie w

oknie Command Window,

Jeśli pierwiastki nie istnieją to wyświetlenie stosownego

komunikatu,



Zmienne pojawiają się w przestrzeni
roboczej (

Workspace

) kolejno w trakcie

wpisywania poleceń w

Command Window

W oknie Historii (

Command History

) są pamiętane tylko

polecenia. Przy ponownym pisaniu sekwencji poleceń w oknie

Command Window niektóre z nich mogą być „przeciągane” –

co przyspiesza proces realizacji obliczeń.

Uwaga:
Wyjaśnienie tego
przykładu na
następnej
stronie!

background image

11

Obliczenia w Matlabie w trybie konsoli - przykład

Poniżej, dla lepszej przejrzystości przedstawiono ciąg poleceń
wpisywanych w oknie Command Window . Polecenia realizują
obliczanie pierwiastków równania kwadratowego.

Uwaga: kolory w tekście nadaje Matlab w trakcie pisania poleceń.

To get started, select "MATLAB Help" from the Help menu.
>> clc
>> format compact
>> a=input(

'a='

);

a=2
>> b=input(

'b='

);

b=3
>> c=input(

'c='

);

c=-1
>> delta=b.*b-4*a*c
delta =
17

% Obliczenia – to jest komentarz

>>

if

delta>0

x1=(-b-sqrt(delta))/(2*a)
x2=(-b+sqrt(delta))/(2*a)
disp(

'Pier1='

),disp(x1)

disp(

'Pier2='

),disp(x2)

elseif

delta==0

x1=-b/(4*a); disp(

'Pier1=Pier2='

), disp(x1);

else

disp(

'Brak pierw. rzeczywistych'

)

end




x1 =
-1.7808
x2 =
0.2808
Pier1=
-1.7808
Pier2=
0.2808
>>

>> a=input(

'a='

);

a=

Taki jak wyżej jest efekt wykonania
polecenia. Matlab czeka na
wprowadzenie wartości zmiennej i
potwierdzenie naciśnięciem Enter

Poniższe wyniki ukażą się dopiero po poprawnym zakończeniu
powyższej sekwencji instrukcji i jej interpretacji przez Matlab
Nastąpi to z chwilą wprowadzenia instrukcji

end

x1, x2- są zwracane bo
instrukcje definiujące
obliczanie x1 i x2 nie
kończą się średnikiem !

Wyniki wyjściowe

:

x1, x2- są zwracane w wyniku

wykonania instrukcji wyjścia typu

disp(). Wartości poprzedzone są

wydrukami tekstowymi

(tu Pier1= oraz Pier2=)

Po wpisaniu tej instrukcji i
zakończeniu jej wciśnięciem
Enter nie wystąpią dalej znaki
zachęty << bo Matlab nie wie
gdzie będzie koniec tej
konstrukcji- czeka na end !

background image

12

Pisanie dłuższego ciągu poleceń na konsoli jest trudne, bo prawie
nie sposób uniknąć błędów. Wygodniej jest:

o

zapisać polecenia w pliku,
Poleceniem:

File

New

wybrać M-file

Matlab udostępni okno edytora z domyślną nazwą pliku
(programu) Untitled . Przy pomocy edytora należy wpisać
polecenia (np. jak niżej w tabeli). W trakcie pisania edytor
rozpoznaje pewne konstrukcje językowe i zmienia kolor tekstu.
o

Po wpisaniu poleceń należy zapisać plik wybierając:

File

Save As

(można tu poda inną niż domyślna nazwę programu)

o

Następnie program można uruchomić z okna edytora
wybierając kolejno opcje:

Debug

Run























Jeśli wpisane polecenia są poprawne to Matlab je wykona, a ich
efekty będą widoczne w oknie Command np. jak niżej:
Podaj a=-2
Podaj b=5
Podaj c=4
Pier1=
3.1375
Pier2=
-0.6375
>>


clc
format compact
a=input(

'Podaj a='

);

b=input(

'Podaj b='

);

c=input(

'Podaj c='

);

% Wprowadzono dane teraz obliczenia – to
jest komentarz
delta=b*b-4*a*c;

if

delta>0

x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
disp(

'Pier1='

),disp(x1);

disp(

'Pier2='

),disp(x2);

elseif

delta==0

x1=-b/(4*a); disp(

'Pier1=Pier2='

),

disp(x1);

else

disp(

'Brak pierw. rzeczywistych'

);

end

background image

13

Środowisko Matlab- okno Command Window

Środowisko

Matlaba

obejmuje

zagadnienia:

obsługi

programu, odczytu i zapisu danych w plikach, a także
zarządzania pamięcią. Przed przystąpieniem do pracy z
pakietem

można,

ustawiając

odpowiednie

opcje,

przygotować środowisko pracy. Służą do tego specjalne
funkcje obsługujące okno poleceń(tzn Command Window):

Funkcja

Opis

clc

czyści okno i umieszcza kursora w lewym górn. rogu

home

umieszcza wiersza poleceń i kursora w lewym g. r. okna

echo on/echo off

włącza/wyłącza wysyłanie na ekran treści wykonywanych
poleceń

more on/more off

włącza/wyłącza stronicowanie tekstów wysyłanych na ekran

diary plik_nazwa

polecenia i teksty (bez grafiki) wysyłane na ekran będą
zapisywane w pliku o podanej nazwie

diary off/on

przełącznik funkcji diary

Sposób wyświetlania liczb w oknie określa funkcja format.
Nie wpływa ona na dokładność obliczeń, a tylko na widok
liczby na ekranie. W tabeli przedstawiono liczbę1/23 w
różnych formatach.

Format

Opis

Wynik dla liczby 1/23

short

5-cyfrowa liczba stałopozycyjna (format

domyślny)

0,0435

short e

5-cyfrowa liczba zmiennopozycyjna

4,3478e-002

long

15-cyfrowa liczba stałopozycyjna

0,04347826086957

long e

15-cyfrowa liczba zmiennopozycyjna

4,347826086956522e-2

short g

5 znaczących cyfr liczby stało- lub zm. poz.

0,043478

long

15 znaczących cyfr liczby stało- lub zm.

poz.

0,0434782608695652

hex

liczba szestnastkowa

3fa642c8590b2164

+

drukuje znak + dla liczb dodatnich, - dla

ujemnych, spację dla zera

+

bank

format walutowy (część całkowita i do

dwóch miejsc po przecinku)

0,04

rat

przybliża liczbę ułamkami małych liczb

całkowitych

1/23

compact

Wył. dodawanie dodatkowych pustych

wierszy

loose

Wł. dodawanie dodatkowych pustych

wierszy

Odpowiedni format ustawia się poleceniem np.

» format bank

background image

14

Przykład

Przygotuj środowisko pracy Matlaba. W tym celu:


a) rozpocznij zapisywanie wydawanych poleceń w pliku

Matlab.txt,

» diary Rejestr.txt


b) wyczyść okno poleceń, wyłącz opcję wysyłania na

ekran treści wykonywanych poleceń oraz ustaw format
wyświetlania danych na long e,

» clc, echo off, format long e

c) zdefiniuj x=12.34 oraz zakończ zapisywanie w pliku

Rejestr.txt.

» x=12.3456, diary off



Po wykonaniu powyższych poleceń plik

Rejestr.txt

zawiera

tekst:

clc, echo off, format long e
x=12. 3 4 , diary off

x =

1.234000000000000e+001

diary off

>>format short

background image

15

Przestrzeń robocza- Workspace

Przestrzeń robocza (Workspace) Matlaba jest to obszar

pamięci, w którym przechowywane są zmienne utworzone w oknie
poleceń Command Window. W Matlabie są funkcje umożliwiające
operacje na tych zmiennych . Są one przedstawione w tabeli:.

Funkcja

Opis

who

wyświetla listę wszystkich zmiennych znajdujących się w
pamięci

whos

wyświetla listę wszystkich zmiennych wraz z informacją na

temat ich rozmiaru i rodzaju

who global
whos global

wyświetlają informacje o zmiennych globalnych

clear

usuwa z pamięci wszystkie zmienne

clear z

usuwa z pamięci zmienną o nazwie

z

clear zl z2 z3

usuwa z pamięci wymienione zmienne

clear global z

usuwa z pamięci zmienną globalną o nazwie

z

clear all

usuwa z pamięci wszystkie zmienne i funkcje; pozostawia

przestrzeń roboczą zupełnie pustą

Ponieważ zmienne przechowywane są w pamięci tylko

podczas danej sesji pracy z pakietem (lub dopóki nie

zostaną usunięte), można zapisać całą aktualną zawartość

przestrzeni roboczej w pliku, a później ją odtworzyć –

tabela

Funkcja

Opis

save

zapisuje binarnie wszystkie zmienne w pliku

matlab.mat

save plik

zapisuje binarnie wszystkie zmienne w pliku o nazwie

plik.mat

save plik lista

zapisuje binarnie w pliku o nazwie

plik.mat

tylko zmienne

wymienione jako

Lista

load

wczytuje zmienne zapisane w pliku

matlab.mat

do

Workspace

load plik

wczytuje zmienne zapisane w pliku

plik.mat

load plik.rozsz

wczytuje zmienne zapisane w pliku tekstowym o podanej
nazwie i dowolnym rozszerzeniu; dane muszą tworzyć
tablicę prostokątną; wczytane dane zostaną zapisane w
macierzy o nazwie

plik

background image

16

Przykład

Wykonaj następujące polecenia:


a) zdefiniuj zmienne (tablice:)

>>A=randn(1,100);
>>B=rand(1,100)

Zostanie wygenerowana tablica A wierszowa
zawierająca 100 losowych wartości z rozkładu
normalnego N(0,1) oraz tablica B zawierająca 100

Liczb z rozkładu równomiernego z przedziału [0:1.0]

c) zapisz zmienne A i B(tablice )

w pliku o nazwie

Tablice

.mat,

» save Tablice A B

d) skasuj tablicę z pamięci (workspace)

» clear all

e)

zamknij Matlab i ponownie go uruchom
odczytaj dane zapisane w pliku

Tablice.mat.

» load Tablice %odczyt rejestracji

W pamięci Workspace ponownie pojawi się tablica A i B
zawierzające liczby losowe.

Powyższe czynności pokazują jak zachowywać zmienne
do dalszego wykorzystania (np. w innym programie, w
innym czasie).

background image

17

Typy danych

Matlab dopuszcza użycie sześciu typów danych:

double, char,

cell i struct

. W praktyce najczęściej stosowane są dwa:

double

- liczby podwójnej precyzji,

char

- znaki i łańcuchy znaków.

Liczby podwójnej precyzji

Wszystkie obliczenia Matlaba wykonywane są na liczbach

podwójnej precyzji. Tablica liczb podwójnej precyzji jest
podstawową zmienną programu i wszystkie formaty liczb w
rzeczywistości przechowywane są w pamięci jako właśnie taki typ
danych. Zakres typu zależy od komputera i określony przez stałe

realmin i realmax.

Łańcuchy znakowe

Łańcuchy są wektorami składającymi się ze znaków. Łańcuch

znakowy definiuje się za pomocą apostrofów, np.

» s='

Matlab

s =
Matlab

Łańcuch przechowywany jest w pamięci w postaci wektora liczb
całkowitych reprezentujących kody ASCII poszczególnych znaków.
Konwersji łańcucha na wektor kodów ASCII można dokonać za
pomocą polecenia

» a = double( s )

a =

77 97 116 108 97 98

Konwersję odwrotną wykonuje polecenie

char(a).

Z łańcuchów można budować macierze

znakowe. Polecenie

» w=['Jezyk ' s]

połączy łańcuchy w poziomie w 12-elementowy wektor znakowy

w:

w =
Jezyk Matlab

Z kolei polecenie

» M=['Jezyk '; s]

połączy łańcuchy w pionie i zwróci macierz znakową M o rozmiarze
2x6

M =
Jezyk Matlab

Uwaga: Oba wiersze macierzy M muszą mieć jednakową długość.

background image

18

Ponieważ łańcuch jest wektorem, można na nim wykonywać
operacje, jak na zwykłych wektorach. Przykładowo polecenie

» length(s)

zwróci liczbę 6 (liczba znaków w łańcuchu s). Z tego samego
względu do wyświetlania łańcuchów można użyć funkcji

disp, np

.

» disp(w)

Oprócz tego Matlab zawiera liczne funkcje operujące na

łańcuchach. Niektóre z nich zostały przedstawione w tabeli:

Funkcja

Opis

deblank(s)

usuwa spacje z końca łańcucha, np. s=deblank(s)

findstr(sl,s2)

szuka krótszego z łańcuchów sl i s2 w dłuższym; zwraca

wektor indeksów, od których zaczyna się krótszy łańcuch

lower(s)

zmienia wszystkie litery w łańcuchu na małe

strcat(sl,s2,s3,...)

łączy łańcuchy w poziomie z pominięciem spacji na
końcu Polecenie

strcat('Język ', s)

zwróci 'JęzykMatlab'

strcmp(sl,s2)

porównuje dwa łańcuchy; jeśli są identyczne, zwraca 1,

jeśli nie - 0; funkcja rozróżnia wielkość liter

strcmpi(sl,s2)

porównuje dwa łańcuchy bez rozróżniania wielkości liter

strncmp(sl,s2,n)

porównuje n pierwszych znaków w dwu łańcuchach

strvcat(sl,s2,s3)

łączy łańcuchy w pionie, dodając na końcu każdego z
nich odpowiednią liczbę spacji; zwraca macierz

upper(s)

zmienia wszystkie litery w łańcuchu na duże

WAŻNE:

Czasem zachodzi konieczność przekształcenia danej liczbowej na

tekst (np. podczas wyświetlania wartości liczbowych w oknie graficznym)
lub odwrotnie. Służą do tego m.in. funkcje konwertujące liczby na łańcuchy
Są one zestawione w poniższej tabeli.

Funkcja

Opis

int2str(n)

konwertuje liczbę całkowitą

n

na łańcuch (niecałkowita

przed konwersją jest zaokrąglona); argum. może być mac.

num2str(x)

konwertuje wyrażenie Matlaba (liczbę, macierz lub polecenie)
na łańcuch

str2double(s)

konwertuje łańcuch

s

na liczbę (rzeczywistą lub zespoloną);

liczba w łańcuchu musi mieć prawidłowy format

background image

19

Przykład

Zdefiniuj zmienne:

x=12.34, y=12.34e-5, s= program oraz s1 = ’

56.78

'.

»

x=12.34, y=12.34e-5, s='program', sl='56.78'

x =

12.3400

y =

1.2340e-004

s =

program

sl =

56.78

Wykonaj poniższe polecenia:

a)

dokonaj konwersji wartości liczbowych x i y na łańcuchy
znaków

» s2=num2str(x), s3=int2str(x), s4=num2str(y)

s2 =

12.34

s3 =

12

(liczba rzeczywista została zaokrąglona)

s4 = 0 . 0 0 0 1 2 3 4

b)

dokonaj konwersji łańcuchów s i s1 na liczby rzeczywiste

,

» xl=str2double(s), x2=str2double(sl)

xl
= NaN

(bo nie ma możliwości konwersji stałej tekstowej na liczbę)

x2
= 56.7800

a)

dokonaj konwersji wyrażenia

sin(2*pi*x)

na łańcuch znaków

» num2str(sin(2*pi*x))

ans
= 0.84433

Matlab
wyświetli taką
zawartość
zmiennych

background image

20

Podstawowe funkcje i stałe matematyczne

Najważniejsze z funkcji zostały przedstawione w tabeli. Większość
funkcji dopuszcza użycie argumentów zespolonych. Ponieważ
wszystkie

zmienne

Matlaba

traktowane

jako

macierze,

argumentem każdej funkcji może też być macierz

. W takim wypadku

odpowiednia operacja wykonywana jest na każdym elemencie
macierzy z osobna.

Funkcja

Opis

sin(z), cos(z), tan(z), cot(z)

funkcje trygonometryczne: sinus, cosinus, tangens,
cotangens; argument funkcji podawany jest w rad.

asin(z), acos(z), atan(z),
acot(z)

funkcje cyklometryczne; wynik podawany jest w
radian.

sinh(z), cosh(z), tanh(z),
coth(z)

funkcje hiperboliczne- argument funkcji w
radianach

asinh(z), acosh(z), atanh(z)

funkcje odwrotne do hiperbolicznych-wynik w
rad.

sqrt(z)

√√√√

z (jeśli z<0, wynik jest zespolony)

exp(z)

e^z

log(z)

In z (jeśli z<0, wynik jest zespolony)

log2(z)

log

2

z (jeśli z<0, wynik jest zespolony)

logl0(z)

log

]0

z (jeśli z<0, wynik jest zespolony)

abs(z)

z lub moduł liczby zespolonej

angle(z)

argument liczby zespolonej

real(z), imag(z)

część rzeczywista i urojona liczby zespolonej

conj(z)

liczba zespolona sprzężona

complex(x,y)

utworzenie liczby zespolonej:

complex(x,y)=x + y*i

ceil(z)

zaokrąglenie liczby w górę

floor(z)

zaokrąglenie liczby w dół

fix(z)

zaokrąglenie liczby dodatniej w dół, ujemnej w górę

round(z)

zaokrąglenie liczby do najbliższej liczby całkowitej

rem(x,y)

reszta z dzielenia x przez y obliczona według

wzoru:

rem(x,y)=x-n*y

, gdzie n=fix(x/y)

mod(x,y)

Reszta z dzielenia x przez y :

mod(x,y)=x-n*y

gdzie: n=floor(x/y), mod(x,y)=rem(x,y) jeśli x,y-

ten sam znak

sign(x)

Funkcja signum (1 dla x>0, 0 dla x=0, -1 dla x<0)

background image

21


Funkcje matematyczne c.d.

Jedna z grup funkcji matematycznych Matlaba (tabela

niżej) operuje tylko na wektorach.

Jeśli argumentami tych

funkcji są macierze, zwracają one wynik w postaci wektora,
obliczony oddzielnie dla każdej kolumny macierzy

.

Funkcja

Opis

max(x)

zwraca największy element wektora x

min(x)

zwraca najmniejszy element wektora x

sum(x)

zwraca sumę elementów wektora x

prod(x)

zwraca iloczyn elementów wektora x

mean(x)

zwraca średnią arytmetyczną elementów wektora x

W Matlabie zostały też zdefiniowane niektóre stałe

matematyczne (tabela niżej). Posługując się nimi, należy
jednak pamiętać, że ich nazwy nie są zastrzeżone. Przez
nieuwagę ich wartość może ławo zostać zastąpiona inną.
Ustawienia domyślne wartości stałych przywraca funkcja

clear

.

Stała

Opis

pi

przybliżenie wartości π

πππ

i lub j

√√√√-1

eps

względna dokładność zmiennoprzecinkowa

Inf lub inf

nieskończoność (ang.

infinity

); jest rezultatem operacji, która

przekracza zakres arytmetyki komputera- np. dzielenie
przez 0

NaN lub nan

nie liczba (ang.

Not-a-Number

); jest wynikiem matematycznie

niezdefiniowanych operacji - np. Inf/Inf lub 0/0; dzięki
takiemu podejściu dzielenie przez zero nie prowadzi do
przerwania operacji - wyświetlany jest odpowiedni
komunikat, a zmiennej nadawana jest wartość specjalna

background image

22

Pomiar czasu

Do odmierzania upływu czasu (np. podczas wykonywania

obliczeń) i określania aktualnej daty służą funkcje zestawione w
tabeli .

Funkcja

Opis

clock

podaje aktualną datę i czas w postaci sześcioelementowego
wektora [

rok miesiąc dzień godzina minuta sekunda

]

date

podaje aktualną datę w postaci łańcucha o formacie:

'dd-mmm-rnr'

etime(t2, tl)

podaje różnicę czasu, który upłynął między chwilami

tl

i

t2

(gdzie:

tl, t2

- wektory o formacie, jak w poleceniu

clock

)

tic

zeruje odmierzanie czasu przed użyciem polecenia

toc

toc

podaje czas (w sekundach), który upłynął od momentu użycia
polecenia

tic

Przykład

Wygeneruj wektor x= 1: 0.0001 : 1000 (taki zapis w matlabie tworzy
wektor x którego pierwszym elementem jest liczba 1 następnie
1.0001, 1.0002, 1.0003 itd.) i sprawdź, ile czasu zajęło jego
utworzenie.

» tic, x=1:0.0001:1000; toc

elapsed_time

=

0.1510

Generacja wektora o większej liczbie elementów ( np.
x=1:0.0001:10000) może zakończ się komunikatem o przekroczeniu
pamięci (zależy to od komputera):


??? Error using >:
Out of memory. Type HELP MEMORY for yor options

background image

23

Definiowanie macierzy i wektorów

Definiowanie bezpośrednie

Reguły:

• Elementy w wierszu muszą być oddzielone spacją lub

przecinkiem,

• Średnik lub znak nowego wiersza (Enter) kończy wiersz

macierzy i powoduje przejście do następnego,

• Lista elementów musi być ujęta w nawiasy kwadratowe,
• Ogólna struktura macierzy A jest następująca:

>> A=[.......elementy i separatory elementów i kolumn...........]

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

A =
1 2 3
4 5 6

>> size(A)

ans = % Matlab podaje wartość, ale po przez ans bo size
2 3 % nie przyporządkowano żadnej zmiennej.

>> A= [1, 2, 3
4, 5, 6 ]

% inny sposób zdefiniowania A

>> X=[1 2 3 4]

% definiowanie wektora z separatorem spacji

X =
1 2 3 4

>> X=[1, 2, 3, 4]

% definiowanie wektora z użyciem separatora ‘ ,’

X =
1 2 3 4

Budowa macierzy z podmacierzy:

>> A=[1 2; 3 4]

A =

1 2
3 4

>> B=[5 6 7]

B =
5 6 7

>> C=[8;9]

C =
8
9

>> D=[B; C A]

D =

5 6 7

8

1 2

9

3 4

background image

24

Wyświetlanie macierzy i ich rozmiarów

Podane w poniższej tabeli funkcje wyświetlają zawartość i rozmiar

macierzy.

Funkcja

Opis

disp(A)

wyświetla zawartość macierzy

A

w oknie poleceń

size(A)

wyświetla rozmiar dwuwymiarowej macierzy

A

(liczbę

wierszy i kolumn) w postaci dwuelementowego wektora
wierszowego

[liczba wierszy liczba kolumn]

[n m]=size(A)

przypisuje zmiennej

n liczbę wierszy

, a zmiennej

m -

liczbę kolumn

macierzy

A

n=size(A,l)

przypisuje zmiennej

n liczbę wierszy

macierzy

A

m=size(A,2)

przypisuje zmiennej

m liczbę kolumn

macierzy

A

length(x)

zwraca długość wektora

x

lub dłuższy z wymiarów

macierzy

Funkcje generujące i przekształcające macierze

W tabeli przedstawiono funkcje Matlaba ułatwiające definiowanie

niektórych macierzy specjalnych.

Funkcja

Opis

eye(n)

tworzy macierz jednostkową o rozmiarze nxn z

jedynkami

na

głównej przekątnej,

reszta elementów równa zeru

),np.X=eye(3)

ones(n)

tworzy macierz o rozmiarze nxn o wszystkich elementach =

1

zeros(n)

tworzy macierz o rozmiarze nxn o wszystkich elementach =

0

rand(n)

tworzy macierz o rozmiarze nxn wypełnioną liczbami
pseudolosowymi z

przedziału <0,l>

o rozkładzie jednostajnym

randn(n)

tworzy macierz o rozmiarze nxn wypełnioną liczbami
pseudolosowymi o rozkładzie normalnym ze

średnią 0 i war. =1


Uwaga:
Wszystkie funkcje przedstawione w tabeli 4 mogą generować
macierze prostokątne o rozmiarze mxn. Odpowiednią funkcję
należy wtedy wywołać z dwoma argumentami, np. rand(m,n).

background image

25

W operacjach macierzowych pomocne są funkcje przedstawione w

poniższej tabeli:

Funkcja

Opis

A=diag(x)

utworzenie macierzy przekątniowej A ze składnikami
wektora x na głównej przekątnej

x=diag(A)

utworzenie wektora x z elementów znajdujących się na
głównej przekątnej macierzy A

inv(A)

utworzenie macierzy odwrotnej do A; inv(A)=A

^

(-l)

repmat(A,n,m)

utworzenie macierzy przez powielenie podmacierzy A m
razy w poziomie i n razy w pionie

reshape(A,n,m)

utworzenie macierzy o n wierszach i m kolumnach z
elementów branych kolejno kolumnami z macierzy A;
jeśli A nie zawiera mxn elementów, to pojawi się
komunikat o błędzie

rot90(A)

obrócenie macierzy A o 90° w kierunku przeciwnym do
ruchu wskazówek zegara

tril(A)

utworzenie z macierzy A macierzy trójkątnej dolnej
(wyzerowanie elementów leżących powyżej głównej
przekątnej)

triu(A)

utworzenie z macierzy A macierzy trójkątnej górnej
(wyzerowanie elementów leżących poniżej głównej
przekątnej)



background image

26

Użycie dwukropka w definicji macierzy:

Dwukropek może być wykorzystywany na kilka sposobów np.:

• Wyrażenie min : max –generuje wektor wierszowy zawierający

liczby całkowite od min do max,

• Wyrażenie min: krok: max pozwala generować wektor

wierszowy zawierający ciąg liczb z dowolnym krokiem (także
niecałkowitym lub ujemnym).

>> X = 2 : 6

% tu nie musimy używać nawiasów[ ], ale możemy

X =
2 3 4 5 6

>> X=2.0 : 6.0

X =
2 3 4 5 6

>> X=2.1 : 6.3

X =

2.1000 3.1000 4.1000 5.1000 6.1000

>> y=-2.0 :0.5 : 2

% definiowanie elementów z zadanym krokiem

y =

-2.000 -1.5000 -1.000 -0.500 0 0.500 1.000 1.500 2.000

>> A=[1: 5 ; 6: 0.5: 8 ; 15 :19]

A =

1.0000 2.0000 3.0000 4.0000 5.0000

6.0000 6.5000 7.0000 7.5000 8.0000

15.0000 16.0000 17.0000 18.0000 19.0000

Poniższa tabela zawiera zestawienie sposobów

odwołania do fragmentów macierzy z użyciem
dwukropka.

Odwołan

ie

Opis

x(j:k)

elementy wektora wierszowego

x

o numerach od

j do k

A(i, :)

wszystkie elementy

w wierszu

i

macierzy A

A(i,j:l)

wszystkie

elementy

w wierszu

i

macierzy A o numerach od

j do l

A(i:k,j:l)

wszystkie elementy w

kolumnach od j do l

wierszy od i do k

macierzy A

A(x,j:l)

wszystkie elementy w

kolumnach od j do l

w wierszach mac.

A

o numerach określonych przez elementy wektora

x

A(:,:)

cała dwuwymiarowa macierz

A

A(:)

cała macierz

A

w postaci wektora kolumnowego

background image

27

Dostęp do elementów macierzy

Zdefiniujmy macierz:

>> A=[1:5; 6:10; 11:15

]

A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

>> y=A(3,2)

% adres elementu (w,k)- tu używamy nawiasy typu ( )

y =

12

>> x=A(6)

% adres w tablicy A[

elementy kol_1, elementy kol_2, itd.....

]

x =

12

>> A(2,4)=99;

>> A

A =

1 2 3 4 5

6 7 8 99 10

11 12 13 14 15

Odwołania do fragmentów macierzy (podmacierzy

)

>> A=[1:5;6:10;11:15]

% definiujemy macierz

A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

>> A(2:3, 3:4)

% dostęp do podmacierzy

ans =
8 9
13 14

Ale gdybyśmy nie użyli nawiasów:
>> A=1:5;6:10;11:15
ans =
11 12 13 14 15
(błędna formuła- ale bez sygnalizacji
błędu formalnego)

Natomiast polecenie:

A(2, :)=[ ]- usunie wiersz

drugi z macierzy- czyli
zmieni się wymiar A

background image

28

Odwołania do fragmentów macierzy ze wskazaniem
wierszy lub kolum

Niech będzie zdefiniowana macierz:

>> A=[1:5;6:10;11:15]

% definicja

A =

1 2 3 4 5

6 7

8 9 10

11 12

13 14 15

Chcemy wybrać fragment macierzy zaznaczony na zielono:

>>

x=

[2 3]

% dostęp do elementów wierszy podanych w wektorze x

>>

A(

x

, 3:5)

ans =
8 9 10
13 14 15

Nr wierszy nie muszą być kolejnymi np.: x=[1 3].
W podobny sposób posługując się innym wektorem np. y możemy
wskazywać kolejne lub niekolejne kolumny macierzy z których
chcemy wybrać elementy.

>>

x

=[3 1 5];

% tu zdefiniowano inną kolejność wyboru elementów

>>

B=A(2,

x)

B =
8 6 10

>> B=A(2, :)

% wszystkie elementy wskazanego wiersza (tu w=2)

B =
6 7 8 9 10

>>B= A(2, 3:5)

% elementy z części kolumn wiersza

B=
8 9 10

>> A(:,:)

% cała macierz

ans =

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

>> B=A(:)

% Zapis macierzy A(w,k) w postaci wektora kolumnowego

ans =
1
6
11
2
7
........

background image

29

Operacje na wektorach

Przykład: Dodawanie wektorów

>> x=[1; 2; 3]

x =
1
2
3

>> y=[4; 5; 6]

y =
4
5
6

>> z= x+y

z =
5
7
9
Przykład: Odejmowanie wektorów

>> x=[1; 2; 3];

>> y=[4; 5; 6];

>> z=x-y

z =
-3
-3
-3

>> z=y-x

z =
3
3
3
Przykład: Mnożenie wektorów przez stałą

>> x=[1;2;3]

x =
1
2
3

>> c=5;

>> z=c * x

%mnożenie lewostronne

z =
5
10
15

>> z=x * c

%mnożenie prawostronne

z =
5
10
15

Powołujemy

wektory kolumnowe
x, y po przez ich
zdefiniowanie

Definiujemy

operację:

z=x+y

background image

30


Przykład: Mnożenie wektorów

>> x=[1, 2, 3];

>> y=[4, 5, 6];

>> z=x*y

??? Error using ==> *
Inner matrix dimensions must agree.

>> x=[1, 2, 3];

>> y=[4, 5, 6];

>> z=x.*y

% stosujemy operator tablicowy

z =
4 10 18
Przykład. Mnożenie wektorów- inna forma wprowadzania danych

>> x=[1 2 3]

x =
1 2 3

>> y=[4; 5; 6]

y =
4
5
6

>> z=x*y

z =
32
Przykład. Ten sam zapis bez wyświetlania wyników pośrednich

>> x=[1, 2, 3];

>> y=[4; 5; 6];

% y- jest tu wektorem kolumnowym

>> z=x*y

z =
32

% wynikiem jest liczba

Przykład: Wektory x i y kolumnowe

>> x=[1; 2; 3]

x =
1
2
3

>> y=[4; 5; 6]

y =
4
5
6

>> z=x*y

??? Error using ==> *
Inner matrix dimensions must agree.

Taka operacja jest
niepoprawna!

Taka operacja jest
niepoprawna!

background image

31

Przykład: Wektory kolumnowe – Mnożenie z wykorzystaniem oper.
tablicowego.

>> x=[1; 2; 3]

x =
1
2
3

>> y=[4;5;6]

y =
4
5
6

>> z=x.*y

z =
4
10
18
Przykład: Dzielenie wektorów wierszowych

>> x=[1 2 3]

x =
1 2 3

>> y=[4 5 6]

y =
4 5 6
>> z=x/y
z =
0.4156
>> z=y/x
z =
2.2857
Powyższe operacje są realizowane, ale nie są poprawne!!!.
Przykład Dzielenie wektorów kolumnowych

>> x=[1; 2; 3];
>> y=[4; 5; 6];

>> z=x/y

z =
0 0 0.1667
0 0 0.3333
0 0 0.5000

>> z=y/x

z =
0 0 1.3333
0 0 1.6667
0 0 2.0000

Operator tablicowy:
>> x=[1; 2; 3];
>> y=[4; 5; 6];
>> z=x./y
z =
0.2500
0.4000
0.5000

Dla operatora tablicowego
operacja jest poprawna:

>> x=[1 2 3];
>> y=[4 5 6];
>> z=x./y
z =
0.2500 0.4000 0.5000

background image

32

Macierze

Arytmetyka macierzowa i tablicowa

Definiujemy dwie macierze A i B:

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

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

A = B =

1 -1 1 1
-2 3 0 -2

>> A+B

% dodawanie macierzy

ans =
2 0
-2 1

>> A - B

% odejmowanie macierzy

ans =
0 -2
-2 5

>> A.+B

??? A.+B.
Error: "identifier" expected, "+" found.

W dodawaniu i odejmowaniu operator tablicowy nie jest
akceptowany.
Dodawanie macierzowe = dodawaniu tablic czyli wynik jest ten sam.
Wymiary macierzy muszą być takie same.

>> A * B

% mnożenie macierzy

ans =
1 3
-2 -8

>> B * A

% mnożenie macierzy

ans =
-1 2
4 -6

Uwaga: Mnożenie nie jest przemienne
>> A. * B

% Mnożenie tablicowe

ans =
1 -1
0 -6

>> B.* A

ans =
1 -1
0 -6

Uwaga: Mnożenie z operatorem
tablicowym jest przemienne

background image

33

Definiujemy do dalszego użycia macierze A i B:

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

A = B =

1 -1 1 1
-2 3 0 -2


>> C=B/A

%

dzielenie prawostronne

B=C*A


C =
5 2
-4 -2

>> C=A\B

%

dzielenie lewostronne

B=A*C


C =
3 1
2 0

>> A^2

% potęgowanie

>> A*A

% A*A=A^2

ans = ans =
3 -4 3 -4
-8 11 -8 11

>> A.^2

% potęgowanie tablicy

ans =
1 1
4 9

>> A'

% transponowanie – zamiana wierszy na kolumny


ans =

1 -2
-1 3

background image

34

Zmiana kształtu (formy) macierzy


Tworzenie macierzy z(k-liczba kolumn, w-licz. wierszy) z elementów
wektora y(w*k).

>> y=[1,2,3,4,5,6,7,8,9]

k=3;
w=3;

if

length(y)==w*k


z=reshape(y,w,k)


else

'Nie mozna wykonac'

end


y =
1 2 3 4 5 6 7 8 9
z =
1 4 7
2 5 8
3 6 9
Przykład: Mnożenie macierzy przez stałą

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

A =
1 2 3
4 5 6

>> c=2;
>> z=A*c

z =
2 4 6
8 10 12

>> Z=c*A

Z =
2 4 6
8 10 12

Ten ciąg poleceń skopiowano z
okna historii i wstawiono po
znaku >> zachęty w oknie
Commnand
Naciśnięcie Enter po end
powoduje wyświetlenie wyników

background image

35

Przykład: Mnożenie macierzy przez wektor

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

A =

% liczba w1=2 k1=3

1 2 3
4 5 6

>> x=[7; 8; 9]

% liczba w2=1 k2=3

x =
7
8
9

>> Z=A*x

Z =

50
122

% Wynikiem jest wektor kolumnowy o liczbie wierszy w=w1 , k=w2


Operacje transponowania
>>x = [1 2 3]

x=
1 2 3

>> z = x'

z =

1
2
3

Przykład: Transponowanie macierzy

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

A =

% Macierz A

1 2 3
4 5 6

>> Z=A'

Z =
1 4

% Macierz A transponowana

2 5
3 6

Wektor x

Wektor
transponowany
X

T

background image

36

Przykład: Mnożenie macierzy

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

A =

% Macierz A - wA=2, kA=3

1 2 3
4 5 6

>> B=[1 1; 0 2; 3 1]

% Macierz B- wB-3 kB=2

B =
1 1
0 2
3 1

>> Z=A*B

Z =

% Macierz kwadratowa Z=A*B – licz. w=2 k=2

10 8

22 20

>> Z= A.* B

% Mnożenie z operatorem tablicowym


??? Error using ==> .* Matrix dimensions must agree.

>> Z=A.*A

% Mnożenie z operatorem tablicowym


Z = 1 4 9 % każdy elem. jest iloczynem elem. o tych
% samych indeksach.
16 25 36

Przykład Podnoszenie macierzy do potęgi

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


A =
1 2 3
4 5 6

>> A=A*A

??? Error using ==> * Inner matrix dimensions must agree.

>> A=A^2

??? Error using ==> ^ Matrix must be square.


Ale potęgowanie tablicy prostokątnej jest możliwe dla operatora
tablicowego

>> A=A.^2

A =
1 4 9
16 25 36

background image

37


Przykład Potęgowanie macierzy: A^3= A*A*A

>> A=[1 0; 3 2]

A =
1 0
3 2

>> Z=A^2

Z =
1 0
9 4

>> Z=A^3

Z =

1 0

21 8

Obliczanie Wyznacznika Macierzy

>> A=[1 3 1; 2 5 2; 1 1 0]


A =
1 3 1
2 5 2
1 1 0

>> det(A)

ans =
1











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

>> wyzn= det(A)
wyzn =
2

background image

38

Obliczanie macierzy odwrotnej

>> A=[1 3 1; 2 5 2; 1 1 0]
A =
1 3 1
2 5 2
1 1 0
>> det(A)
ans =
1

„Ręczne” obliczanie macierzy odwrotnej do A wymagałoby:

• obliczenia wyznacznika det(A)
• wyznaczenia macierzy dopełnień D
• wyznaczenia macierzy transponowanej D

T

• wyznaczenia macierzy odwrotnej wg: A

-1

=1/det(A) * D

T

>> OdwrA=A^(-1)

%

Ta operacja Matlab wyznacza macierz odwrotną do A

Odwr =

-2.0 1.0 1.0
2.0 -1.0 0
-3.0 2.0 -1.0

Wykorzystanie macierzy odwrotnej przy rozwiązaniu

układu równań

Przykład: Rozwiązać układ równań

x + 3y + z =10 1 3 1

2x + 5y + 2z=18

Macierz współczynników: A= 2 5 2

x + y =3 1 1 0

-2.0 1.0 1.0

A=

A

-1

=1/det(A) * D

T

=

2.0 -1.0 0

-3.0 2.0 -1.0

Układ równań można zapisać w postaci:
x 10
A * y = 18 /trzeba po

dzielelić przez A (odpowiada to * A

-1

)

z

3


x 10
y = A

-1

18

z

3

x

-2 1 1 10 (-2)*10 +1*18 +1*3

1

y

= 2 -1 0 * 18 = 2*10 +(-1)*18 +0*3 =

2

z

-3 2 -1 3 (-3)*10+2*18 +(-1)*3

3

Szukane

rozwiązanie

„Ręcznie” można obliczyć z wzoru Sarrusa:
1*5*0 + 3*2*1 + 1*2*1 – 1*5*1-1*2*1-0*2*3=1

background image

39

Zasada określanie macierzy D dopełnień dla macierzy A

A=





D=

(-1)

1+1


5

2

1

0

(-1)

1+2

2

2

1

0

(-1)

1+3

2

5

1

1

(-1)

2+1



3

1

1

0

(-1)

2+2

1

1

1

0

(-1)

2+3

1

3

1

1

(-1)

3+1



3

1

5

2

(-1)

3+2

1

1

2

2

(-1)

3+3

1

3

2

5

W efekcie postepowania zgodnie z powyższą zasadą
macierz dopełnień D jest następująca:

-2

2

-3

1

-1

2

1

0

-1

I odpowiadająca jej macierz D

T

jest jak niżej:

-2

1

1

2

-1

0

-3 2

-1

Mając det(A) i D

T

można obliczyć macierz odwrotna ze wzoru :

A

-1

=1/det(A) * D

T

Ponieważ tu 1/det(A) =1 Stąd mamy: A

-1

= D

T




Obliczenia w Matlabie

1

3 1

2

5 2

1

1

0

Macierz wyjściowa A

-2

1

1

2

-1

0

-3 2

-1

Macierz obliczona „ręcznie” i otrzymana z Matlaba

poleceniem:

>> OdwrA=A^(-1)

%

są identyczne

Zasada
Obliczania
dopełnienia
dla elementu
A[2, 2]

background image

40

Poszukiwanie trendu dla danych pomiarowych-

analiza teoretyczna

Zagadnienie poszukiwania trendu ma szerokie zastosowanie np.
ocena trendu na giełdzie, trendu bezrobocia itp.

Dane są następujące pomiary pewnej wartości:
Nr

1

2

3

4

5

6

7

8

9

x

1

3

5

7

9

11

13

15

17

y

119

105

120

90

100

85

90

75

80

Linia trendu

y = -5,1833x + 121,92

0

20

40

60

80

100

120

140

X

Y

x

y

Linia trendu


Do wyznaczenia trendu wielkości y można zastosować metodę
najmniejszych kwadratów (MNK). Została ona opracowana przez
Lagrendre’a i Gausa (1805-1809). Jej zasada jest następująca:

Wynik kolejnego pomiaru y

i

uważa się za sumę nieznanej

wartości y i błędu pomiarowego

εεεε

j

,

Należy tak dobrać wielkości εεεε

j

aby suma kwadratów błędów

εεεε

j

była jak najmniejsza tzn:

min

2

2

=





j

j

j

j

y

y

ε

MNK może być używana również gdy wielkości mierzone yj nie są

wprost zależne od wielkości x, lecz są w ogólnym przypadku sumą

wielu zmiennych.

background image

41

Przypadek trendu liniowego

Przyjmujemy założenie o postaci linii trendu typu:

a

x

a

y

i

i

0

1

*

+

=

Można wykazać, że wartości a

0

i a

1

dane są zależnościami:














Zależności te wynikają z rozwiązania układu równań
różniczkowych:

(

)

(

)

min

,

1

2

1

0

0

1

=

=

n

i

a

x

a

y

i

i

a

a

f

ekstremum

istnienia

a

f

konieczne

warunki

a

f

0

0

1

0

=

=


Wynik rozwiązania metodą MNK można uzyskać posługując się
postacią macierzową:





Powyższe równanie pozwala wyznaczyć współczynniki linii trendu.

=

=

=

=

=

=

n

i

n

i

i

i

n

i

n

i

i

i

n

i

i

i

x

x

n

y

x

y

x

n

a

1

1

2

2

1

1

1

1

=

x

a

y

a

1

0

(

)

(

)

y

a

a

X

X

X

T

T

*

*

*

1

1

0

=

background image

42

Wyprowadzenie wzorów na współczynniki (a

0

,a

1

)


1.

Określenie wartości współczynnika a

0

:


Obliczamy pochodną:































0

0

1

=

a

x

a

y

0

1

1

1

1

0

1

1

=

=

=

n

i

i

n

i

i

na

n

x

a

n

y

n

.

.

.

.

1

0

o

d

b

c

x

a

y

a

=

(

)

(

)

0

1

*

2

,

1

1

0

0

0

1

=

=

=

n

i

a

x

a

y

i

i

a

a

f

a

2

/

0

2

2

2

1

1

0

1

1

=

=

=

=

n

i

n

i

i

n

i

i

a

x

a

y

n

na

x

a

y

n

i

i

n

i

i

/

0

1

0

1

1

=

=

=

background image

43

(

)

(

)

2

/

0

)

(

*

2

,

1

1

0

1

0

1

=

=

=

i

n

i

x

a

a

f

a

a

x

a

y

i

i

0

1

1

0

1

2

1

*

=

+

+

=

=

=

n

i

n

i

i

n

i

i

i

i

x

a

x

a

x

y

0

1

1

1

1

2

1

*

=

+

+

=

=

=

n

i

n

i

i

n

i

i

i

i

x

x

a

y

x

a

x

y

0

1

2

1

1

1

1

1

2

1

1

*

=

 ∑

∑ −

+

+

=

=

=

=

=

n

i

n

i

i

x

n

i

i

n

i

i

n

i

i

i

i

n

a

x

y

n

x

a

x

y

=

=

=

=

=

=

∑

n

i

n

i

i

n

i

i

n

i

i

n

i

i

i

i

x

y

n

x

y

x

n

x

a

1

2

1

1

2

1

1

1

1

*

1

n

x

n

x

x

y

n

x

y

a

n

i

i

n

i

i

n

i

n

i

n

i

i

i

i

i

/*

1

*

1

2

1

1

2

1

1

1

1

∑

=

=

=

=

=

=

.

.

.

.

*

*

*

2

1

1

2

1

1

1

1

o

d

b

c

x

x

n

x

y

x

y

n

a

n

i

i

n

i

i

n

i

n

i

n

i

i

i

i

i

∑

=

=

=

=

=

=

2. Określenie wartości współczynnika a

1

:




Wartość pochodnej:





współczynnik a

0

zastępujemy wyprowadzoną zależnością:





Grupujemy wyrazy z a

1

i wyłączamy a

1




Obliczamy a

1

i po przekształceniach otrzymujemy:










background image

44

Zastosowanie Matlaba (konsola) w obliczeniach

Przykład 1:
Obliczenie współczynników linii trendu dla przykładu
danych z tabeli (założenie, że ma ona charakter liniowy):


Równanie macierzowe na współczynniki linii:

(

)

(

)

y

a

a

X

X

X

T

T

*

*

*

1

1

0

=

Zapis problemu w Matlabie:

>> X=[1 1;1 3;1 5;1 7;1 9;1 11;1 13;1 15;1 17]
X =
1 1
1 3
1 5
1 7
1 9
1 11
1 13
1 15
1 17

>> y=[119;105;120;90;100;85;90;75;80]
y =
119
105
120
90
100
85
90
75
80

>> a = (X'*X)^(-1 ) * (X'*y)
a =
119.3250

%Poszukiwane współczynniki kierunkowe prostej

-2.5917

% określającej linie trendu

Otrzymujemy równanie postaci:

y = -2.59 x +119.32

Z programu Excell otrzymano:

y = -5.18 x +121.92

background image

45

Obliczenia szczegółowe w Matlabie (konsola) czynników
wzoru określającego linię trendu przy założeniu, że ma ona
charakter liniowy:


>> a = (X'*X)^(-1 ) * (X'*y) (***)

>> P=X'
P =
1 1 1 1 1 1 1 1 1
1 3 5 7 9 11 13 15 17
>> Z=X'

X % Pierwszy czynnik wzoru (***)


Z =
9 81
81 969

>> ModwZ = Z^(-1)

% Macierz odwrotna 1-szego czynnika


ModwZ =
0.4486 -0.0375
-0.0375 0.0042

>> R=X'*y

% Macierz- drugi czynnik wzoru (***)


R =
864
7154

>> a=ModwZ*R

% Wynik mnożenia 1-szego i 2-giego czynnika


a =
119.3250

%Poszukiwane współczynniki kierunkowe prostej

-2.5917

>>




background image

46

Zastosowanie Matlaba (konsola) w obliczeniach

Przykład 2: Wykorzystanie instrukcji „if”

Należy zdefiniować i obliczyć następującą funkcję:

( )







<

>

=

1

2

3

,

1

3

6

2

2

x

dla

x

x

dla

x

x

dla

x

x

f


>> x=-5;
>>

if

x>3

f=x*x - 6;

elseif

x>= -1 & x <=3

f=x;

else

f=x*x - 2;

end

>> f
f =
23

>> x=[-5,1,8];

% definiujemy nowe dane kopiujemy polecenia i

% uruchamiamy

>>

if

x>3

f=x*x - 6;

elseif

x>= -1 & x <=3

f=x;

else

f=x*x - 2;
end

??? Error using ==> *
Inner matrix dimensions must agree.


%Zapisujemy funkcję z użyciem operatorów tablicowych:

>>

if

x>3

f=x.*x - 6;

elseif

x>= -1 & x <=3

f=x;

else

f=x.*x - 2;

end

% po wpisaniu naciskamy Enter i pojawia się znak zachęty

>> f

%aby wyświetlić wyniki (można też wpisać np. f=f)

f =
23 -1 62
>>

background image

47

% Ten ciąg poleceń spowoduje automatyczny wydruk funkcji f
% bez konieczności wpisania na końcu instrukcji np. f=f czy a=f

>>

if

x>3

f=x.*x - 6

elseif

x>= -1 & x <=3

f=x

else

f=x.*x - 2

end


f =

23 -1 62

>>


Wyszukiwarka

Podobne podstrony:
Część II MatLab (Środowisko, Praca Konsolowa, Wektory i Macierze)
Microsoft PowerPoint Cz II CFD
Monitoring biologiczny cz.II, OCHRONA ŚRODOWISKA UJ, MONITORING BIOLOGICZNY CZ 2
Microsoft Word Cz I CWICZ RACH Z MTP1 Materialy Pomoc Stud
Microsoft Word Cz I CWICZ RACH Z MTP1 Materialy Pomocnicze Stud
Microsoft Word Cz III ALGORYTMY Stud
Microsoft Word Grupa II 41C
mmgg, Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wszy, chemia fizyczna cz II sprawka
Moje 50 , Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wszy, chemia fizyczna cz II spr
monia 11, Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wszy, chemia fizyczna cz II spr
Ochrona środowiska morskiego cz II
KOND41vmac, Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wszy, chemia fizyczna cz II s
rad, Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wszy, chemia fizyczna cz II sprawka
Do druku askorbinowy, Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wszy, chemia fizyczn
Elektroda szklana, Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wszy, chemia fizyczna c
Podczas wymuszonego przep+éywu p+éynu, Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wsz
POLSKI, Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wszy, chemia fizyczna cz II spraw

więcej podobnych podstron