Wprowadzenie do systemu Scilab

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

Wprowadzenie do środowiska

Matlab Składnia + podstawy programowania

Wstęp do Programowania Lista 1

Programowanie w języku Python. Grażyna Koba

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

1 Programowanie w matlabie - skrypty i funkcje

Podstawowe operacje na macierzach

Matlab Składnia + podstawy programowania

Wprowadzenie do Scilab: funkcje i wykresy

Metody numeryczne Laboratorium 2

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

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

Elementy metod numerycznych - zajęcia 9

Ćwiczenie 1. Wprowadzenie do programu Octave

Instalacja

Przetwarzanie sygnałów

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Ćwiczenie 1. Wprowadzenie do programu Octave

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

Metody i analiza danych

Wprowadzenie do Scilab: macierze

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

Wprowadzenie do Scilab: podstawy języka Scilab

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

Obliczenia w programie MATLAB

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

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

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

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

MATLAB - laboratorium nr 1 wektory i macierze

dr Mariusz Grządziel 15,29 kwietnia 2014 Przestrzeń R k R k = R R... R k razy Elementy R k wektory;

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

MATLAB Podstawowe polecenia

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab

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ć

MATLAB tworzenie własnych funkcji

Elementy projektowania inzynierskiego Przypomnienie systemu Mathcad

Podstawowe operacje na macierzach, operacje we/wy

Zanim zaczniemy GNU Octave

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.

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

Języki programowania zasady ich tworzenia

Ćwiczenie 3: Wprowadzenie do programu Matlab

WPROWADZENIE DO ŚRODOWISKA SCILAB

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Wprowadzenie do Scilab: macierze

Programowanie w języku C++ Grażyna Koba

Wprowadzenie do programu Mathcad 15 cz. 1

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

JAVAScript w dokumentach HTML (1)

Arkusz kalkulacyjny. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

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

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

Podstawy MATLABA, cd.

Matematyka. rok akademicki 2008/2009, semestr zimowy. Konwersatorium 1. Własności funkcji

Zad. 3: Układ równań liniowych

Laboratorium Komputerowego Wspomagania Analizy i Projektowania

1 Podstawy c++ w pigułce.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

5. Rozwiązywanie układów równań liniowych

Cw.12 JAVAScript w dokumentach HTML

Scilab - podstawy. Wersje instalacyjne programu Scilab mogą zostać pobrane ze strony

do MATLABa programowanie WYKŁAD Piotr Ciskowski

WEKTORY I MACIERZE. Strona 1 z 11. Lekcja 7.

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Podstawy Informatyki i algorytmizacji

Wykład 14. Elementy algebry macierzy

Przetwarzanie i analiza danych w języku Python / Marek Gągolewski, Maciej Bartoszuk, Anna Cena. Warszawa, Spis treści

1 Podstawy c++ w pigułce.

Zakłócenia w układach elektroenergetycznych LABORATORIUM

Z. Rudnicki: WPROWADZENIE DO INFORMATYKI I PROGRAMOWANIA

Języki skryptowe w programie Plans

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

Wymagania edukacyjne z informatyki dla uczniów klas VI SP nr 53 w Krakowie w roku szkolnym 2019/2020

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

JAVAScript w dokumentach HTML - przypomnienie

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

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...

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

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];

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

Obliczenia iteracyjne

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

ARKUSZ KALKULACYJNY komórka

Wprowadzenie do środowiska MATLAB z zastosowaniami w modelowaniu i analizie danych

WIMIM/MIBM/N1/-/B04 WIMIM/ME/S1/-/C46 WIMIM/IM/S1/-/B19

PRZETWARZANIE I ORGANIZOWANIE DANYCH: ARKUSZ KALKULACYJNY

Warsztaty dla nauczycieli

Pascal - wprowadzenie

Instalacja Pakietu R

Podstawy Informatyki i algorytmizacji

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Funkcje i instrukcje języka JavaScript

Podstawy obsługi pakietu GNU octave.

