Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Podobne dokumenty
Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

PODSTAWY AUTOMATYKI. MATLAB - instrukcje i funkcje zewnętrzne. Grafika w Matlabie. Wprowadzenie do biblioteki Control System Toolbox.

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

1 Podstawy c++ w pigułce.

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego

Programowanie w języku Python. Grażyna Koba

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

Podstawy Programowania C++

1 Podstawy c++ w pigułce.

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Podstawy MATLABA, cd.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

Metody i analiza danych

Matlab Składnia + podstawy programowania

WPROWADZENIE DO ŚRODOWISKA SCILAB

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Metody numeryczne Laboratorium 2

Wprowadzenie do środowiska

Instalacja

Pętle iteracyjne i decyzyjne

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Metody Numeryczne. Laboratorium 1. Wstęp do programu Matlab

PODSTAWY INFORMATYKI 1 MATLAB CZ. 3

Przykład 1 -->s="hello World!" s = Hello World! -->disp(s) Hello World!

Metody i analiza danych

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

Przetwarzanie sygnałów

1 Programowanie w matlabie - skrypty i funkcje

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

MATLAB wprowadzenie śycie jest zbyt krótkie, aby tracić czas na pisanie pętli!

Wykorzystanie programów komputerowych do obliczeń matematycznych

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Ćwiczenie 4. Matlab - funkcje, wielomiany, obliczenia symboliczne

Matlab MATrix LABoratory Mathworks Inc.

Ćwiczenie 1. Wprowadzenie do programu Octave

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Wprowadzenie do pakietów MATLAB/GNU Octave

Modelowanie Systemów Dynamicznych Studia zaoczne, Automatyka i Robotyka, rok II. Podstawy MATLABA, cz2.

Wstęp do Programowania Lista 1

Laboratorium 1b Operacje na macierzach oraz obliczenia symboliczne

Ćwiczenie 1. Wprowadzenie do programu Octave

MATLAB tworzenie własnych funkcji

Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie

Cw.12 JAVAScript w dokumentach HTML

Podstawy Programowania Podstawowa składnia języka C++

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Ćwiczenie 1. Matlab podstawy (1) Matlab firmy MathWorks to uniwersalny pakiet do obliczeń naukowych i inżynierskich, analiz układów statycznych

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

MATLAB - laboratorium nr 1 wektory i macierze

Wprowadzenie do programu Mathcad 15 cz. 1

Matlab Składnia + podstawy programowania

Przykładowo, jeśli współrzędna x zmienia się od 0 do 8 co 1, a współrzędna y od 12 co 2 do 25, to punkty powinny wyglądać następująco:

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Obliczenia w programie MATLAB

Diary przydatne polecenie. Korzystanie z funkcji wbudowanych i systemu pomocy on-line. Najczęstsze typy plików. diary nazwa_pliku

Wprowadzenie do Mathcada 1

PRZYKŁADOWE SKRYPTY (PROGRAMY W MATLABIE Z ROZSZERZENIEM.m): 1) OBLICZANIE WYRAŻEŃ 1:

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Wprowadzenie do Scilab: podstawy języka Scilab

do instrukcja while (wyrażenie);

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

4. Funkcje. Przykłady

Podstawy programowania skrót z wykładów:

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Wykład z Technologii Informacyjnych. Piotr Mika

ANALIZA DANYCH I PROCESÓW. Mgr inż. Paweł Wojciech Herbin

Programowanie - instrukcje sterujące

GNU Octave (w skrócie Octave) to rozbudowany program do analizy numerycznej.

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Rozwiązywanie równań różniczkowych z niezerowymi warunkami początkowymi

Kier. MTR Programowanie w MATLABie Laboratorium. 1. Tworzenie m-plików skryptowych i uruchamianie skryptów

Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Proste programy w C++ zadania

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

WHILE (wyrażenie) instrukcja;

zajęcia 2 Definiowanie wektorów:

Operatory arytmetyczne

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Pętle. Dodał Administrator niedziela, 14 marzec :27

Język ludzki kod maszynowy

Elementy metod numerycznych - zajęcia 9

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Języki programowania zasady ich tworzenia

1 Powtórzenie wiadomości

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wartości x-ów : Wartości x ów można w Scilabie zdefiniować na kilka sposobów, wpisując odpowiednie polecenie na konsoli.

Transkrypt:

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Podstawy optymalizacji Środowisko MATLAB dla potrzeb optymalizacji Materiały pomocnicze do ćwiczeń laboratoryjnych Opracowanie: Kazimierz Duzinkiewicz, dr hab. inż. Tomasz Karol Nowak, mgr inż. Gdańsk

