Wprowadzenie do GNU Octave

Podobne dokumenty
do MATLABa podstawowe operacje na macierzach WYKŁAD Piotr Ciskowski

Programowanie w języku Matlab

Podstawowe wyrażenia matematyczne

Python wstęp do programowania dla użytkowników WCSS

Funkcje matematyczne w C. Programowanie w C Marek Pudełko

MATLAB - podstawy użytkowania

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

Matlab MATrix LABoratory Mathworks Inc.

Wstęp do Pythona. Janusz Szwabiński. Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36

Podstawy obsługi pakietu GNU octave.

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

Funkcje. Część pierwsza. Zbigniew Koza. Wydział Fizyki i Astronomii

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

Języki programowania wysokiego poziomu. PHP cz.2.

Równania nieliniowe. LABORKA Piotr Ciskowski

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

Wykorzystanie programów komputerowych do obliczeń matematycznych

Wykład z okazji dnia liczby π

Instalacja Pakietu R

Wprowadzenie do Pakietu R dla kierunku Zootechnika. Dr Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Blok zawierający opis danego quizu, np. Pierwsze kolokwium z podstaw chemii. Blok definiujący czas trwania kolokwium.

Metody numeryczne I Równania nieliniowe

Rzut oka na współczesną matematykę spotkanie 3: jak liczy kalkulator i o źródłach chaosu

Scilab - wprowadzenie

MATrix LABoratory. A C21 delta tvx444 omega_zero. hxx J23 aaa g4534 Fx_38

Zagadnienia do małej matury z matematyki klasa II Poziom podstawowy i rozszerzony

Przy Matlabie istnieje duże społeczność wymieniająca się plikami, programami i poradami

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

Wprowadzenie do metod numerycznych. Krzysztof Patan

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Podstawy Informatyki 1. Laboratorium 1

Sin[Pi / 4] Log[2, 1024] Prime[10]

E-N-1112-s1 MATEMATYKA Mathematics

ROZKŁAD MATERIAŁU NAUCZANIA KLASA 1, ZAKRES PODSTAWOWY

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

Wprowadzenie do środowiska

Próbny egzamin z matematyki dla uczniów klas II LO i III Technikum. w roku szkolnym 2012/2013

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

Zagadnienia - równania nieliniowe

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

1.1. Rachunek zdań: alternatywa, koniunkcja, implikacja i równoważność zdań oraz ich zaprzeczenia.

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Instalacja

Excel w obliczeniach naukowych i inżynierskich. Wydanie II.

Laboratorium 1b Operacje na macierzach oraz obliczenia symboliczne

V. WYMAGANIA EGZAMINACYJNE