Technologia Informacyjna

Transkrypt:

Wprowadzenie do systemu Scilab Instrukcja 0 Wersja robocza 1 System Scilab Scilab jest wysokopoziomowym obiektowym językiem programowania, którego celem jest numeryczne wsparcie badań naukowych i inżynierskich. Język ten implementuje szereg zaawansowanych narzędzi z zakresu metod numerycznych. Z tego względu nazywany jest też numerycznym językiem programowania (numerical programming language). Jego składnia umożliwia łatwą implementację własnych algorytmów obliczeniowych, analizę danych i ich wizualizację. Język Scilab dystrybuowany jest w postaci zbioru narzędzi składających się na kompletne środowisko programistyczne. W jego skład wchodzą między innymi: konsola poleceń umożliwiająca interaktywną pracę, zaawansowany edytor skryptów, rozbudowany system pomocy środowisko Xcos będącym graficznym językiem programowania, które umożliwia modelowanie, symulację i analizę nieliniowych systemów dynamicznych. 1.1 Pojęcia podstawowe Command window - okno poleceń. Funkcjonalność języka Scilab realizowana jest przy pomocy zbioru plików, które implementują narzędzia numeryczne. Pliki te posegregowane są w katalogach które stanowią listę ścieżek przeszukiwania (Scilab search path list). Środowisko Scilab przeszukuje określone katalogi w poszukiwaniu plików z definicjami poszczególnych narzędzi i udostępnia je użytkownikowi w postaci interfejsu programistycznego (API - Application Programming Interface). Path - ścieżka dostępu do katalogu. Bieżący katalog jest katalogiem od którego system Scilab rozpoczyna przeszukiwanie zbioru katalogów. Current path - ścieżka dostępu do bieżącego katalogu. Variable - zmienna, etykieta tekstowa odnosząca się do wydzielonego fragmentu pamięci. Zmienna jest elementem języka umożliwiającym przechowywanie danych. W języku Scilab w odróżnieniu od języków ogólnego przeznaczenia jak np.: C, C++, Java, utworzenie nowej zmiennej realizowanej jest poprzez przypisanie do niej wartości. Nie istnieje konieczność definiowania typu zmiennej. Język Scilab w zależności od rodzaju danych, automatycznie dobierze typ nowej zmiennej. Workspace - przestrzeń robocza. Wydzielony obszar pamięci w którym środowisko Scilab przechowuje zmienne. 1