1. Interfejs środowiska MATLAB Środowisko MATLAB a po uruchomieniu wygląda jak na rys. 1. Rys. 1. Interfejs środowiska MATLAB. Znak zachęty oznacza, że użytkownik może wprowadzać polecenia MATLAB a. MATLAB stanowi w istocie interpreter języka, zaprojektowanego specjalnie z myślą o obliczeniach numerycznych i graficznej wizualizacji danych i wyników obliczeń. Polecenia wprowadza się z klawiatury, w oknie Command Window. W istocie praca w środowisku MATLAB a polega na wydawaniu poleceń, które po zatwierdzeniu przez użytkownika naciśnięciem klawisza Enter są wykonywane przez interpreter. W ten sposób bezpośrednio z wiersza poleceń można: zdefiniować zmienną MATLAB a, wywołać funkcję MATLAB a, wywołać procedurę MATLAB a zbudowaną z poleceń interpretera i zapisaną w pliku tekstowym o nazwie *.m (pliki te nazywane są M-plikami lub skryptami), wydawać polecenia przekazywane do wykonania w systemie operacyjnym DOS lub środowisku WINDOWS. Gdy tekst polecenia nie mieści się w jednej linii, można przejść do następnej linii wpisując wielokropek ( ) przed naciśnięciem klawisza Enter. Każde polecenie, które nie zostanie zakończone średnikiem (;) powoduje wyświetlenie odpowiedzi. W środowisku MATLAB a rozróżniane są duże i małe litery. Wyjątkiem są nazwy M- plików i poleceń systemu operacyjnego DOS, które też mogą być wydawane ze środowiska MATLAB a. W przypadku pracy w środowisku WINDOWS, możemy wykorzystać wszystkie mechanizmy i narzędzia tego środowiska.

Zakończenie pracy w środowisku MATLAB a następuje przez wykonanie polecenia: >> exit lub równoważnego >> quit. Pracując w środowisku WINDOWS możemy też zakończyć pracę z MATLAB em wykorzystując jedną z opcji zamykania aplikacji pracujących w środowisku WINDOWS, na przykład wybranie menu FILE i wybranie z niego opcji ExitMATLAB. 2. Podstawowe operacje na liczbach i macierzach Liczby rzeczywiste są podstawowymi danymi wykorzystywanymi w MATLAB ie. Z liczb rzeczywistych buduje się macierze i liczby zespolone. Można stosować różne notacje dla zapisu liczb. Poniżej podano przykłady poprawnego zapisania liczb w MATLAB ie: 3 3. 3.0-3 -3. -3.0 0.3.3-0.3 -.3 0.0000005578 0.5578E-6.5578e-6 Liczba cyfr znaczących w liczbie jest zależna od arytmetyki komputera. Na każde polecenie MATLAB podaje odpowiedź, która może być wyświetlona na ekranie. Format odpowiedzi, która jest wartością numeryczną może być określony za pomocą polecenia format (patrz: tabela 1). Format Reprezentacja short 0.6667; -6.0221e-07 short e 6.6667e-001; -6.0221e-007 long 0.66666666666667; -6.022100000000000e-007 long e 6.666666666666666e-001; -6.022100000000000e-007 hex 3fe5555555555555 + Znak drukowany dla liczb dodatnic bank Format walutowy, do dwóch miejsc po przecinku compact Wyłącza dodawanie dodatkowych pustych wierszy loose Włącza dodawanie dodatkowych pustych wierszy rat Przybliża liczby ułamkami małych liczb całkowitych Tabela 1. Format liczb w MATLAB ie. Zdefiniujmy wektor: a=[4/3,1.2345e-6] a =1.3333 0.0000 Odpowiedź MATLAB a została podana w formacie liczbowym short, w którym wyświetlane jest pięć cyfr. Format short jest formatem domyślnym MATLAB a. Przykładowo, dla formatu short e: format short e a a = 1.3333e+000 1.2345e-6