ROZKŁAD MATERIAŁU DO 1 KLASY LICEUM (ZAKRES PODSTAWOWY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

Matematyka liczby zespolone. Wykład 1

Pakiet edukacyjny do nauki przedmiotów ścisłych i kształtowania postaw przedsiębiorczych

Pracownia Komputerowa wykład VI

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

ROZKŁAD MATERIAŁU DO 1 KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

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

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

zajęcia 2 Definiowanie wektorów:

WYMAGANIA I KRYTERIA OCENIANIA Z MATEMATYKI W 3 LETNIM LICEUM OGÓLNOKSZTAŁCĄCYM

Przekształcenia całkowe. Wykład 1

Metody numeryczne. Janusz Szwabiński. nm_slides.tex Metody numeryczne Janusz Szwabiński 2/10/ :02 p.

dr inż. Damian Słota Gliwice r. Instytut Matematyki Politechnika Śląska

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Ciągi liczbowe. Zbigniew Koza. Wydział Fizyki i Astronomii

SPIS TREŚCI WSTĘP LICZBY RZECZYWISTE 2. WYRAŻENIA ALGEBRAICZNE 3. RÓWNANIA I NIERÓWNOŚCI

MATeMAtyka klasa II poziom rozszerzony


METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH

INFORMATYKA TECHNICZNA Komputerowe Wspomaganie Obliczeń Wykład 3. Komputerowe wspomaganie obliczeń w programie Mathcad. dr inż.

JAVAScript w dokumentach HTML (1)

ROZKŁAD MATERIAŁU DLA KLASY I LICEUM I TECHNIKUM (ZAKRES PODSTAWOWY I ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Obliczenia iteracyjne

Modelowanie wybranych pojęć matematycznych. semestr letni, 2016/2017 Wykład 10 Własności funkcji cd.

MATLAB Wprowadzenie. Literatura po polsku: Niektóre cechy MATLABa. Dlaczego warto poznać MATLABa? bo : Co to jest "Środowisko programowania" czyli IDE

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 7. Karol Tarnowski A-1 p.

1 Wyrażenia potęgowe i logarytmiczne.

Iteracyjne rozwiązywanie równań

Standardy wymagań maturalnych z matematyki - matura

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

Obliczenia Symboliczne

PRZETWARZANIE I ORGANIZOWANIE DANYCH: ARKUSZ KALKULACYJNY

Wprowadzenie do systemu GNU Octave. Opracowanie: Jarosław Miszczak (miszczak(at)iitis(.)gliwice(.)pl) Wersja złożona 27/05/2009

WYMAGANIA WSTĘPNE Z MATEMATYKI

Programowanie Delphi obliczenia, schematy blokowe

Metody numeryczne I. Programy wspomagajace obliczenia Maxima. Janusz Szwabiński.

Rozkład materiału a wymagania podstawy programowej dla I klasy czteroletniego liceum i pięcioletniego technikum. Zakres rozszerzony

Typ szkoły: ZASADNICZA SZKOŁA ZAWODOWA Rok szkolny 2015/2016 Zawód: FRYZJER, CUKIERNIK, PIEKARZ, SPRZEDAWCA, FOTOGRAF i inne zawody.

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Technologie Informacyjne Wykład 4

Funkcje. Alina Gleska. Instytut Matematyki, Wydział Elektryczny, Politechnika Poznańska

Algebra macierzy

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

Elementy projektowania inzynierskiego Przypomnienie systemu Mathcad

Standardy wymagań maturalnych z matematyki - matura 2010

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

Projekt Informatyka przepustką do kariery współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH

KARTA KURSU (realizowanego w module specjalności) Metody numeryczne

Wykaz treści i umiejętności zawartych w podstawie programowej z matematyki dla IV etapu edukacyjnego

1) Podstawowe obliczenia. PODSTAWY AUTOMATYKI I ROBOTYKI Laboratorium. Wykonał: Łukasz Konopacki Sala 125. Grupa: poniedziałek/p,

Transkrypt:

Wprowadzenie do GNU Octave Janusz Szwabiński Janusz Szwabiński Wprowadzenie do GNU Octave 1/30

Czym jest GNU Octave? środowisko (skryptowy język programowania + interpreter + GUI) do obliczeń numerycznych wolny 1 odpowiednik komercyjnego programu Matlab aktywnie rozwijany od 1992 roku posiada stabilne wersje na większości współczesnych systemów operacyjnych więcej na stronie http://www.gnu.org/software/octave/ 1 Patrz http://www.debian.org/intro/free Janusz Szwabiński Wprowadzenie do GNU Octave 2/30

Czym GNU Octave nie jest? nie jest systemem do algebry symbolicznej (jak Mathematica, Maxima, Axiom) nie zawsze może dać dokładną odpowiedź na postawiony problem Uwaga!!! Większość rzeczywistych interesujących problemów matematycznych (zwłaszcza tych inżynierskich) i tak nie ma dokładnych, symbolicznych rozwiązań!!! Janusz Szwabiński Wprowadzenie do GNU Octave 3/30

Dygresja - symbolicznie kontra numerycznie Zadanie Szukamy pierwiastków równania Rozwiązanie symboliczne: 1 p 0 Wzór na różnicę kwadratów: 2 a < 0 gdzie i = 1 x 2 p = 0 (x p)(x + p) = 0 x = ± p (x i p)(x + i p) = 0 x = ±i p Janusz Szwabiński Wprowadzenie do GNU Octave 4/30

Dygresja - symbolicznie kontra numerycznie Rozwiązanie numeryczne: 1 wiele metod numerycznych: metoda bisekcja, regula falsi, Brenta, siecznych, Newtona 2 każda z nich wymaga podstawienia za p konkretnej wartości!!! 3 niektóre wymagają dodatkowo określenia przedziału izolacji pierwiastka lub podania rozsądnego punktu startowego 4 metoda siecznych ma np. postać x 0 = a x 1 = b x n+1 = x n f (x n)(x n x n 1 ) f (x n ) f (x n 1 ) gdzie f (x) = x 2 p, (a, b) - przedział izolacji pierwiastka Janusz Szwabiński Wprowadzenie do GNU Octave 5/30

Dygresja - symbolicznie kontra numerycznie Rozwiązanie numeryczne (c.d.): Niech p = 2, a = 1, b = 2, czyli szukamy rozwiązania równania x 2 2 = 0 w przedziale (1, 2). Możemy wyliczyć kolejne przybliżenia metodą siecznych (z dokładnością do 4 miejsc po przecinku): Krok x f(x) x 2 1, 3333 0, 2222 x 3 1, 4000 0, 0400 x 4 1, 4146 0, 0012 x 5 1, 4142 0 x 6 1, 4142 0 Janusz Szwabiński Wprowadzenie do GNU Octave 6/30

Możliwości GNU Octave obliczanie wartości wyrażeń (w tym wyrażeń zawierających zaawansowane funkcje matematyczne, np. funkcje zespolone) znajdowanie wartości sum i iloczynów ciągów liczb o bardzo dużej liczbie elementów układy równań liniowych (mogących mieć nawet tysiące niewiadomych) regresja liniowa równania i układy równań nieliniowych obliczanie wartości całek oznaczonych równania różniczkowe zwyczajne i cząstkowe algebra liniowa (iloczyny wektorów i macierzy, wartości i wektory własne, rozkład macierzy itp.) prezentacja rozwiązań w postaci wykresów Janusz Szwabiński Wprowadzenie do GNU Octave 7/30

Dlaczego nie C++? stopień skomplikowania języka przeszkadza w rozwiązywaniu właściwych zagadnień matematycznych brak natywnego wsparcia dla niektórych koncepcji matematycznych brak natywnego wsparcia dla wizualizacji danych jeżeli nawet ostatecznie wydajność obliczeń wymaga implementacji w C++ (lub podobnym języku), algorytmy matematyczne często testowane są w GNU Octave Janusz Szwabiński Wprowadzenie do GNU Octave 8/30

Dlaczego nie Python? Python z modułami numpy, scipy i matplotlib oferuje praktycznie podobną funkcjonalność składnia jest również podobna do składni Matlab/Octave język jest zwięzły, jednak kod z reguły jest nieco dłuższy niż odpowiedni kod w Octave... jednak od lat niepisanym standardem środowisk numerycznych jest Matlab, dlatego znajomość jego lub jego darmowego klona może okazać się przydatna na rynku pracy 2 2 Na kursie z Pythona będzie wykład poświęcony jego numerycznym możliwościom. Janusz Szwabiński Wprowadzenie do GNU Octave 9/30

Dlaczego nie Python? Janusz Szwabiński Wprowadzenie do GNU Octave 10/30

Instalacja GNU Octave - Windows pakiet instalacyjny pod adresem https://ftp.gnu.org/gnu/octave/windows/ Janusz Szwabiński Wprowadzenie do GNU Octave 11/30

Instalacja GNU Octave - Linux źródła do pobrania na stronie http://www.gnu.org/software/octave/download.html wiele dystrybucji oferuje pakiety binarne w swoich repozytoriach jeżeli w dystrybucji jest starsza wersja, ciągle możemy znaleźć pakiety binarne w Internecie przykład na Ubuntu: apt-add-repository ppa:octave/stable apt-get update apt-get install octave apt-get install octave-info Janusz Szwabiński Wprowadzenie do GNU Octave 12/30

Pierwsze kroki w GNU Octave Janusz Szwabiński Wprowadzenie do GNU Octave 13/30

Pierwsze kroki w GNU Octave Janusz Szwabiński Wprowadzenie do GNU Octave 14/30

Pierwsze kroki w GNU Octave octave:1> help sin sin is a built-in function from the file libinterp/corefcn/ mappers.cc -- Mapping Function: sin (X) Compute the sine for each element of X in radians. See also: asin, sind, sinh. Additional help for built-in functions and operators is available in the online version of the manual. Use the command doc <topic> to search the manual index. Help and information about Octave is also available on the WWW at http://www.octave.org and via the help@octave.org mailing list. Janusz Szwabiński Wprowadzenie do GNU Octave 15/30

Pierwsze kroki w GNU Octave octave:2> doc File: octave.info, Node: Top, Next: Preface, Up: (dir) GNU Octave ********** This manual documents how to run, install and port GNU Octave, as well as its new features and incompatibilities, and how to report bugs. It corresponds to GNU Octave version 4.0.0. * Menu: * Preface:: * Introduction:: A brief introduction to Octave. * Getting Started:: * Data Types:: * Numeric Data Types:: * Strings:: * Data Containers:: * Variables:: * Expressions:: * Evaluation:: <snip> Janusz Szwabiński Wprowadzenie do GNU Octave 16/30

Pierwsze kroki w GNU Octave octave:3> doc numeric File: octave.info, Node: Numeric Objects, Next: Missing Data, Up: Built-in D\ ata Types 3.1.1 Numeric Objects --------------------- Octave s built-in numeric objects include real, complex, and integer scalars and matrices. All built-in floating point numeric data is currently stored as double precision numbers. On systems that use the IEEE floating point format, values in the range of approximately 2.2251e-308 to 1.7977e+308 can be stored, and the relative precision is approximately 2.2204e-16. The exact values are given by the variables realmin, realmax, and eps, respectively. Matrix objects can be of any size, and can be dynamically reshaped and resized. It is easy to extract individual rows, columns, or submatrices using a variety of powerful indexing features. *Note Index Expressions::. *Note Numeric Data Types::, for more information. Janusz Szwabiński Wprowadzenie do GNU Octave 17/30

Reprezentacja liczb w GNU Octave liczby są przechowywane w postaci binarnej: 12, 25 10 = 1 2 3 +1 2 2 +0 2 1 +1 2 0 +0 2 1 +1 2 2 = 1101, 01 2 każdej liczbie przypisane są 64 bity więcej na ten temat pod adresem https: //www.gnu.org/software/gsl/manual/html_node/ Representation-of-floating-point-numbers.html Janusz Szwabiński Wprowadzenie do GNU Octave 18/30

Działania na liczbach octave:3> 1/7 ans = 0.14286 octave:4> 1/ans ans = 7 octave:5> 1/0.14286 ans = 6.9999 octave:6> ans == 7 % sprawdź, czy równe? ans = 0 % nie! octave:7> 7 == 7 ans = 1 Janusz Szwabiński Wprowadzenie do GNU Octave 19/30

Dokładność obliczeń octave:8> 1-0.2-0.2-0.2-0.2-0.2 ans = 5.5511e-17 skończona liczba bitów... nie każdą liczbę można przedstawić dokładnie, np. octave:9> 0.2 ans = 0.20000 octave:10> format bit % reprezentacja bitowa na wyjściu octave:11> 0.2 % zwróć uwagę na pojawiający się cykl!!! ans = 0011111111001001100110011001100110011001100110011001100110011010 octave:12> format w obliczeniach numerycznych trzeba z tym żyć należy być ostrożnym np. przy porównaniach, czy liczby są równe Janusz Szwabiński Wprowadzenie do GNU Octave 20/30

Operatory arytmetyczne octave:21> 2 + 2 % dodawanie ans = 4 octave:22> 2-3 % odejmowanie ans = -1 octave:23> 1/7 % dzielenie ans = 0.14286 octave:24> 7\1 % dzielenie raz jeszcze ans = 0.14286 octave:25> 4*5 % mnożenie ans = 20 octave:26> 2**3 % potęgowanie ans = 8 octave:27> 2^3 % potęgowanie raz jeszcze ans = 8 Janusz Szwabiński Wprowadzenie do GNU Octave 21/30

Stałe matematyczne octave:31> pi ans = 3.1416 octave:32> format long octave:33> ans ans = 3.14159265358979 octave:34> format octave:37> pi ans = 3.1416 octave:38> sin(pi) ans = 1.2246e-16 octave:39> cos(pi) ans = -1 octave:40> sin(pi/2) ans = 1 octave:41> e % liczba Eulera ans = 2.7183 octave:42> log(e) ans = 1 octave:43> i % jednostka urojona ans = 0 + 1i octave:44> i**2 ans = -1 octave:45> log(-1) ans = 0.00000 + 3.14159i octave:46> sqrt(-1) ans = 0 + 1i Janusz Szwabiński Wprowadzenie do GNU Octave 22/30

Wbudowane funkcje matematyczne octave:47> log10(100) % logarytm dziesiętny ans = 2 octave:48> sin(90) % argument w radianach!!! ans = 0.89400 octave:49> sin(90*pi/180) ans = 1 octave:50> factorial(5) % silnia ans = 120 octave:51> factorial(50) % wynik w notacji naukowej: ans = 3.0414e+64 % czyli 3.0414*10^{64} octave:52> exp(1) ans = 2.7183 octave:53> 2*sqrt(9) % w wyrażeniach znak * zawsze potrzebny ans = 6 Janusz Szwabiński Wprowadzenie do GNU Octave 23/30

Wbudowane funkcje matematyczne cos kosinus kąta (w radianach) asinh arcus sinus hiperboliczny sin sinus kąta atan arcus tangens tan tangens atan2 arcus tangens (2 argumenty) exp funkcja wykładnicza atanh arcus tangens hiperboliczny log logarytm naturalny abs wartość bezwzględna log10 logarytm dziesiętny sign znak liczby sinh sinus hiperboliczny round zaokrąglanie do najbliższej liczby całkowitej cosh kosinus hiperboliczny floor zaokrąglanie w dół tanh tangens hiperboliczny ceil zaokrąglanie w górę acos arcus kosinus fix zaokrąglanie w kierunku zera acosh arcus kosinus hiperboliczny rem reszta z dzielenia całkowitego asin arcus sinus hiperboliczny sqrt pierwiastek kwadratowy Janusz Szwabiński Wprowadzenie do GNU Octave 24/30

Zmienne octave:54> deg = pi/180 deg = 0.017453 octave:55> sin(90*deg) ans = 1 octave:56> new = 3*ans % zmienną ans już znamy new = 3 octave:57> who Variables in the current scope: ans deg new octave:58> x2 = sqrt(3) x2 = 1.7321 octave:59> x2**2 ans = 3.0000 Janusz Szwabiński Wprowadzenie do GNU Octave 25/30

Wykresy funkcji octave:1> x = -10 : 0.1 : 10; % sekwencja argumentów funkcji (wektor) octave:2> y = sin(x).*exp(-abs(x)); % wektor wartości funkcji octave:3> plot(x,y) octave:4> grid Janusz Szwabiński Wprowadzenie do GNU Octave 26/30

Wykresy funkcji octave:5> plot(x,y, ro ) octave:6> title( Wykres funkcji y=sin(x)*exp(- x ) ) octave:7> xlable( Kąt ) error: xlable undefined near line 1 column 1 octave:7> xlabel( Kąt ) octave:8> ylabel( Wartość ) Janusz Szwabiński Wprowadzenie do GNU Octave 27/30

Wykresy funkcji octave:11> plot(x,sin(x), ro,x,cos(x), b- ) octave:12> xlabel( x ) octave:13> ylabel( f(x) ) octave:14> title( Funkcje trygonometryczne ) octave:15> grid on octave:16> legend( Sinus, Kosinus ) Janusz Szwabiński Wprowadzenie do GNU Octave 28/30

Wykresy funkcji dwóch zmiennych octave:17> x = -2:0.1:2; octave:18> [xx,yy] = meshgrid(x,x); octave:19> z = sin(xx.^2 - yy.^2); octave:20> mesh(x,y,z) error: surface: rows (Z) must be the same as length (Y) and columns (Z) must be the same as length (X) error: called from surface> surface at line 128 column 11 surface at line 60 column 19 mesh at line 76 column 12 octave:20> mesh(x,x,z) Janusz Szwabiński Wprowadzenie do GNU Octave 29/30

Równania nieliniowe octave:21> function y = f(x) % definiujemy funkcję, której pierwiastka szukamy > y = x.**2-9; > endfunction octave:22> [x, info] = fsolve("f",2.0) % właściwe rozwiązanie x = 3.0000 info = 8.2960e-08 octave:23> f(x) % sprawdzenie wyniku ans = 8.2960e-08 octave:25> [x, info] = fsolve("f",0.0) % punkt startowy (czasami) ma znaczenie warning: division by zero warning: called from fsolve> dogleg at line 587 column 5 fsolve at line 303 column 11 warning: division by zero <snip> warning: division by zero x = 0 info = -9 octave:28> [x, info] = fsolve("f",-1.0) x = -3.0000 info = 2.3915e-08 octave:32> x = -4:0.1:4; octave:33> plot(x,f(x)) Janusz Szwabiński Wprowadzenie do GNU Octave 30/30