Modelowanie komputerowe w ochronie środowiska

Podobne dokumenty
Wersje instalacyjne programu Scilab mogą zostać pobrane ze strony

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

SCILAB. Wprowadzenie do Scilaba:

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

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

Metody optymalizacji - wprowadzenie do SciLab a

WPROWADZENIE DO ŚRODOWISKA SCILAB

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

Wprowadzenie do środowiska

Ćwiczenie 3: Wprowadzenie do programu Matlab

Metody i analiza danych

Ćwiczenie 3. MatLab: Algebra liniowa. Rozwiązywanie układów liniowych

Elementy metod numerycznych - zajęcia 9

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

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

Scilab - wprowadzenie

Podstawowe operacje na macierzach

Wprowadzenie do programowania w SciLab: typy danych, wyrażenia, operatory, funkcje własne, skrypty.

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

Matlab Składnia + podstawy programowania

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

Wprowadzenie. SciLab Zmienne. Operatory. Macierze. Macierze. Tomasz Łukaszewski. Politechnika Poznańska Instytut Informatyki

Instalacja

Wprowadzenie do Scilab: macierze

Wprowadzenie do Mathcada 1

Matlab Składnia + podstawy programowania

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

Obliczenia iteracyjne

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

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

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

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

Wprowadzenie do Scilab: funkcje i wykresy

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

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.

Różniczkowanie numeryczne

Drugi sposób definiowania funkcji polega na wykorzystaniu polecenia:

Wprowadzenie do systemu Scilab

Laboratorium 1b Operacje na macierzach oraz obliczenia symboliczne

Całkowanie numeryczne

Wykorzystanie programów komputerowych do obliczeń matematycznych

Równania nieliniowe, nieliniowe układy równań, optymalizacja

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

Równania nieliniowe, nieliniowe układy równań, optymalizacja

1 Programowanie w matlabie - skrypty i funkcje

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

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

Metody numeryczne Laboratorium 2

Obliczenia w programie MATLAB

ALGEBRA z GEOMETRIA, ANALITYCZNA,

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

Wstęp do Programowania Lista 1

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

c - częstość narodzin drapieżników lub współczynnik przyrostu drapieżników,

, h(x) = sin(2x) w przedziale [ 2π, 2π].

OBLICZANIE POCHODNYCH FUNKCJI.

Wprowadzenie do Scilab: macierze

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

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Laboratorium metod numerycznych - SCILAB Laboratorium 2

Interpolacja i aproksymacja, pojęcie modelu regresji

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

Matlab MATrix LABoratory Mathworks Inc.

Wprowadzenie do pakietów MATLAB/GNU Octave

Układy równań liniowych

Obliczenia inżynierskie. oprogramowanie matematyczne

MATLAB - laboratorium nr 1 wektory i macierze

Wykorzystanie programów komputerowych do obliczeń matematycznych, cz. 2/2

Tydzień nr 9-10 (16 maja - 29 maja), Równania różniczkowe, wartości własne, funkcja wykładnicza od operatora - Matematyka II 2010/2011L

Wprowadzenie do Scilab: macierze

PODSTAWY INFORMATYKI 1 MATLAB CZ. 3

Ćwiczenie 6. Transformacje skali szarości obrazów

1.3. Proste przykłady wykorzystania Scicosa

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

Podstawy MATLABA, cd.

Laboratorium Komputerowego Wspomagania Analizy i Projektowania


Scilab skrypty (programowanie)

Rozwiązywanie równań różniczkowych cząstkowych metodą elementów skończonych - wprowadzenie

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

Spis rysunków Widok okien głównych Matlaba i Scilaba Edytory skryptów w Matlabie i Scilabie... 7

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

Wprowadzenie do programu Mathcad 15 cz. 1

PROGRAMOWANIE KWADRATOWE

Podstawowe operacje graficzne.

Podstawowe operacje na macierzach, operacje we/wy

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Podstawy Informatyki Computer basics

Wprowadzenie do Octave


Wspomaganie obliczeń matematycznych. dr inż. Michał Michna

Pochodna funkcji c.d.-wykład 5 ( ) Funkcja logistyczna

ZADANIA ZAMKNIETE W zadaniach 1-25 wybierz i zaznacz na karcie odpowiedzi poprawna

III TUTORIAL Z METOD OBLICZENIOWYCH

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

EGZAMIN MATURALNY Z MATEMATYKI

Cw.12 JAVAScript w dokumentach HTML

Zaawansowane metody numeryczne Komputerowa analiza zagadnień różniczkowych 4. Równania różniczkowe zwyczajne podstawy teoretyczne

Aby przygotować się do kolokwiów oraz do egzaminów należy ponownie przeanalizować zadania

Transkrypt:

Scilab - podstawy Scilab jest środowiskiem numerycznym, programistycznym i numerycznym dostępnym za darmo z INRIA (Institut Nationale de Recherche en Informatique et Automatique). Jest programem podobnym do MATLABa oraz jego darmowego 'klonu' OCTAVE'a. Scilab jest samodzielnym programem zawierającym wiele wbudowanych funkcji numerycznych oraz graficznych. Jest wyposażony w język programowania. Wersje instalacyjne programu Scilab mogą zostać pobrane ze strony http://www.scilab.org. Również na tej stronie znajdują się linki do dokumentacji. Wpisując w wyszukiwarkę na przykład słowa "Scilab tutorial" można znaleźć linki do różnego rodzaju podręczników i wykładów wprowadzających do Scilaba. Zmienne: W programie operuje się na zmiennych. Nadawanie im wartości odbywa się poprzez podstawienie: a=2.5 b=6.3 c=a+b a+b a*b a/b a^b Umieszczenie średnika na końcu polecenia sprawia, że wyliczona wartość (lub wartości) nie jest wyświetlana. Stałe specjalne: %i - wartość urojona równa 1 %pi - π %e - podstawa logarytmu naturalnego %eps - największa wartość, dla której 1 + % eps = 1 %inf - nieskończoność (komputerowa) %t, %f - zmienne logiczne o wartościach prawda (true) i fałsz (f) (Co wyświetli się po wypisaniu wyrażenia logicznego 2>5?) Help - uzyskiwanie pomocy help polecenie, np. help sin apropos polecenie wyświetla informacje związane z danym poleceniem Na stronie http://www.scilab.org/product/man Zmienne- kontynuacja a=2 b=3 save ( val.dat,a) // zapisanie zmiennej a w pliku val.dat clear a // skasowanie zmiennej a a // widać, że zmienna a została zniszczona b load ( val.dat, a ) // ponowne załadowanie zmiennej a 216-4-1 1

a exp(a)+exp(b) sin(a*%pi/b) Wektory Program Scilab jest programem wektorowym, większość operacji jest wykonywanych w odniesieniu do wektorów. Istotne jest rozróżnienie wektora wierszowego i kolumnowego. Wektor wierszowy - elementy oddzielone spacją lub przecinkiem: v=[1 2 3 4] albo v=[1, 2, 3, 4] Wektor kolumnowy - elementy oddzielone średnikiem lub pisane od nowego wiersza: r=[1; 2; 3; 4] r=[1 2 3 4] Uwaga: W przypadku dużych zestawów wartości należy umieszczać średnik na końcu polecenia. Transpozycja - czyli zamiana wektora wierszowego na kolumnowy, i odwrotnie: vt = v' rt = r' vt' y=[1 2 3] Wektor można zdefiniować zadając wartość pierwszego elementu, krok oraz wartość ostatniego elementu, oddzielając je dwukropkiem: x=[-1:.5:1] Zwróćmy uwagę na różnicę: x=[-1:.5:1] Z kolei polecenie: z=linspace (-1, 1, 11); wygeneruje wektor o 11 elementach, przyjmujących wartości z przedziału [-1, 1]. Można zrobić tak: x=[-1:.1: 1] y=sin(x) A następnie naszkicować wykres: plot2d(x,y) Na wektorach o zgodnych wymiarach (co to oznacza?) można wykonywać różne operacje: x+y x-y x*y x*y' x'*y Proszę porównać różnice w trzech ostatnich poleceniach Można odwoływać się do elementów wektorów, np: x(1) x(1) 216-4-1 2

y(2)+x(3) Wektory można konstruować w oparciu o zmienne: a=1 b=2 c=3 x=[a, b, c] Macierze: A=[1,2,3; 4,5,6; 7,8,9] B=[1,2,3 1, 2, 3 1, 2, 3] u=[-1, -2, -3] v=[1, 1, 1] w=[-1,, 1] C=[u; v; w] // należy zwrócić uwagę na te trzy polecenia r=[u v w] // i dzielące je różnice D=[u' v' w'] Operacje na macierzach (Uwaga, bardzo istotna jest zgodność wymiarów macierzy) A+B C-D A*B - mnożenie macierzowe B*A A.*B - mnożenie 'element po elemencie' C*u inv(a) cond(b) det(c) A*inv(A) Operacje 'element po elemencie':.*./.^ Rozwiązywanie układów równań liniowych A=[1, 3, 2; 2,13, 8;, 2 3] b=[1, 2, -4]' x=a\b Jest to najszybszy sposób rozwiązania układu równań. A jak inaczej rozwiązać układ równań? Szybkie tworzenie specjalnych macierzy i wektorów c=ones(5,3) d=zeros(1,1) dd=zeros(1) I=eye(5,5) D=diag( [2 1-1 -2]) L=diag([1,2,3,4], -1) U=rand(3,3) R=rand(3,3,'normal') rv=rand(1,1) rv=rand(1,1) 216-4-1 3