Poza skończonymi wartościami liczbowymi w MATLAB ie wykorzystywane są dwie inne wartości: Inf i NaN. Wartość Inf oznacza nieskończoność liczbową; można ją uzyskać na przykład poleceniem: 1/0 Warning: Divide by zero ans = Inf Druga z podanych wartości, NaN oznacza nieokreśloność liczbową; można ją uzyskać na przykład poleceniem: 0/0 Warning: Divide by zero ans =NaN lub: Inf/Inf ans = NaN Podane dwie nazwy można traktować jako posiadające podwójne znaczenie: jako nazwy wartości lub nazwy funkcji. MATLAB pracuje zasadniczo z jednym rodzajem obiektów, prostokątnymi macierzami numerycznymi. W taki sposób traktowane są skalary - macierze o rozmiarze 1x1 oraz wektory - macierze o rozmiarze nx1. Macierz w środowisku MATLAB a można zdefiniować na kilka sposobów: przez wymienienie elementów macierzy, przez wygenerowanie elementów macierzy, przez zbudowanie z innych macierzy, przez mieszane zastosowanie wymienionych wyżej sposobów. MATLAB nie posiada poleceń deklarujących rozmiar macierzy lub jej typ. Utworzona macierz jest pamiętana od momentu utworzenia aż do momentu jej usunięcia. Możliwa jest zmiana nie tylko wartości macierzy, ale także jej rozmiaru. Najprostszą metodą utworzenia małej macierzy jest bezpośrednie wypisanie listy jej elementów. Jeżeli chcemy utworzyć macierz o nazwie A i rozmiarze 3x3 to przez wypisanie listy jej elementów możemy to zrobić następująco: A=[1,2,3;4,5,6;7,8,9] lub A=[1 2 3;4 5 6;7 8 9] Listę elementów macierzy należy ująć w nawiasy kwadratowe; elementy wprowadzane są wierszami; poszczególne elementy wiersza należy rozdzielić przecinkami lub spacjami; elementy poszczególnych wierszy należy rozdzielić średnikami. Jeżeli za zamykającym

nawiasem kwadratowym nie umieścimy średnika to otrzymamy odpowiedź. Odpowiedni fragment okna poleceń będzie wyglądał następująco: A=[1,2,3;4,5,6;7,8,9] A = 1 2 3 4 5 6 7 8 9 lub A=[1 2 3;4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9 Jeżeli wymienimy elementy macierzy umieszczając z zamykającym nawiasem średnik, odpowiedni fragment okna poleceń będzie wyglądał następująco: A=[1,2,3;4,5,6;7,8,9]; lub A=[1 2 3;4 5 6;7 8 9]; Możemy wprowadzić macierz nie nadając jej nazwy. Elementy wprowadzonej macierzy zostaną przypisane standardowej zmiennej roboczej ans. Przykładowy odpowiedni fragment okna poleceń będzie wyglądał następująco: [1 2 3;4 5 6;7 8 9] ans = 1 2 3 4 5 6 7 8 9 Jeżeli nie możemy (lub nie chcemy) umieścić wszystkich elementów danego wiersza macierzy w jednej linii poleceń to możemy daną linię zakończyć wielokropkiem; elementy podawane w następnej linii będą traktowane jako kontynuacja wiersza z poprzedniej linii. Weźmy na przykład macierz o wymiarze 30x3: B=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,... 21,22,23,24,25,26,27,28,29,30;... 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,... 51,52,53,54,55,56,57,58,59,60;... 61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,...

81,82,83,84,85,86,87,88,89,90] B = Columns 1 through 12 1 2 3 4 5 6 7 8 9 10 11 12 31 32 33 34 35 36 37 38 39 40 41 42 61 62 63 64 65 66 67 68 69 70 71 72 Columns 13 through 24 13 14 15 16 17 18 19 20 21 22 23 24 43 44 45 46 47 48 49 50 51 52 53 54 73 74 75 76 77 78 79 80 81 82 83 84 Columns 25 through 30 25 26 27 28 29 30 55 56 57 58 59 60 85 86 87 88 89 90 Wprowadzane elementy macierzy nie muszą mieć wprost wartości liczbowych, mogą być wartościami wyrażeń. Podamy dwa przykłady: x=[-1.3,sqrt(3),(1+2+3)*4/5] x = -1.3000 1.7321 4.8000 oraz s1=-1.3; s2=3; s3=1; s4=2; s5=3; s6=4; s7=5; x=[s1,sqrt(s2),(s3+s4+s5)*s6/s7] x = -1.3000 1.7321 4.8000 Drugim sposobem wprowadzenia macierzy jest wygenerowanie jej elementów. Ten sposób można zastosować jeżeli elementy macierzy tworzą ciąg arytmetyczny. W tym celu należy użyć polecenia o postaci: x = min : krok : max gdzie: min pierwszy element ciągu, krok różnica ciągu, max ostatni element ciągu. Przykład: x=1 :0.2:2 x = 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000