Script - skrypt - plik tekstowy z rozszerzeniem sce. Skrypt umożliwia grupowanie wyrażeń języka Scilab. Wyrażenia zebrane w skrypcie są wykonywane sekwencyjnie, od początku do końca skryptu. Function - funkcja - plik tekstowy z rozszerzeniem sci, który definiuje funkcję lub grupę funkcji języka Scilab. Funkcja jest konstrukcją programową, której algorytm realizowany jest w wydzielonej przestrzeni adresowej (wg Scilab przestrzeni roboczej). Funkcja określona jest przez: nazwę, listę argumentów formalnych, ciało funkcji, listę parametrów wyjściowych. Przy pomocy listy argumentów formalnych do przestrzeni adresowej funkcji przekazywane są dane. W ramach ciała funkcji implementowany jest algorytm funkcji, którego wynik zapisywany jest do zmiennych zdefiniowanych w postaci listy parametrów wyjściowych. Dane zapisane w zmiennych, które stanowią listę parametrów wyjściowych przekazywane są do przestrzeni roboczej funkcji, która wywołała funkcję lub do bazowej przestrzeni roboczej w przypadku gdy funkcja wywołana jest ze skryptu lub jako polecenie z konsoli poleceń. Array - tablica - uporządkowany zbiór danych jednego typu. W języku Scilab każda zmienna jest tablicą. Tablice mogą grupować elementy wybranego typu jak: liczby, znaki lub struktury. W przypadku gdy tablica grupuje liczby: pojedyncza liczba jest tablicą będącą skalarem o wymiarze: 1 1, uszeregowany w ciąg zbiór liczb, jest wektorem wierszowym o wymiarze: 1 n lub wektorem kolumnowym o wymiarze: m 1, uszeregowany w postaci wierszy i kolumn zbiór liczb, jest macierzą o wymiarze n m, Możliwe jest również składanie tablic wielowymiarowych. Tablice trójwymiarowe są zbiorem macierzy o ustalonym rozmiarze. Tablice takie mają wymiar: n m k. Struct - struct - zbiór danych różnego typu. Struktury grupują dane różnego typu. W ramach jednej struktury mogą być zgrupowane elementy będące liczbami, znakami, tablicami liczbowymi, tablicami znakowymi, innymi strukturami lub obiektami. Element struktury nazywa się polem. Operacje macierzowe - są to operacje wykonywane na tablicach (macierzach). Operacje tablicowe (elementarne) - są to operacje wykonywane na elementach tablic (macierzy). Wyrażenie - definicja zmiennej, operacje arytmetyczne, logiczne z użyciem zmiennych i funkcji. 1.2 Rozpoczęcie pracy w systemie Scilab W pierwszym kroku należy określić jaki jest bieżący katalog. W tym celu należy wydać polecenie: pwd. W wyniku do zmiennej ans przypisany zostanie ciąg znaków będący ścieżką dostępu do bieżącego katalogu. Następnie przy pomocy polecenia cd, przejść do żądanego katalogu. W trakcie pracy skrypty i funkcje zapisywać w żądanym katalogu. Zawartość katalogu można sprawdzić przy pomocy polecenia dir. Przykład opisujący zmianę katalogu bieżącego:

1 >> pwd 2 ans = 3 / U s e r s / m i c h a l /Documents/SCILAB 4 >> d i r 5 ROBOCZY 6 >> cd ROBOCZY/ 7 >> pwd 8 ans = 9 / U s e r s / m i c h a l /Documents/SCILAB/ROBOCZY 1.3 Tworzenie zmiennych Zmienne tworzy się poprzez przypisanie do etykiety zmiennej wartości. Operatorem przypisania jest znak =. c = z - utworzenie znakowej zmiennej c poprzez przypisanie jej wartości z. x = 5 - utworzenie liczbowej zmiennej x poprzez przypisanie jej wartości 5. s = abc - utworzenie wektora znakowego s, którego elementami są znaki: a, b i c. v = [1, 2, 3] - utworzenie wektora wierszowego v poprzez przypisanie mu zbioru liczb 1, 2, 3. v = [1; 2; 3] - utworzenie wektora kolumnowego v poprzez przypisanie mu zbioru liczb 1, 2, 3. v = 1:3 - utworzenie wektora wierszowego v poprzez przypisanie mu liczb od 1 do 3 z krokiem 1. v = 1:0.5:3 - utworzenie wektora wierszowego v poprzez przypisanie mu liczb od 1 do 3 z krokiem 0.5. m = [1, 2; 3, 4] - utworzenie macierzy m o wymiarze 2 2. 1.4 Dostęp do elementów tablic / macierzy Dostęp do elementów tablic lub macierzy realizowany jest przy pomocy nawiasów okrągłych. Przykład: Dany jest wektor wierszowy v = [10, 20, 30, 40, 50]. v(1) - pierwszy element wektora v, element o wartości 10. v($) - ostatni element wektora v, element o wartości 50. v(2 : 3) - elementy wektora v od drugiego do trzeciego, wektor: [20 30]. v (:) - wszystkie elementy wektora v, wektor: [10 20 30 40 50]. v(1 : $ 1) - elementy wektora v od pierwszego do przedostatniego, wektor: [10 20 30 40]. Uwaga, sposób dostępu do elementów wektora kolumnowego pozostaje bez zmian. Przykład: Dana jest macierz m = [10, 20, 30; 40, 50, 60; 70, 80, 90]. 1 m = 2 10 20 30 3 40 50 60 4 70 80 90 m(1, 1) - element z pierwszego wiersza i pierwszej kolumny, element: 10. m(2, 3) - element z drugiego wiersza i trzeciej kolumny, element: 60. m(3, 2) - element z trzeciego wiersza i drugiej kolumny, element: 80. m(3, 2) - element z trzeciego wiersza i drugiej kolumny, element: 80. m(size(m,1), size (m,2)) - element z trzeciego wiersza i trzeciej kolumny, element: 90.