Skrypty Polecenia programu Scilab też można umieścić w pliku (skrypcie) i wielokrotnie wykonywać. W plikach tych oprócz poleceń umieszcza się komentarze; są to linie rozpoczynające się //. Zwyczajowe rozszerzenie takich plików to.sce. Uruchomienie poleceń z pliku następuje po wprowadzeniu polecenia: exec plik.sce Funkcje: sin, cos, log, exp, abs, sqrt sum, max, min gsort (sortowanie) Grafika - rysowanie prostych wykresów x=(-5 :.1 : 5)'; y = x.* abs(x)./ (1 + x.^2); clf(); // wyczyszczenie biezacego okna graficznego plot2d (x,y) UWAGA: Funkcja plot2d wymaga, aby wektory były wektorami kolumnowymi. Jeśli tak nie jest, można wykorzystać operator transpozycji ', np. plot2d(x',z') y2=x.* abs(x)./ (5 + x.^2); plot2d (x,y2,style=-1) Style równe wartości ujemnej oznacza wykreślanie tylko markerów punktów; różnym wartościom odpowiadają różne markery. y3= x.* abs(x)./ (1/5 + x.^2); plot2d (x,y3,style=5) Style dodatnie definiują kolory wykresu. Dodamy tytuł: xtitle ('trzy wykresy') Jeszcze raz; dodatkowo pojawi się legenda oraz opis osi: clf() plot2d (x, [y y2 y3], leg='funkcja 1@funkcja 2@funkcja 3', style=[2 3 4]) xtitle('trzy wykresy', 'opis osi x','opis osi y') // tytuł wykresu oraz opisy osi Operacje na oknach Wykresy umieszczane są w oknach graficznych; można działać w kilku oknach. Jedno z okien ma status bieżącego okna. scf () - utwórz/ ustaw jako bieżace okno scf(1) - utwórz/ ustaw jako bieżace okno 1 xset( window,1) - utwórz/ ustaw jako bieżace okno 1 clf() - wyczyść bieżące okno clf(1) - wyczyść okno 1 xdel() - usuń bieżące okno xdel(1) - usuń okno nr 1 216-4-1 4

trzy wykresy 1..8.6.4.2 opis osi y. -.2 -.4 -.6 -.8-1. -5-4 -3-2 -1 1 2 3 4 5 funkcja 1 funkcja 2 funkcja 3 opis osi x Przykład: x=linspace(, 2*%pi, 4)'; // 4 wartości równomiernie rozłożonych w // przedziale [, 2*pi]. Uwaga na transpozycję. y=sin(x); yp=sin(x) +.1* rand(x,'normal'); // zaburzenie gaussowskie clf() plot2d (x, [yp, y], style=[-2, 2], leg='y=sin(x) + zaburzenie@y=sin(x)') Zadanie: Wykorzystać funkcję plot2d do pokazania, że sin( x) lim = 1 x x Funkcje pisane przez użytkowników - odrobina programowania function [y]=f(x) y=x*abs(x)/(1+x^2); endfunction /// scf(1); clf(); x=(-5:.1:5)'; fplot2d (x,f) Wykresy w 3D x=linspace (, 2*%pi, 11); // wektor wierszowy y=x; z=cos(x) * cos(x); // wynikiem takiego mnożenia jest macierz! plot3d(x,y,z); albo: plot3d1(x,y,z); 216-4-1 5