Wymiar wprowadzonej macierzy możemy sprawdzić wykorzystując polecenie size, które zwraca liczbę wierszy i kolumn macierzy. Przykładowo dla wprowadzonej macierzy A: [ia,ja]=size(a) ia =3 ja =3 Jeżeli chcemy uzyskać tylko liczbę wierszy lub kolumn należy użyć polecenia size w następujący sposób w przypadku poszukiwania liczby kolumn: ia=size(a,1) ia = 3 lub, w przypadku liczby wierszy ja=size(a,2) ja = 3 W MATLAB ie dostępne są następujące działania na macierzach: + dodawanie, - odejmowanie, * mnożenie, / dzielenie macierzy prawe, \ dzielenie macierzy lewe, ^ potęgowanie. Przykład: B=[1:1:6;7:1:12;13:1:18] B = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 C=[18:-1:13;12:-1:7;6:-1:1] C = 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 D=B+C D = 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19

W MATLAB ie są dostępne dwa działania dzielenia macierzy: lewostronne \ i prawostronne /. Jeżeli macierz A jest nieosobliwą macierzą kwadratową, wówczas A\B i B/A odpowiadają formalnie lewostronnemu i prawostronnemu mnożeniu macierzy B przez macierz odwrotną A, to znaczy inv(a)*b i B*inv(A), chociaż w trakcie obliczeń w MATLAB ie macierz odwrotna nie jest wprost obliczana. Ogólnie działania te zdefiniowane są następująco: X A \ B jest rozwiązaniem równania A * X B X B / A jest rozwiązaniem równania X * A = B Z powyższych definicji widać, że lewostronne i prawostronne dzielenie można wykorzystać do rozwiązywania liniowych równań algebraicznych. W MATLAB ie poza powszechnie znanymi działaniami arytmetycznymi na macierzach określone są tak zwane działania tablicowe na macierzach. Są to działania odnoszące się do działań arytmetycznych element-po-elemencie macierzy. Dostępne są następujące działania tablicowe: + dodawanie - odejmowanie.* mnożenie./ dzielenie prawostronne.\ dzielenie lewostronne.^ potęgowanie tablicowe Działania dodawania i odejmowania są działaniami tablicowymi, bo operacje te wykonywane są element po elemencie. Działanie mnożenia tablicowego polega na mnożeniu dwóch macierzy o takich samych wymiarach, w których mnożone są odpowiadające sobie elementy: A=[1 3;2 2] A = 1 3 2 2 B=[2 2;1 3] B = 2 2 1 3 C=A.*B C = 2 6 2 6 Działanie./ powoduje dzielenie dwóch macierzy element po elemencie. Działanie.\ powoduje dzielenie elementów macierzy będącej drugim jej argumentem przez macierz stanowiącą pierwszy jej argument.

W MATLAB ie istnieje sześć operatorów relacji dla porównywania macierzy o tych samych wymiarach. Są one następujące: < - mniejsza niż <= - mniejsza niż lub równa > - większa niż >= - większa niż lub równa == - równa ~= - nie równa Porównanie jest wykonywane pomiędzy parą odpowiadających sobie elementów; wynik jest macierzą zer i jedynek, gdzie jedynki reprezentują PRAWDĘ, a zera FAŁSZ. a=2+2~=4 a = 0 lub: A1=[1:3;6:-1:4;7:9] A1 = 1 2 3 6 5 4 7 8 9 A2=[1:3;4:6;7:9] A2 = 1 2 3 4 5 6 7 8 9 R=A1==A2 R = 1 1 1 0 1 0 1 1 1 W MATLAB ie istnieją trzy operatory logiczne działające na poszczególnych elementach macierzy, zwykle zero-jedynkowych. Są one następujące: & AND OR NOT Operatory & oraz porównuje dwa skalary lub macierze o tych samych wymiarach. Operatory logiczne traktują jakąkolwiek wartość niezerową jako PRAWDĘ, a zerową jako FAŁSZ. Zwracają one jedynkę, jeżeli wartość wyrażenia logicznego jest PRAWDĄ, a zero jeżeli FAŁSZEM. Operator ~ jest operatorem jednoargumentowym. Wyrażenie ~A zwraca jedynkę,