m(1, :) - wszystkie elementy z pierwszego wiersza, wektor: [10 20 30]. m(:, 2) - wszystkie elementy z drugiej kolumny, wektor: [20 50 80]. m(:, :) - wszystkie elementy z macierzy. m(:) - wszystkie elementy z macierzy w postaci wektora kolumnowego. m(1:2, :) - wiersze macierzy od pierwszego do drugiego, macierz o wymiarze 2 3. m(:, 2:3) - Kolumny macierzy od drugiej do trzeciej, macierz o wymiarze 3 2. m(1:2, 2:3) - Macierz o wymiarze 2 x 2, o elementach: [20 30; 50 60]. 1.5 Operacje arytmetyczne Język Matlab udostępnia następujące operacje arytmetyczne: dodawanie macierzy + odejmowanie macierzy mnożenie macierzy dzielenie macierzy / operacja dzielenia jest odpowiednikiem mnożenia przez macierz odwrotną, dzielenie lewostronne macierzy \ operacja ta zdefiniowana jest jako rozwiązanie X = A\B układu równań liniowych: AX = B, potęgowanie macierzy ^ transponowanie macierzy mnożenie (elementów) tablic. dzielenie (elementów) tablic./ lewostronne dzielenie (elementów) tablic.\ potęgowanie (elementów) tablic.^ 1.6 Operatory relacji Prawda w języku Scilab określona jest wartością 1, fałsz wartością 0. A < B - czy wartość operandu A jest mniejsza od wartości operandu B. A > B - czy wartość operandu A jest większa od wartości operandu B. A <= B - czy wartość operandu A jest mniejsza lub równa od wartości operandu B. A >= B - czy wartość operandu A jest większa lub równa od wartości operandu B. A == B - czy wartość operandów A i B są sobie równe. A = B - czy wartości operandów A i B są różne. 1.7 Instrukcje złożone Konstrukcje instrukcji złożonych oraz przykłady ich użycia przedstawiono w tabelach: 1, 2, 3.

Tabela 1: Instrukcja warunkowa IF ELSE Konstrukcja Przykład 1 i f w y r a z e n i e _ l o g i c z n e 2 i n s t r u k c j e 3 e l s e i f w y r a z e n i e _ l o g i c z n e 4 i n s t r u k c j e 5 e l s e 6 i n s t r u k c j e 7 end 1 i f i > 0 2 a = 1 ; 3 e l s e 4 a = 2 ; 5 end Tabela 2: Instrukcja iteracyjna FOR Konstrukcja Przykład 1 f o r zmienna = w y r a z e n i e 2 i n s t r u k c j e 3 end 1 f o r i = 1 : 3 2 f o r j = 1 : 5 3 m( i, j ) = 1 / ( i+j ) ; 4 end Tabela 3: Instrukcja iteracyjna WHILE Konstrukcja Przykład 1 f o r w y r a z e n i e 2 i n s t r u k c j e 3 end 1 f o r i < 5 2 v ( i ) = i ; 3 i = i + 1 ; 4 end 1.8 Grupowanie wyrażeń Praca w konsoli z interpreterem poleceń jakim jest system Scilab może być nieefektywna w przypadku realizacji złożonego algorytmu. W celu wyeliminowania tego problemu, system Scilab wyposażono w możliwość uruchamiania skryptów. Skrypty te grupują wyrażenia języka Scilab. W celu utworzenia nowego skryptu, należy w konsoli poleceń wydać polecenie: edit. Otwarte zostanie okno edytora skryptów. Skrypt jest plikiem tekstowym z rozszerzeniem sce. W celu zapisania skryptu, należy z menu File wybrać polecenie Save As... Nazwa skryptu nie powinna zawierać znaków: spacji, tabulacji oraz znaków diakrytycznych. Nazwa skryptu nie powinna też być liczbą. Skrypt można uruchomić wydając w konsoli polecenie: exec( nazwa_skryptu.sce, 0). Przykład. Zawartość skryptu o nazwie: scr01. sce: 1 c l c ; c l e a r ; 2 a = 1 ; 3 b = 2 ; 4 c = a + b Skrypt uruchomiono wykonując polecenie o nazwie: exec( scr01. sce, 0).