Z Modelowanie komputerowe w ochronie środowiska 1-1 1 1 2 2 3 3 4 4 Y 5 6 6 5 X 7 7 Większy przykład: Rozwiązywanie równań różniczkowych zwyczajnych Wykorzystamy funkcję ode (Ordinary Differential Equation). Należy podać cztery parametry funkcji: warunek początkowy chwilę początkową t wektor kolejnych punktów czasowych, w których jest wyznaczane rozwiązanie nazwa funkcji, w której zapisana jest prawa strona równania. Funkcja ta w ogólnym przypadku służy do rozwiązywania układów równań różniczkowych cząstkowych. Na początek rozwiążemy równanie logistyczne: dn( N = r N( (1 ), dt K gdzie: N( - zagęszczenie osobników w chwili t; r > współczynnik rozrodczości gatunku; K> pojemność środowiska, dla: K=15; r=1; // TU: zapisana jest prawa strona równania function [pochodne]=prawa_strona(t,n) pochodne(1)=r*n*(1-n/k); endfunction N=1; t=; t=:.1:1; y=ode(n,t,t,prawa_strona); scf(); plot2d(t,y); Dla układu równań sprawa wygląda podobnie, aczkolwiek bardziej skomplikowanie: Model Lotki-Volterry Niech: H( zagęszczenie ofiar w chwili t, P( zagęszczenie drapieżników w chwili t. 216-4-1 6

Wtedy populacja dwóch gatunków jest opisana układem równań różniczkowych zwyczajnych: dh ( = r H ( a H ( P( dt dp( = b H ( P( m P( dt gdzie: r współczynnik rozrodczości gatunku ofiar a współczynnik skuteczności polowań b współczynnik rozrodczości drapieżników (na jednostkę upolowanej ofiary) m współczynnik śmiertelności drapieżników Wyznaczmy populacje gatunków dla... (wartości są zapisane w skrypcie, plik lotka_volterra.sce): // oznaczenia: y(1) <--> H // y(2) <--> P // pochodne(1) - prawa strona 1 rownania // pochodne(2) - prawa strona 2 rownania function [pochodne]=prawa_strona(t,y) pochodne(1) = r*y(1)-a*y(1)*y(2) pochodne(2) = b*y(1)*y(2)-m*y(2) endfunction t=; t=:1:3; H=5; P=2; r=.1; a=.1; b=.1; m=.5; HiP=ode([H; P],t,t,prawa_strona); // rozwiazanie H znajduje sie w pierwszym wierszu macierzy HiP (Hi(1,:)) xset ('window',1); clf(); plot2d(t,[hip(1,:)' HiP(2,:)'],style=[1,2]); xset ('window',2); clf(); plot2d4(hip(1,:)', HiP(2,:)',style=[5]); 14 2 12 18 1 16 14 8 12 6 1 4 8 2 6 5 1 15 2 25 3 4 2 4 6 8 1 12 14 216-4-1 7

Co trzeba zmienić w powyższym kodzie, aby rozwiązać układ równań opisujących następujący model? Mutualizm (symbioza) Model uwzględniający ograniczenia zysków wynikających z mutualizmu, w którym w wyniku pozytywnego oddziaływania drugiego gatunku zwiększa się pojemność środowiska gatunku pierwszego, można opisać w postaci następującego układu równań (May, 1981): dh H = r1 H (1 ) dt K1 + αp dp P = r2 P(1 ) dt K 2 + βh gdzie: r 1, r 2 współczynniki rozrodczości gatunków K 1, K 2 pojemności środowiska dla obu gatunków α, β intensywność mutualistycznych oddziaływań między gatunkami. W obliczeniach przyjąć parametry z rysunku poniżej. Mutualizm - zwiększenie pojemności środowiska Mutualizm - portret fazow y 35 3 25 2 15 1 5 2 4 6 8 1 12 H P zagęszczenie gatunku P 35 3 25 2 15 1 5 1 2 3 4 zagęszczenie gatunku H Wyniki uzyskano dla następujących wartości parametrów: r 1 =,1 r 2 =,1, K 1 =1, K 2 =2, α =,5, β =,4, H =3, P =5. Generowanie ciągów liczb (pesudo) losowych przykład Przykłady wywołania funkcji rand. rand(1, 2) wektor wierszowy o 2 elementach o rozkładzie jednostajnym (,1) rand(1,2) wektor kolumnowy (bo zrobiono transpozycję) rand(2,1) wektor kolumnowy (= macierzy o 2 wierszach i jednej kolumnie) rand(2, 1, normal ) wektor kolumnowy o 2 elementach o rozkładzie normalnym (,1). rand(3, 4) rand(3, 5, normal ) Wektory i macierze losowe można konstruować w oparciu o istniejące wektory lub macierze. Powstały wektor/macierz będzie miał taką samą liczbę wierszy i kolumn. Operacja rand(x) nie wpływa na zawartość wektora x. x=linspace(-1,1,51); y=rand(x); z=rand(x, normal ); 216-4-1 8

Przykładowy większy skrypt: x=linspace(-1,1,51); y=rand(x); // rozklad jednostajny z=rand(x,'normal'); // rozklad normalny xset ('window',); clf() histplot(2,z); // HISTOGRAM dla rozkladu normalnego, wartości podzielono na 2 grup. xtitle ('rozklad normalny'); xset ('window',1); clf() histplot(2,y); // HISTOGRAM dla rozkladu jednostajnego xtitle ('rozklad jednostajny'); xset ('window',2); plot2d(x,z); plot2d(x,y,style=5); Na wykresie znajdują się wartości o rozkładzie normalnym (czarne) i jednostajnym (czerwone). Powiększenie rysunku obok. Histogram dla rozkładu jednostajnego Histogram dla rozkładu normalnego 216-4-1 9