jeżeli element A jest zerowy a zero, jeżeli element A jest niezerowy. A=[0,1,2;-1,0,-2;1,2,0] A = 0 1 2-1 0-2 1 2 0 B=[1:3;4:6;7:9] B = 1 2 3 4 5 6 7 8 9 NOTA=~A NOTA = 1 0 0 0 1 0 0 0 1 ILOAB=A&B ILOAB = 0 1 1 1 0 1 1 1 0 SUMAB=A B SUMAB = 1 1 1 1 1 1 1 1 1 23 ILOANA=A&(~A) ILOANA = 0 0 0 0 0 0 0 0 0 SUMANA=A (~A) SUMANA = 1 1 1 1 1 1 1 1 1 Z operatorami relacji i działaniami logicznymi związane są pewne funkcje MATLAB a. Wyczerpujące informacje o tych funkcjach można znaleźć korzystając z polecenia help lub dokumentacji MATLAB a. 3. Tworzenie M-plików i funkcji MATLAB jest zwykle wykorzystywany w trybie interaktywnym; kiedy zostanie wprowadzone polecenie, MATLAB przetwarza je natychmiast i wyświetla odpowiedź. MATLAB jest jednak

w stanie wykonywać sekwencję poleceń zapisanych w pliku. Plik dyskowy zawierający polecenia MATLAB a jest nazywany M-plikiem, ponieważ rozszerzeniem nazwy takiego pliku jest.m (Rys. 1). Na przykład, plik o nazwie bessel.m zawiera polecenia MATLAB a, które służą obliczeniu funkcji Bessel a. W dalszej części materiałów pomocniczych, m-pliki będą nazywane również skryptami. M-pliki nazywane są też funkcjami zewnętrznymi MATLAB a. Dowolny M-plik składa się z poleceń MATLAB a, wśród których mogą znajdować się odwołania do innych M-plików. Dowolny M-plik może odwoływać się do samego siebie rekursywnie. M-plik można utworzyć wchodząc w File >> New >> M-file bądź (dla nowszych wersji) klikając przycisk New Script. Skrypty są zestawem większych lub częściej używanych poleceń (zbiorem tekstowym zawierającym polecenia), które mają być wykonane przez interpreter MATLAB a. Skrypt nie musi spełniać żadnych dodatkowych wymogów formalnych poza poprawnością znajdujących się w nim poleceń. Wywołanie skryptu dokonuje się przez podanie jego nazwy w wierszu poleceń lub w skrypcie. W jego efekcie zostaną wykonane wszystkie instrukcje znajdujące się w skrypcie. Komentarze w skrypcie poprzedza się znakiem %. Komentarze nie są analizowane przez interpreter, a pełnią tylko rolę dokumentacyjną. Przykład: % Przykładowy skrypt MATLAB a kreślący wykres funkcji x=-5:0.1:5; y=x.^2; plot(x,y); grid; title('przykladowy wykres funkcji' ); xlabel('x' ); ylabel('y' ); Definicję funkcji umieszcza się w skrypcie o nazwie identycznej z nazwą definiowanej funkcji i rozszerzeniem.m. Funkcje przyjmują argumenty wejściowe oraz zwracają argumenty wyjściowe. Definicja funkcji w MATLAB ie ma postać: function [argumenty wejściowe] = nazwa funkcji(argumenty wyjściowe) ciąg-instrukcji W przypadku, gdy funkcja nie zwraca argumentów wyjściowym może zostać zapisana w następującej postaci: function nazwa_funkcji (argumenty wejściowe) ciąg-instrukcji Analogicznie jak w skrypcie, komentarze w funkcji poprzedza się znakiem %. W zasadniczej części funkcji mogą znajdować się wywołania do innych funkcji, konstrukcje programowe realizujące operacje wejścia/wyjścia, obliczenia, komentarze, linie puste itp. W funkcji wyróżniamy dwa rodzaje zmiennych: lokalne i globalne. Zmienne utworzone w trakcie

wykonywania funkcji to zmienne lokalne. Zmienne te nie są dostępne w przestrzeni roboczej MATLAB a. Zmienne globalne są dostępne w przestrzeni roboczej MATLAB,a i poprzedza je słowo global. Weźmy więc analizowany wcześniej przykład m-pliku i zamieńmy go na funkcję: function wykres (a,b) plot(a,b); grid; title('przykladowy wykres funkcji' ); xlabel('x' ); ylabel('y' ); Zapisując podany wyżej kod jako wykres.m (Ważne! m-plik z funkcją musi się nazywać identycznie jak sama funkcja) będziemy mogli w głównym oknie środowiska Matlab wywołać funkcję wykres równie wygodnie jak np. funkcję sinus. Inny przykład funkcji, która posiada argument wyjściowy: function [Z] = odcinanie(z,m) x=size(z,1); z=size(z,2); for a=1:x for b=1:z if Z(a,b)>m Z(a,b)=randi([0,m]); end end end; disp(z); Kod ten służy do limitowania wartości macierzy, dzięki czemu macierz b: b=[1 12 3 5 6] po wywołaniu: b=odcinanie(b,12) stanie się macierzą: b=[1 3 3 5 6] lub podobną. Kolejny przykład funkcji, która posiada kilka argumentów wejściowych i wyjściowych (funkcja wyliczająca sumę oraz iloczyn dwóch liczb): function [iloczyn,suma]=moja_funkcja(x,y) %Defin. nazwy oraz argumentów iloczyn = x*y; %Przypis. wart. wyjściu iloczyn suma = x+y; %Przypis. wartości wyjściu suma Przykład użycia: >> moja_funkcja(1,2) %Komenda zwróci tylko pierwszą wartość ans = 2 >> [iloczyn,suma] = moja_funkcja(1,2) %Komenda zwróci obydwie wartości iloczyn = 2 suma = 3 4. Instrukcje warunkowe, logiczne i pętle