1.8.1 Funkcje Utworzenie funkcji w języku Scilab tworzy się w taki sam sposób jak skrypty. Ograniczenia dotyczące nazewnictwa funkcji są takie same jak skryptów. Definicja funkcji: 1 f u n c t i o n [ parametry_wyjsciowe ] = nazwa_funkcji ( parametry_formalne ) 2 // o p i s f u n k c j i 3 w y r a z e n i a ; 4 e n d f u n c t i o n Użycie funkcji: 1 zmienna = nazwa_funkcji ( parametry_aktualne ) ; Uwaga: Język Scilab pozwala umieszczać definicje funkcji w tym samym pliku w którym zawarta est treść skryptu uruchamiająca daną funkcję. Możliwe jest również zdefiniowanie osobnego pliku zawierającego definicję funkcji lub grupy funkcji, które będą wykorzystywane przez uruchamiany skrypt. Przykład. Zawartość skryptu o nazwie: scr02. sce, który zawiera definicję funkcji fun01(): 1 f u n c t i o n [ z ] = fun01 ( x, y ) 2 // f u n k c j a zwraca wynik bedacy suma w a r t o s c i argumentow f o r m a l n y c h 3 z = x + y ; 4 e n d f u n c t i o n 5 6 // d e f i n i c j a zmiennych p r z e k a z a n y c h do f u n k c j i 7 // j a k o parametry a k t u a l n e i u r u c h o m i e n i e f u n k c j i 8 a = 1 ; 9 b = 2 ; 10 c = fun01 ( a, b ) 1.9 Elementy grafiki w systemie Scilab Język Scilab wyposażony jest w zbiór funkcji wysokopoziomowych umożliwiających otwarcie nowego okna, umieszczenie na nim pola graficznego, wykreślenie na tym polu grafiki 2D lub 3D oraz modyfikację wykresu. Wykorzystanie tych funkcji przedstawione zostanie na przykładach. Przykład. Utworzyć wykresy funkcji y 1 (t) = t sin 3 (t) oraz y 1 (t) = t cos 3 (t) w dziedzinie t 3π 3π z krokiem π/180. 1 c l c ; c l e a r ; // w y c z y s z c z e n i e k o n s o l i i p r z e s t r z e n i r o b o c z e j 2 x d e l ( w i n s i d ( ) ) ; // z a m k n i e c i e w s z y s t k i c h o k i e n g r a f i c z n y c h 3 t = 3 %pi : %pi /180:3 %pi ; // u t w o r z e n i e wektora d z i e d z i n y 4 y1 = t. s i n ( t ). ^ 3 ; // d e f i n i c j a 1 f u n k c j i, u t w o r z e n i e wektora y1 5 y2 = t. cos ( t ). ^ 3 ; // d e f i n i c j a 2 f u n k c j i, u t w o r z e n i e wektora y2 6 7 f h = s c f ( 1 ) ; // o t w a r c i e okna nr 1 i uchwytu f h 8 p l o t 2 d ( t, y1 ) ; y1h = gce ( ) ; // wykres y1 = f ( t ) i uchwytu y1h do wykresu y1 9 p l o t 2 d ( t, y2 ) ; y2h = gce ( ) ; // wykres y2 = f ( t ) i uchwytu y1h do wykresu y1 10 11 // Formatowanie wykresow 12 13 y1h. c h i l d r e n. f o r e g r o u n d = c o l o r ( s c i l a b b l u e 4 ) ; // zmiana k o l o r u wykresu y1 14 y2h. c h i l d r e n. f o r e g r o u n d = c o l o r ( s c i l a b red2 ) ; // zmiana k o l o r u w y j r e u y2 15 16 y1h. c h i l d r e n. t h i c k n e s s = 2 ; // zmiana g r u b o s c i wykresu y1