MATLAB jest wyposażony w instrukcje sterujące realizacją poleceń o składni zapożyczonej z języka C. Podobne instrukcje istnieją w innych językach programowania. MATLAB posiada polecenia, które umożliwiają definiowanie własnych funkcji. Istnieją w nim instrukcje, które zapewniają interaktywną współpracę napisanego programu aplikacyjnego z użytkownikiem. Podstawowymi instrukcjami MATLAB a są: polecenia instrukcje iteracyjne (pętle) for i while, instrukcje warunkowe if, switch, instrukcje return, break Ogólna postać instrukcji for MATLAB a przedstawia się następująco: for zmienna-iterowana=macierz-wartości, ciąg-instrukcji, end Weźmy następujący przykład, w którym nadawane są wartości elementom wektora x równe odwrotności wartości indeksu elementu. N=10; for i=1:n x(i)=1/i; end Średnik kończący ciąg instrukcji wewnątrz pętli powoduje, że nie jest wyświetlana odpowiedź po wykonaniu każdej iteracji. Wektor x możemy wyświetlić po zakończeniu wszystkich iteracji pętli. x x = Columns 1 through 7 1.0000 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 Columns 8 through 10 0.1250 0.1111 0.1000 Wyniki działania pętli moglibyśmy prześledzić nie umieszczając średnika po ostatniej instrukcji pętli. Ilustruje to poniższy przykład: M=5; for j=1:m y(j)=1/j end; y = 1 y = 1.0000 0.5000 y = 1.0000 0.5000 0.3333 y = 1.0000 0.5000 0.3333 0.2500

y = 1.0000 0.5000 0.3333 0.2500 0.2000 W powyższych przykładach, gdyby N lub M były mniejsze od 1, zapis byłby poprawny, ale ciąg instrukcji wewnątrz pętli nie zostałby wykonany. Gdyby wektory x lub y nie istniały lub miały mniejszą liczbę elementów niż N lub M, wówczas zostałyby one automatycznie zdefiniowane lub rozszerzone. Podsumowując: działanie instrukcji for polega na wykonaniu ciągu-instrukcji dla kolejnych wartości zmiennej-iterowanej. Wartościami tymi są kolejne kolumny pobrane z macierzywartości. Jeżeli jako macierz-wartości podany zostanie wektor wierszowy to instrukcje zostaną wykonane dla kolejnych elementów pobranych z tego wektora. O uszeregowaniu wartości, które staną się wartością zmiennej-iterowanej decyduje programista-użytkownik. Można tworzyć w MATLAB ie pętle zagnieżdżone. Ilustruje to poniższy przykład: A=[]; M=3; N=5; for i=1:m for j=1:n A(i,j)=1/(i+j-1); end end A A = 1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 Należy zwrócić uwagę na to, że każda pętla for musi być zakończona instrukcją end. W przeciwnym wypadku MATLAB nie wykona żadnego działania czekając na kolejną instrukcję pętli. Instrukcja while (dopóki) odpowiada analogicznym instrukcjom z języków programowania takich jak C czy Pascal i ma następującą postać: while wyrażenie-warunkowe, ciąg-instrukcji, end Instrukcja ta powoduje wykonywanie ciągu-instrukcji dopóki wartość wyrażeniawarunkowego ma wartość logiczną TRUE (PRAWDA), to znaczy wtedy, gdy macierz będąca wartością wyrażenia warunkowego ma wszystkie elementy niezerowe. Weźmy prosty przykład w którym wykorzystamy funkcję MATLAB a - prod(x). Aby dowiedzieć się co realizuje ta funkcja skorzystamy z pomocy:

help prod PROD Product of the elements. For vectors, PROD(X) is the product of the elements of X. For matrices, PROD(X) is a row vector with the product over each column. Wykorzystamy tę funkcję i instrukcję while do dla określenia dla jakiej wartości n wartość wyrażenia n! jest liczbą stucyfrową: n=1; while prod(1:n)<1.e100 n=n+1; end Odczytamy wynik: n n = 70 Instrukcja warunkowa w MATLAB ie ma postać: if wyrażenie-warunkowe1 ciąg-instrukcji1 elseif wyrażenie-warunkowe2 ciąg-instrukcji2 else ciąg-instrukcjin end Wykonanie instrukcji if polega na wykonaniu ciągu-instrukcji, związanego z wyrażeniemwarunkowym, jeżeli jego wartość jest TRUE (PRAWDA). Jeżeli nie zachodzi żaden z warunków, wykonywany jest ciąg instrukcji po słowie kluczowym else. Sekwencje elseif i else są opcjonalne. Przykład pokazuje w jaki sposób za pomocą instrukcji warunkowej można rozbić obliczenia na trzy różne przypadki. A=[1,-3,3;-3,-4,1;1,2,-1] A = 1-3 3-3 -4 1 1 2-1 n=2 n = 2 if n<0 A=-A elseif rem(n,2)==0 A=2*A else B=invA; end

Sprawdzimy prawidłowość wykonania instrukcji. Macierz A powinna mieć wszystkie elementy pomnożone przez 2, macierz B powinna być pusta. A A = 2-6 6-6 -8 2 2 4-2 B B = [] Instrukcja break powoduje przerwanie wykonywania pętli, przy czym opuszczony jest tylko jeden poziom zagłębienia pętli. Instrukcja return powoduje bezwarunkowe opuszczenie danej funkcji lub skryptu i powrót do miejsca jej/jego wywołania. 5. Obliczenia symboliczne Symbolic MATLAB Toolbox jest jednym z przyborników do wykorzystania w środowisku MATLAB, który zapewnia narzędzia do rozwiązywania symbolicznych wyrażeń matematycznych i dokonywania arytmetyki zmiennopozycyjnej. Zawiera on setki funkcji symbolicznych, które można wykorzystać do wielu typów obliczeń, łącznie z przetwarzaniem i rozwiązywaniem równań. syms x W celu zdefiniowania zmiennej x można napisać: Jeśli chcemy zdefiniować większą liczbę zmiennych, należy je wpisać oddzielając spacjami, tzn.: syms x y z Do zdefiniowania stałej należy posłużyć się wyrażeniem: a = sym('4') Stała a przyjmie wówczas wartość równą 4. Wynik liczbowy zapisany w postaci symbolicznej może zostać obliczony dzięki poleceniu subs(). Przykładowo: syms a b y = a+b; a = 1;

b = 2; w = subs(y) Otrzyma się wówczas wynik 3 w zmiennej w. W celu rozwiązania układu równań należy po zadeklarowaniu zmiennej symbolicznej użyć funcji solve(), jak na poniższym przykładzie: syms x y S = solve('x + y = 5', '2*x y = 0') Spowoduje to rozwiązanie układu równań: Można znaleźć miejsce zerowe podanej funkcji, wpisując np.: syms x S = solve('2*x^2 + 5*x 7 = 0') Spowoduje to rozwiązanie funkcji kwadratowej: Ażeby rozwiązać układ równań różniczkowych należy użyć polecenia dsolve(): y = dsolve('dx = x + 2*y', 'Dy = y', 'x(0) = 0', 'y(0) =1' ) Spowoduje to rozwiązanie układu równań: z warunkami początkowymi:, Do różniczkowania symbolicznego służy funkcja diff(). W celu zróżniczkowania funkcji po zmiennej x: y= x 2+ 3x 1 należy wpisać: syms x y = x^2 + 3*x 1; diff(y, x) Jeśli zaś chcemy obliczyć całkę nieoznaczoną po zmiennej x powyższej funkcji, należy posłużyć się funkcją int() jak poniżej: syms x