17 y2h. c h i l d r e n. t h i c k n e s s = 2 ; // zmiana g r u b o s c i wykresu y2 18 19 y1h. c h i l d r e n. l i n e _ s t y l e = 8 ; // zmiana r o d z a j u l i n i i wykreu y1 20 21 ah = gca ( ) ; // u z y s k a n i e uchwytu do o s i f i g u r y 22 ah. g r i d = [ 1 1 ] ; // w l a c z e n i e s i a t k i na o s i c h a x o r a z y 23 ah. g r i d _ s t y l e = [ 9 9 ] ; // u s t a l e n i e r o d z a j u l i n i i s i a t k i 24 25 x l a b e l ( $t$ ) ; // d o d a n i e o p i s u o s i x 26 y l a b e l ( $y$ ) ; // d o d a n i e o k i s u o s i y 27 f o n t S i z e = 4 ; // d e f i n i c j a z m i e n n e j o k r e s l a j a c a w i e l k o s c f o n t u 28 ah. x _ l a b e l. f o n t _ s i z e = f o n t S i z e ; // zmiana w i e l k o s c i f o n t u na o s i x 29 ah. y _ l a b e l. f o n t _ s i z e = f o n t S i z e ; // zmiana w i e l k o s c i f o n t u na o s i y 30 31 l e f t = 0. 1 ; r i g h t = 0. 0 2 5 ; top = 0. 0 2 5 ; bottom = 0. 1 1 ; // zmienne marginesow 32 ah. margins = [ l e f t r i g h t top bottom ] ; // u s t a l e n i e marginesow w o k n i e f i g u r y 33 34 l h = l e g e n d ( $y_1 ( t )= t \ s i n ^3( t ) $, $y_1 ( t )= t \ cos ^3( t ) $ ) ; // d o d a n i e l e g e n d y 35 l h. f o n t _ s i z e = f o n t S i z e ; // u s t a l e n i e r o z m i a r u f o n t u l e g e n d y 36 l h. l e g e n d _ l o c a t i o n = " i n _ l o w e r _ r i g h t " ; // p o z y c j a l e g e n d y 37 38 // z a p i s f i g u r y do p l i k u 39 xs2png ( fh, wykres. png ) ; Wynik działania programu: 10 8 6 4 2 0 2 4 6 8 10 10 8 6 4 2 0 2 4 6 8 10 Przykład. Skrypt generujący trójwymiarowy wykres funkcji Rosenbrock a. 1 c l c ; c l e a r ; // w y c z y s z c z e n i e k o n s o l i i bazowej p r z e s t r z e n i r o b o c z e j 2 x d e l ( w i n s i d ( ) ) ; // z a m k n i e c i e w s z y s t k i c h o k i e n g r a f i c z n y c h 3 4 f u n c t i o n [ z ] = f ( x, y ) 5 z = (1 x ). ^ 2 +100 (y x. ^ 2 ). ^ 2 ; // f u n k c j a Rosenbrock a 6 e n d f u n c t i o n 7 8 x = l i n s p a c e ( 2, 2, 3 2 ) ; // z a k r e s zmian z m i e n n e j x ( d z i e d z i n a ) 9 y = l i n s p a c e ( 3, 1. 5, 3 2 ) ; // z a k r e s zmian z m i e n n e j y ( d z i e d z i n a ) 10