y = x^2 + 3*x 1; int(y, x) W celu obliczenia całki oznaczonej od 0 do 5 należy wpisać: syms x y = x^2 + 3*x 1; int(y, 0, 5) Innymi ważnymi funkcjami są funkcje: gradient() oraz hessian(), których odpowiedzi są gradientem lub hessianem funkcji. W celu obliczenia granicy należy skorzystać z polecenia limit(). Przykładowo: syms x limit(tan(x), x, 0, 'left') % obliczenie granicy przy x dążącym do 0 z lewej strony limit(tan(x), x, 0, 'right') % obliczenie granicy przy x dążącym do 0 z prawej strony limit(tan(x), x, inf) % obliczenie granicy przy x dążącym do nieskończoności limit(tan(x), x, -inf) % obliczenie granicy przy x dążącym do nieskończoności 6. Grafika W MATLAB ie istnieje kilka grup funkcji graficznych: funkcje przeznaczone do prezentacji danych w postaci wykresów dwu i trójwymiarowych, funkcje związane z usuwaniem rysunku, zmianą skali, dodawaniem napisów itp., funkcje umożliwiające rysowanie linii, wielokątów itp., funkcje niskiego poziomu pozwalające na dowolne kształtowanie wyglądu tworzonego rysunku. Podstawowym poleceniem służącym do graficznej prezentacji danych matematycznych jest polecenie plot, które powoduje narysowanie wykresu funkcji jednej zmiennej. Przykładowo, narysowanie funkcji y=x dla można uzyskać po wprowadzeniu następującego programu: x=0:0.1:10; y=x; plot(x,y) Inną formą zapisu funkcji plot, umożliwiającą wykreślenie dwóch funkcji lub więcej na jednym wykresie jest: plot (x1, y1, x2, y2, ). Często przydatną funkcją jest subplot(m, n, p). Pozwala ona na umieszczenie kilku wykresów obok siebie w jednym oknie (m liczba wykresów w pionie, n liczba wykresów w poziomie, p numer wykresu, który zostanie narysowany najbliższym wywołaniem funkcji plot). Inną przydatną funkcją jest funkcja hold on (hold off). Pozwala ona narysować nowy wykres na tle starego (wymazywanie starego wykresu przed naniesieniem nowego).

Każdy wykres można opisać. Służą do tego między innymi następujące funkcje: xlabel( tekst ) wypisuje łańcuch znaków tekst pod osią x ylabel( tekst ) wypisuje łańcuch znaków tekst pod osią y text(x,y, tekst ) wypisuje łańcuch znaków tekst w miejscu określonym przez współrzędne x i y gtext( tekst ) wypisuje łańcuch znaków tekst w miejscu wskazanym myszką title( tekst ) wypisuje tytuł wykresu w postaci łańcucha znaków tekst i umieszcza go nad wykresem legend( tekst1, tekst2...., tekstn ) wypisuje legendę do wykresu w postaci łańcucha znaków tekst1, tekst2,..., tekstn grid on (lub grid off) narysowanie pomocniczej siatki współrzędnych (grid on) lub jej wyłączenie (grid off). Polecenie grid bez parametrów powoduje przełączanie wyświetlania siatki Rozważmy następujące zadanie: Napisz m-plik kreślący na jednym wykresie następujące funkcje: dla. Przyjmij następujące wartości parametrów: i załóż możliwość zmiany ich wartości w m-pliku. Podpisz osie, umieść siatkę, tytuł wykresu i legendę. Przykładowe rozwiązanie: % Czyszczenie clear; clc; % Wyswietlenie tekstu na ekranie disp('m plik kreslacy wykresy dwoch funkcji: y1 i y2' ) disp('' ) % Okreslenie wartosci x x=-10:0.1:10; % Wprowadzenie danych k1=3; k2=2; %Obliczenie wartosci pierwszej funkcji y1=k1*x; %Obliczenie wartosci drugiej funkcji y2=x.^k2; %Wykreslenie dwoch funkcji y1 i y2 na jednym wykresie, narysowanie siatki, podpisanie wykresu i obu osi plot(x,y1,x,y2); grid; title('dwa wykresy funkcji' ); xlabel('x' ); ylabel(' y' ); legend('y1', 'y2' ) Wynikiem jest:

Rys. 2. Wynik działania M-pliku. Oprócz przedstawionych wyżej poleceń związanych z grafiką dwuwymiarową w MATLAB ie możliwe jest również rysowanie wykresów trójwymiarowych, poziomicowych i innych, szczegółowo opisanych w pomocy MATLAB a. Funkcja plot3(x,y,z) jest wersją 3-D funkcji plot(x,y) pozwalającą na wykreślenie projekcji linii 2-D w 3-D poprzez punkty współrzędnych wektorów x, y, z. Wyświetlanie funkcji następuje po użyciu polecenia ezplot(), jak w poniższym przykładzie: syms x f = x^3 * cos(x) log(x+1); ezplot(f) Spowoduje to wyświetlenie funkcji cos lo.