11 f h = s c f ( 2 ) ; // o t w a r c i e okna g r a f i c z n e g o nr 2 i zwrot uchwytu f h 12 f h. color_map = j e t c o l o r m a p ( 3 2 ) ; // wybor mapy kolorow 13 [ X, Y] = meshgrid ( x, y ) ; // m a c i e r z e d z i e d z i n y 14 p l o t 3 d ( x, y, f (X, Y ) ) ; eh = gce ( ) ; // w a r t o s c f u n k c j i i uchwyt na p l a s z c z y z n e 15 eh. c o l o r _ f l a g = 1 ; // u s t a w i e n i e kolorow z wybranej mapy 16 17 ah = gca ( ) ; // uchwyt na o s i e 18 ah. g r i d = [ 1 1 1 ] ; // w l a c z e n i e s i a t k i 19 ah. r o t a t i o n _ a n g l e s = [ 0. 0 5, 1 3 5 ] ; // r o t a c j a wykresu 20 21 x l a b e l ( $x$ ) ; // d o d a n i e o p i s u o s i x 22 y l a b e l ( $y$ ) ; // d o d a n i e o k i s u o s i y 23 z l a b e l ( $z$ ) ; // d o d a n i e o k i s u o s i z 24 25 f o n t S i z e = 4 ; // d e f i n i c j a z m i e n n e j o k r e s l a j a c a w i e l k o s c f o n t u 26 ah. x _ l a b e l. f o n t _ s i z e = f o n t S i z e ; // zmiana w i e l k o s c i f o n t u na o s i x 27 ah. y _ l a b e l. f o n t _ s i z e = f o n t S i z e ; // zmiana w i e l k o s c i f o n t u na o s i y 28 ah. z _ l a b e l. f o n t _ s i z e = f o n t S i z e ; // zmiana w i e l k o s c i f o n t u na o s i z 29 30 l e f t = 0. 1 ; r i g h t = 0. 0 5 ; top = 0. 0 2 5 ; bottom = 0. 0 5 ; // zmienne marginesow 31 ah. margins = [ l e f t r i g h t top bottom ] ; // u s t a l e n i e marginesow w o k n i e f i g u r y 32 33 xs2png ( fh, wykres3d. png ) ; Wynik działania programu: 5 000 4 000 3 000 2 000 1 000 0 2 1.5 1 0.5 0 0.5 1 1.5 2 1 0 1 2 3 Przykład. Skrypt generujący wykres konturowy funkcji Rosenbrock a. 1 c l c ; c l e a r ; // w y c z y s z c z e n i e k o n s o l i i bazowej p r z e s t r z e n i r o b o c z e j 2 x d e l ( w i n s i d ( ) ) ; // z a m k n i e c i e w s z y s t k i c h o k i e n g r a f i c z n y c h 3 4 f u n c t i o n [ z ] = f ( x, y ) 5 z = (1 x ). ^ 2 +100 (y x. ^ 2 ). ^ 2 ; // f u n k c j a Rosenbrock a 6 e n d f u n c t i o n 7 8 x = l i n s p a c e ( 2, 2, 3 2 ) ; // z a k r e s zmian z m i e n n e j x ( d z i e d z i n a ) 9 y = l i n s p a c e ( 3, 1. 5, 3 2 ) ; // z a k r e s zmian z m i e n n e j y ( d z i e d z i n a ) 10 v = l o g s p a c e ( 2, 5, 3 0 ) ; // poziomy l i n i i na k o n t u r z e

11 12 f h = s c f ( 3 ) ; 13 [ X, Y] = meshgrid ( x, y ) ; // m a c i e r z e d z i e d z i n y 14 contour2d ( x, y, f (X,Y), v ) ; // w a r t o s c f u n k c j i 15 16 x s e t ( " f p f ", " " ) ; // w y l a c z e n i e o p i s u na poziomach 17 18 ah = gca ( ) ; // u z y s k a n i e uchwytu do o s i f i g u r y 19 ah. g r i d = [ 1 1 ] ; // w l a c z e n i e s i a t k i na o s i c h a x o r a z y 20 ah. g r i d _ s t y l e = [ 9 9 ] ; // u s t a l e n i e r o d z a j u l i n i i s i a t k i 21 22 x l a b e l ( $t$ ) ; // d o d a n i e o p i s u o s i x 23 y l a b e l ( $y$ ) ; // d o d a n i e o k i s u o s i y 24 f o n t S i z e = 4 ; // d e f i n i c j a z m i e n n e j o k r e s l a j a c a w i e l k o s c f o n t u 25 ah. x _ l a b e l. f o n t _ s i z e = f o n t S i z e ; // zmiana w i e l k o s c i f o n t u na o s i x 26 ah. y _ l a b e l. f o n t _ s i z e = f o n t S i z e ; // zmiana w i e l k o s c i f o n t u na o s i y 27 28 l e f t = 0. 1 ; r i g h t = 0. 0 2 5 ; top = 0. 0 2 5 ; bottom = 0. 1 1 ; // zmienne marginesow 29 ah. margins = [ l e f t r i g h t top bottom ] ; // u s t a l e n i e marginesow w o k n i e f i g u r y 30 31 // z a p i s f i g u r y do p l i k u 32 xs2png ( fh, wykres. png ) ; Wynik działania programu: 1.5 1 0.5 0 0.5 1 1.5 2 2.5 3 2 1.5 1 0.5 0 0.5 1 1.5 2 1.10 Zadania do wykonania 1. Oblicz wartości wyrażeń: ( ln 3 ) 4 a + b 1 2. Utworzyć skrypt realizujący następujące polecenia: gdzie a = 1.3 b = 0.9 (1) ( π ) cos + sin (21 ) + arc tg 2 (0, 3) (2) 3 sin(0, 6) e arccos(0,7) (3)

1. Utworzyć poziomy wektor v0 o sześciu elementach. Wartość początkowa powinna być równa 0 natomiast wartość końcowa 2.5. tworzyć nowe wektory poziome v1, v2, v3, v4 poprzez wykonanie operacji: dodanie do wektora v wartości 1, odjęcie od wektora v wartości 2, pomnożenie wektora v przez wartość 3, podzielenie wektora v przez wartość 4. Utworzyć macierz A (5x6) poprzez konkatenację utworzonych wektorów. Utworzyć wektor kolumnowy Y z czwartej kolumny macierzy A i usunąć ten wektor z macierzy. Utworzyć macierz R (5x5) której elementy są wybrane losowo o rozkładzie jednostajnym. Przemnożyć poszczególne elementy macierzy A i R przez siebie, tworząc nową macierz A. Utworzyć macierze od D1 do D5 poprzez wstawienie w k-tą (1, 2, 3, 4, 5) kolumnę macierzy A wektor Y. Utworzyć wektor d składający się z wyznaczników utworzonych macierzy Dk. Utworzyć wektor w poprzez podzielenie wartości wektora d przez wyznacznik macierzy A. Utworzyć wektor r realizujący polecenie: A\Y. Porównać wartości wektorów w i r. 3. Wygenerować wykresy funkcji: gdzie: t 0, 12 z krokiem równym 0.1 y 1 (t) = sin(t)e 0,08t y 2 (t) = cos(t)e 0,15t (4) Wykresy powinny być zamieszczone na jednym oknie. Wykres pierwszej funkcji powinien być rysowany linią ciągłą czerwoną a wykres drugiej funkcji, linią przerywaną niebieską. Opisać osie wykresów, nadać tytuł wykresowi i dodać legendę do wykresu umieszczoną wewnątrz pola wykresu centralnie u góry. Zapisać utworzony wykres do pliku. 4. Wygenerować wykres funkcji Ackley a w 3D: y = 20e 2 0.5(x 2 +y 2) e 0.5 cos(2πx)+cos(2πy) + 20 + e 1 (5) gdzie: x 4, 4, y 4, 4 z krokiem równym 0.25 5. Utworzyć skrypt (lub funkcję) wyznaczający wartość liczby π według zależności: k=0 ( 1) k 2k + 1 = π 4 (6)