• Nie Znaleziono Wyników

Wprowadzenie do Octave’a

N/A
N/A
Protected

Academic year: 2021

Share "Wprowadzenie do Octave’a"

Copied!
16
0
0

Pełen tekst

(1)

Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska

Wprowadzenie do Octave’a

Jakub Kierzkowski

(2)

Wprowadzenie do Octave’a

Jakub Kierzkowski J.Kierzkowski@mini.pw.edu.pl

(3)

Wst˛ep

Octave jest wolnym i darmowym ´srodowiskiem do oblicze ´n numerycznych (i ró ˙znych innych oblicze ´n matema- tycznych i in ˙zynierskich) oraz j˛ezykiem do obsługi tego ´srodowiska. J˛ezyk ten jest intuicyjny i przyjazny (dla mate- matyków). Octave jest odpowiednikiem komercyjnego (płatnego, drogiego) ´srodowiska Matlab. J˛ezyk Matlab i j˛ezyk Octave to wła´sciwie ten sam j˛ezyk, tyle, ˙ze w dwóch odmianach. Niektóre zaawansowane funkcje Matlaba nie istniej ˛a w Octave’ie, a niektóre proste, podstawowe funkcje Octave’a nie wyst˛epuj ˛a w Matlabie. W zastosowaniach studenc- kich, gdzie nie jest tak istotna szybko´s´c działania, budowanie interfejsów graficznych czy generowanie animacji 3D, bardziej odpowiedni jest Octave – zarówno j˛ezyk (wi˛ecej interesuj ˛acych polece ´n), jak i sam program (darmowy). Oba

´srodowiska mo ˙zna zainstalowa´c i na systemach linuksowych, i na Windowsach, i na MAC OS.

1 Kwestie techniczne

1.1 Instalacja Octave’a

Najnowsz ˛a dost˛epn ˛a w tej chwili wersj ˛a Octave’a jest wersja 3.6.2. Nale ˙zy zainstalowa´c najnowsz ˛a dost˛epn ˛a wersj˛e, jednak program zaj˛e´c Algebry Liniowej z Geometri ˛a Analityczn ˛a II wymaga tak małego wycinka funkcjonalno´sci Octave’a, ˙ze dowolna inna, w miar˛e nowa wersja pakietu (od 3.0.0 wzwy ˙z) powinna działa´c tak samo. U ˙zytkowni- cy systemów linuksowych instaluj ˛a Octave i wszystkie dost˛epne do niego pakiety funkcji mechanizmem instalacji programów wła´sciwym dla swojego systemu. U ˙zytkownicy systemów Windows i MAC OS informacje o ´sci ˛agni˛eciu Octave’a znajd ˛a na stronie http://octave.sourceforge.net/.

Przy instalacji nale ˙zy wybra´c instalacj˛e wszystkich pakietów, poza „oct2mat”. Osoby, które zainstalowały ten pa- kiet i do´swiadczaj ˛a problemów z wy´swietlaniem grafiki (zagadnienia z ko ´nca semestru), mog ˛a wył ˛aczy´c ten pakiet poleceniem pkg unload oct2mat.

Dodatkowo, mo ˙zna zainstalowa´c program OctaveDE, QtOctave, QOcTerm, GUIOctave, lub podobny (nie trzeba tego robi´c, mo ˙zna zrobi´c pó´zniej). S ˛a to programy dodaj ˛ace do Octave’a interfejs graficzny na wzór tego z Matlaba.

1.2 Uruchomienie i wył ˛aczenie Octave’a

Program uruchamia si˛e z Menu Start w Windowsach (obecny pod pełn ˛a nazw ˛a GNU Octave), a w Linuksach z pozio- mu analogicznego menu lub w terminalu poprzez wpisanie nazwy (nazwa zale ˙zna jest od dystrybucji, np. mo ˙ze to by´c „octave3.6”, albo „octave-3.6.2”). Octave działa w trybie tekstowym - nie obsługuje si˛e go mysz ˛a, a tylko klawia- tur ˛a. Mysz ˛a mo ˙zna jedynie zaznaczy´c wy´swietlony tekst. Octave nie posiada zdefinowanych skrótów klawiszowych.

Cała komunikacja z programem odbywa si˛e poprzez wpisywanie polece ´n.

Aby zamkn ˛a´c program nale ˙zy wpisa´c polecenie exit i nacisn ˛a´c ENTER.

1.3 Instalacja edytora

Do tworzenia własnych funkcji potrzebny mo ˙ze by´c edytor tekstu koloruj ˛acy słowa kluczowe (nazwy funkcji). W sys- temach linuksowych umiej˛etno´s´c t˛e posiada chyba ka ˙zdy edytor dla programistów, np. Geany, Gedit. W Windowsach s ˛a to m. in. Notepad++ czy Geany.

(4)

2 Podstawy j˛ezyka

2.1 Kalkulator

W pierwszej kolejno´sci Octave mo ˙ze by´c traktowany jak kalkulator – rozbudowany kalkulator naukowy. Mo ˙zna wi˛ec dodawa´c (+), odejmowa´c (-), mno ˙zy´c (*), dzieli´c (dzielenie prawe / i lewe \), pot˛egowa´c (^), wyci ˛aga´c pier- wiastki kwadratowe (sqrt(x)), oblicza´c warto´sci funkcji wykładniczej (exp(x) lub e^x), trygonometrycznych, hiperbolicznych i wielu, wielu innych, w ciele liczb rzeczywistych i zespolonych, jak równie ˙z np. operacji modulo (mod(p,q)) i reszty z dzielenia (rem(p,q)) dla liczb całkowitych.

Przykłady:

o c t a v e 3 . 2 : 1 > 2+2 ans = 4

o c t a v e 3 . 2 : 1 0 > 2^3 ans = 8

o c t a v e 3 . 2 : 1 1 > s q r t ( 9 ) ans = 3

o c t a v e 3 . 2 : 1 2 > 1/2 ans = 0 . 5 0 0 0 0 o c t a v e 3 . 2 : 1 3 > 10\20 ans = 2

o c t a v e 3 . 2 : 1 7 > s i n ( pi /2) ans = 1

o c t a v e 3 . 2 : 1 8 > exp ( j * pi /2) ans = 6 . 1 2 3 0 e−17 + 1 . 0 0 0 0 e +00 i

ansoznacza odpowied´z („answer”). Ostatni przykład pokazuje niedokładno´s´c oblicze ´n numerycznych. W przykła- dzie tym, zarówno „i” jak i „ j ” oznaczaj ˛a jednostk˛e urojon ˛a. Nale ˙zy zauwa ˙zy´c te ˙z, ˙ze cz˛e´s´c całkowita oddzielona jest od ułamkowej nie przecinkiem, a kropk ˛a.

2.2 Zmienne

Wyniki oblicze ´n mo ˙zna przypisywa´c do zmiennych. Nazwy zmiennych powinny zaczyna´c si˛e od liter (nie mog ˛a zaczyna´c si˛e od cyfr, mog ˛a od niektórych innych znaków). Przypisanie wyniku do zmiennej „a”:

o c t a v e 3 . 2 : 1 > a=2+2

a = 4

Wpisanie nazwy zmiennej spowoduje wy´swietlenie jej warto´sci (mo ˙zna to potraktowa´c jak działanie 0-argumentowe o nazwie takiej, jak nazwa zmiennej). Nazwy zmiennych s ˛a wra ˙zliwe na wielko´s´c liter – zmienna „a” to nie to samo co zmienna „A”.

o c t a v e 3 . 2 : 4 > a

a = 4

o c t a v e 3 . 2 : 5 > A

e r r o r: ‘A’ undefined near l i n e 5 column 1

(5)

W tej sytuacji Octave wy´swietlił komunikat o bł˛edzie.

Mo ˙zna te ˙z nada´c zmiennej warto´s´c wprost, aby potem u ˙zy´c jej w obliczeniach.

o c t a v e 3 . 2 : 2 > k=7

k = 7

o c t a v e 3 . 2 : 3 > k^2 ans = 49

anste ˙z jest zmienn ˛a, tyle, ˙ze tworzon ˛a automatycznie przez program. Na niej równie ˙z mo ˙zna wykonywa´c obliczenia, co bywa przydatne, zwłaszcza z u ˙zyciem historii polece ´n:

o c t a v e 3 . 2 : 1 7 > 3

ans = 3

o c t a v e 3 . 2 : 1 8 > ans^2

ans = 9

o c t a v e 3 . 2 : 1 9 > ans^2

ans = 81

o c t a v e 3 . 2 : 2 0 > ans^2

ans = 6561

Nazwy zmiennym mo ˙zna nadawa´c bardzo dowolnie. Mo ˙zna nawet nada´c zmiennej nazw˛e istniej ˛acej funkcji:

o c t a v e 3 . 2 : 5 > cos =7 cos = 7

o c t a v e 3 . 2 : 6 > i =5 i = 5

W takiej sytuacji, aby znów mie´c mo ˙zliwo´s´c skorzystania z funkcji cos czy jednostki urojonej, nale ˙zy wyczy´sci´c zmienne poleceniem clear:

o c t a v e 3 . 2 : 9 > c l e a r i cos o c t a v e 3 . 2 : 1 0 > i

ans = 0 + 1 i

Zmienne do wyczyszczenia nale ˙zy wpisywa´c po słowie clear, oddzielone spacjami. Aby wyczy´sci´c wszystkie zmien- ne, nale ˙zy wpisa´c clear all.

Wydanie polecenia ze znakiem ´srednika na ko ´ncu spowoduje, ˙ze wynik nie zostanie wy´swietlony. Mo ˙zna te ˙z wyda´c kilka komend na raz, w jednej linii, oddzielonych przecinkami (wynik widoczny) lub ´srednikami (wynik niewidocz- ny):

o c t a v e 3 . 2 : 1 8 > a = 2 ; b=a +2 , c=b * 2 ;

b = 4

o c t a v e 3 . 2 : 1 9 > c

c = 8

(6)

2.3 Polecenia

Oprócz wspomnianych exit i clear, Octave zawiera jeszcze kilka polece ´n niedotycz ˛acych bezpo´srednio oblicze ´n. S ˛a to m. in. quit (to samo, co exit), close – do zamykania okien z wykresami (u ˙zywa si˛e tak samo, jak clear – „all”

zamyka wszystkie), clc – czy´sci ekran programu, who – wy´swietla list˛e wszystkich zmiennych, whos – wy´swietla szczegółow ˛a list˛e wszystkich zmiennych, oraz trzy najwa ˙zniejsze: diary – uruchamia „pami˛etnik”, format – zmiana sposobu wy´swietlania wyników i help – pomoc programu.

„Pami˛etnik” to plik, w którym Octave zapisuje wszystko to, co wida´c w jego oknie – zarówno polecenia, jak i odpo- wiedzi. Wpisanie diary on wł ˛acza, a diary off wył ˛acza zapis. Domy´slnie, plikiem pami˛etnika jest plik diary w ka- talogu roboczym Octave’a. Mo ˙zna te ˙z nakaza´c zapis w innym pliku, wpisuj ˛ac np. „diary pamietnik.txt”. Nale ˙zy pa- mi˛eta´c, ˙ze plik pami˛etnika jest zapisywany na dysku dopiero w momencie wydania polecenia o zako ´nczeniu zapisu, oraz ˙ze przy ponownym wł ˛aczeniu zapisu w tym samym pliku, stara zawarto´s´c zostanie skasowana.

W przypadku rozwi ˛azywania zada ´n z algebry liniowej przydatne bywa, aby wyniki były przybli ˙zane za pomo- c ˛a liczb wymiernych. W tym celu nale ˙zy wyda´c komend˛e „format rat”. Innym przydatnym formatem jest format optymalnie dopasowuj ˛acy wy´swietlanie ka ˙zdej liczby z osobna: „format short g”. Dla macierzy liczb zespolonych przydatny mo ˙ze by´c tak ˙ze „format free” wy´swietlaj ˛acy liczby w postaci par (x, y), gdzie z = x + i · y. Wpisanie samego polecenia format powoduje powrót do domy´slnego formatowania wyników:

o c t a v e 3 . 2 : 3 > pi ans = 3 . 1 4 1 6

o c t a v e 3 . 2 : 4 > format r a t o c t a v e 3 . 2 : 5 > pi

ans = 355/113

o c t a v e 3 . 2 : 6 > format o c t a v e 3 . 2 : 7 > pi ans = 3 . 1 4 1 6

Wi˛ecej informacji na temat polecenia format znajduje si˛e w pomocy. Wykonanie polecenia help powoduje wy´swietle- nie ogólnego tekstu pomocy, „help komenda” wy´swietla natomiast pomoc do danej komendy, czyli np. help format wy´swietli opis wszystkich mo ˙zliwych formatów. Zazwyczaj w pomocy do danej komendy wymienione s ˛a polecenia o podobnym działaniu, albo działaj ˛ace odwrotnie. Aby zamkn ˛a´c pomoc (jak równie ˙z zmienne niemieszcz ˛ace si˛e na ekranie oraz okna wykresów), nale ˙zy nacisn ˛a´c przycisk „Q” na klawiaturze.

Aby wykona´c wybrane polecenie lub działanie, nale ˙zy wpisa´c odpowiedni ˛a komend˛e i nacisn ˛a´c ENTER. Polecenia s ˛a zapami˛etywane – wci´sni˛ecie strzałki w gór˛e na klawiaturze powoduje pokazanie ostatnio wpisanego polecenia, strzałkami góra/dół mo ˙zna przegl ˛ada´c cał ˛a zapisan ˛a histori˛e polece ´n. Wpisanie ci ˛agu znaków i naci´sni˛ecie strzałki w gór˛e spowoduje przegl ˛adanie tylko tych zapami˛etanych komend, które zaczynały si˛e od tego wpisanego ci ˛agu zna- ków, np. wpisanie „ex” i naci´sni˛ecie strzałki w gór˛e poka ˙ze tylko komendy zaczynaj ˛ace si˛e od „ex”, np. exit i exp(2).

Octave obsługuje te ˙z autouzupełnianie polece ´n. Wpisanie „ex” i dwukrotne naci´sni˛ecie klawisza TAB wy´swietli list˛e wszystkich polece ´n zaczynaj ˛acych si˛e od „ex”. Je´sli wpisany zostanie taki ci ˛ag znaków, który jest prefiksem tylko jednego polecenia, to autouzupełnianie po prostu uzupełni t˛e nazw˛e.

(7)

2.3.1 Polecenia systemowe

Kilka polece ´n słu ˙zy do porozumienia si˛e z systemem operacyjnym. pwd pokazuje katalog roboczy Octave’a, czyli ka- talog, w którym b˛edzie on szukał plików (przede wszystkim skryptów i funkcji u ˙zytkownika, o czym mowa w cz˛e´sci 3, str. 12), ls pokazuje zawarto´s´c tego folderu, a cd pozwala zmieni´c katalog roboczy na inny. Takie same polecenia funkcjonuj ˛a w systemach linuksowych. Działanie polece ´n widoczne jest w poni ˙zszym przykładzie.

o c t a v e 3 . 2 : 3 9 > pwd ans = /home/q o c t a v e 3 . 2 : 4 0 > l s

apro .m document . t e x man .m o c t a v e

czasy .m Dokumenty mojaFunkcja .m o b r a z k i .m

d i a r y Lab12 . pdf Obrazy P u l p i t

d i a r y. t x t

o c t a v e 3 . 2 : 4 1 > what

M− f i l e s i n d i r e c t o r y /home/q :

apro .m czasy .m man .m mojaFunkcja .m o b r a z k i .m

o c t a v e 3 . 2 : 4 2 > cd Dokumenty o c t a v e 3 . 2 : 4 3 > pwd

ans = /home/q/Dokumenty o c t a v e 3 . 2 : 4 4 > cd . . o c t a v e 3 . 2 : 4 5 > pwd ans = /home/q

2.4 Macierze

Wi˛ekszo´s´c zmiennych w Octave’ie to macierze. Nawet liczby s ˛a traktowane jak macierze 1 × 1.

2.4.1 Tworzenie

Wprowadzanie macierzy zaczyna si˛e i ko ´nczy nawiasem kwadratowym. Nale ˙zy podawa´c wyrazy wierszami – ko- lejne wyrazy oddzielane spacj ˛a lub przecinkiem (dowolnie), a wiersze oddzielane ´srednikiem, np.:

o c t a v e 3 . 2 : 2 5 > a =[0 2 0 0 ; 1 0 1 0 ; 0 1 0 1 ; 0 0 2 0 ] a =

0 2 0 0

1 0 1 0

0 1 0 1

0 0 2 0

Ka ˙zdy wiersz musi mie´c tyle samo elementów, w przeciwnym razie pojawi si˛e komunikat o bł˛edzie.

Istniej ˛a te ˙z macierze, które tworzymy funkcj ˛a: zeros(n) tworzy macierz zerow ˛a n × n,

a zeros(m,n) macierz zerow ˛a m × n. Podobnie wywoływana jest funkcja ones – tworzy ona macierz z samymi jedyn- kami (nie jednostkow ˛a!). Macierz jednostkowa to eye, z tym zastrze ˙zeniem, ˙ze je´sli wywołana b˛edzie przez eye(m,n), gdzie m 6= n, to wi˛ekszy wymiar uzupełniony b˛edzie zerami:

(8)

o c t a v e 3 . 2 : 2 4 > eye ( 2 , 3 ) ans =

Diagonal Matrix

1 0 0

0 1 0

Innymi wbudowanymi macierzami s ˛a: pascal – macierz Pascala, hilb – macierz Hilberta, invhilb – odwrotno´s´c ma- cierzy Hilberta, itp. Opisy tych macierzy i dalsze przykłady w pomocy programu.

Elementem macierzy mo ˙ze by´c inna macierz – je´sli tylko odpowiednio dobrane b˛ed ˛a wymiary macierzy, to umo ˙zli- wia to tworzenie macierzy blokowych. W przypadku dwóch macierzy:

o c t a v e 3 . 2 : 5 4 > a= p a s c a l ( 3 ) a =

1 1 1

1 2 3

1 3 6

o c t a v e 3 . 2 : 5 5 > b=i n v h i l b ( 3 ) b =

9 −36 30

−36 192 −180

30 −180 180

o c t a v e 3 . 2 : 5 6 > [ a , b ] ans =

1 1 1 9 −36 30

1 2 3 −36 192 −180

1 3 6 30 −180 180

o c t a v e 3 . 2 : 5 7 > [ a ; b ] ans =

1 1 1

1 2 3

1 3 6

9 −36 30

−36 192 −180

30 −180 180

W przypadku wi˛ekszej liczby macierzy, te ˙z jest to mo ˙zliwe:

o c t a v e 3 . 2 : 5 9 > a =[1 1 ] ; b = 2 ; c =[3 3 ; 3 3 ] ; d = [ 4 ; 4 ] ; o c t a v e 3 . 2 : 6 0 > [ a b ; c d ]

ans =

1 1 2

3 3 4

3 3 4

(9)

2.4.2 Wektory

Wa ˙znym i specyficznym dla j˛ezyka Matlab/Octave elementem jest tzw. „notacja dwukropkowa”. Jej pierwsze zasto- sowanie to tworzenie wektora kolejnych liczb całkowitych:

o c t a v e 3 . 2 : 4 5 > 1 : 5 ans =

1 2 3 4 5

Dwukropek oznacza tu „wszystkie kolejne” od jednego ko ´nca do drugiego. To jednak nie wszystko: zamiast kolej- nych liczb, mo ˙zna wzi ˛a´c np. co trzeci ˛a:

o c t a v e 3 . 2 : 4 7 > 1 : 3 : 1 0 ans =

1 4 7 10

Działa to nie tylko dla liczb całkowitych:

o c t a v e 3 . 2 : 5 2 > 0 . 2 : ( − 0 . 1 5 ) : ( − 0 . 4 ) ans =

0 . 2 0 . 0 5 −0.1 −0.25 −0.4

2.4.3 Odwołania do elementów macierzy

Wiersze i kolumny macierzy numerowane s ˛a „po ludzku”, a nie „po maszynowemu”, tzn od 1. Aby otrzyma´c ele- ment macierzy A z wiersza numer i i kolumny j, nale ˙zy wpisa´c a( i , j ), koniecznie w nawiasie okr ˛agłym.

o c t a v e 3 . 2 : 4 1 > a =[1 2 3 ; 4 5 6 ; 7 8 9 ] a =

1 2 3

4 5 6

7 8 9

o c t a v e 3 . 2 : 4 2 > a ( 1 , 1 )

ans = 1

o c t a v e 3 . 2 : 4 3 > a ( 3 , 3 )

ans = 9

o c t a v e 3 . 2 : 4 4 > a ( 2 , 3 )

ans = 6

Odwoływa´c si˛e mo ˙zna nie tylko do pojedynczych elementów, ale te ˙z wybiera´c podmacierze. Sposób pierwszy, naj- prostszy:

o c t a v e 3 . 2 : 6 2 > a =[1 2 3 ; 4 5 6 ; 7 8 9 ] a =

1 2 3

4 5 6

7 8 9

(10)

o c t a v e 3 . 2 : 6 3 > a ( [ 1 , 3 ] , 2 ) ans =

2 8

Do funkcji zostały podane dwa argumenty, ale pierwszy jest wektorem – wektorem zawieraj ˛acym numery wierszy, które chcemy wyłuska´c. Znaj ˛ac tworzenie wektorów za pomoc ˛a notacji dwukropkowej, mo ˙zemy łatwo uzyskiwa´c podmacierze b˛ed ˛ace blokami:

o c t a v e 3 . 2 : 6 4 > a ( 1 : 3 , 1 : 2 ) ans =

1 2

4 5

7 8

Notacja ta ma jednak jeszcze jedno zastosowanie: u ˙zycie dwukropka zamiast numerów współrz˛ednych, wybierze wszystkie współrz˛edne:

o c t a v e 3 . 2 : 6 5 > a ( : , 1 : 2 ) ans =

1 2

4 5

7 8

Czyli osi ˛agn ˛a´c taki sam rezultat szybsz ˛a, ni ˙z poprzednia, metod ˛a.

Zamiast liczy´c lub sprawdza´c ile wierszy lub kolumn ma macierz, mo ˙zna wykorzysta´c automatycznie powstaj ˛ac ˛a zmienn ˛a end, oznaczaj ˛ac ˛a ostatni ˛a współrz˛edn ˛a:

o c t a v e 3 . 2 : 6 6 > a ( end , 2 : end ) ans =

8 9

W wywołaniu dla wektorów jest jeden argument:

o c t a v e 3 . 2 : 9 2 > a = 5 : 9 a =

5 6 7 8 9

o c t a v e 3 . 2 : 9 3 > a ( [ 2 , 4 ] ) ans =

6 8

2.4.4 Działania na macierzach

Na macierzach mo ˙zna wykonywa´c, w taki sam sposób, jak na skalarach, dodawanie, odejmowanie i mno ˙zenie ma- cierzowe. Prawe i lewe dzielenie oznacza tu natomiast mno ˙zenie z prawej i lewej strony przez odwrotno´s´c, tzn.

(11)

A\B = A−1· B i B/A = B · A−1. Specyficznymi działaniami s ˛a transpozycja i sprz˛e ˙zenie, za które odpowiada symbol pojedynczego cudzysłowu, ewentualnie poprzedzonego kropk ˛a. Działanie wyja´sni ˛a przykłady.

Je´sli zmienna jest liczb ˛a zespolon ˛a, to operator cudzysłowu jest sprz˛e ˙zeniem liczby.

o c t a v e 3 . 2 : 8 4 > a=2+ i a = 2 + 1 i

o c t a v e 3 . 2 : 8 5 > a ’ ans = 2 − 1 i

Je´sli zmienna jest macierz ˛a zespolon ˛a, to cudzysłów jest operacj ˛a sprz˛e ˙zenia hermitowskiego. Transpozycj ˛a jest wzi˛e- cie operatora „.’ ” – kropka i cudzysłów.

o c t a v e 3 . 2 : 8 6 > b =[ i ; 1− i ] b =

0 + 1 i 1 − 1 i

o c t a v e 3 . 2 : 8 7 > b ’ ans =

0 − 1 i 1 + 1 i o c t a v e 3 . 2 : 8 8 > b . ’ ans =

0 + 1 i 1 − 1 i

Je ˙zeli zmienna jest macierz ˛a rzeczywist ˛a, to cudzysłów jest operacj ˛a transpozycji.

o c t a v e 3 . 2 : 8 9 > c = [ 1 ; 2 ] c =

1 2

o c t a v e 3 . 2 : 9 0 > c ’ ans =

1 2

Octave posiada bardzo wiele funkcji operuj ˛acych na macierzach. najwa ˙zniejsze z nich to: det(a) – wyznacznik macie- rzy a, eig(a) – multizbiór warto´sci własnych, trace (a) – ´slad macierzy, diag(a) – wyłuskiwanie/ustawianie przek ˛atnej:

o c t a v e 3 . 2 : 9 8 > a= p a s c a l ( 3 ) a =

1 1 1

1 2 3

1 3 6

o c t a v e 3 . 2 : 9 9 > b=diag ( a ) b =

1 2 6

o c t a v e 3 . 2 : 1 0 0 > c=diag ( b ) c =

(12)

Diagonal Matrix

1 0 0

0 2 0

0 0 6

oraz size:

o c t a v e 3 . 2 : 1 0 0 > [ b , c ]= s i z e ( a )

b = 3

c = 3

2.4.5 „Nadmacierze”

Wiadomo ju ˙z jak otrzyma´c podmacierz. Wiadomo jak zrobi´c macierze blokowe. Ale jest jeszcze jeden droga opero- wania na rozmiarach macierzy. Mo ˙zna powi˛eksza´c istniej ˛ace macierze. Np. mo ˙zna z macierzy 2 × 2 zrobi´c macierz 3 × 4:

o c t a v e 3 . 2 : 1 > a =[2 1 ; 1 2 ] a =

2 1

1 2

o c t a v e 3 . 2 : 2 > a ( 3 , 4 ) = 0 a =

2 1 0 0

1 2 0 0

0 0 0 0

Jest to przydatne zwłaszcza dla wektorów:

o c t a v e 3 . 2 : 3 > b =[2 1 1 2 ] b =

2 1 1 2

o c t a v e 3 . 2 : 4 > b ( 5 ) = 3 b =

2 1 1 2 3

o c t a v e 3 . 2 : 5 > b ( 7 ) = 7 b =

2 1 1 2 3 0 7

Mo ˙zna te ˙z tak:

o c t a v e 3 . 2 : 6 > c =[1 2 3 ; 2 3 4 ] c =

1 2 3

2 3 4

o c t a v e 3 . 2 : 7 > c ( 3 , : ) = 2 * c ( 2 , : ) c =

(13)

1 2 3

2 3 4

4 6 8

3 Skrypty i funkcje u˙zytkownika

Octave pozwala na tworzenie własnych funkcji. Mo ˙zna w nich wykorzystywa´c wiele technik programistycznych:

p˛etle, warunki, bloki try-catch, struktury, obsług˛e bł˛edów itp. Nie b˛ed ˛a one jednak potrzebne w zakresie przedmiotu Algebra Liniowa z Geometri ˛a Analityczn ˛a II. Omówione tutaj zostan ˛a podstawowe warunki utworzenia własnej funkcji.

Aby stworzy´c własn ˛a funkcj˛e, nale ˙zy utworzy´c plik tekstowy w dowolnie wybranym edytorze tekstu i zapisa´c go w folderze, który „widzi” Octave. Domy´slnie s ˛a to katalog roboczy i miejsca przechowywania funkcji wbudowa- nych. List˛e tych folderów mo ˙zna wy´swietli´c wywołuj ˛ac polecenie path. Aby doda´c do tej listy kolejny folder, nale ˙zy u ˙zy´c polecenia addpath, np. addpath("D:\Octave") doda do listy folderów folder Octave na dysku D: w systemie Windows. Polecenie takie nale ˙zy wykonywa´c po ka ˙zdym uruchomieniu Octave’a.

3.1 Funkcje

Przyjmijmy, ˙ze chcemy utworzy´c funkcj˛e, która b˛edzie obliczała warto´s´c sin(π · x · y) oraz sin(π · y2)dla argumentów xi y. Tre´s´c pliku z tak ˛a funkcj ˛a wygl ˛adałaby nast˛epuj ˛aco:

f u n c t i o n [ a , b ]= mojaFunkcja ( x , y ) a= s i n ( pi * x * y ) ;

b= s i n ( pi * y ^ 2 ) ;

gdzie function jest poleceniem wskazuj ˛acym Octave’owi, ˙ze dany plik jest funkcj ˛a (bo mo ˙ze nie by´c), [a,b] jest list ˛a zwracanych warto´sci, „mojaFunkcja” jest dowolnie wybran ˛a nazw ˛a funkcji (zasady nazewnictwa podobne jak dla zmiennych, z t ˛a ró ˙znic ˛a, ˙ze nie mo ˙zna u ˙zywa´c istniej ˛acych nazw funkcji), a „(x,y)” to nazwy argumentów. Kolejne linie zawieraj ˛a obliczenia. Tak przygotowany plik trzeba zapisa´c pod nazw ˛a „mojaFunkcja.m” – nie inn ˛a, nazwa funkcji i pliku musi si˛e zgadza´c, a rozszerzenie to zawsze „m” (st ˛ad u ˙zywana nazwa „m-plik”). U ˙zycie takiej funkcji w praktyce wygl ˛ada tak samo, jak u ˙zycie funkcji wbudowanej:

o c t a v e 3 . 2 : 1 > [ u ,w]= mojaFunkcja ( 0 , 0 ) u=0

w=0

Deklaracj˛e funkcji mo ˙zna uzupełni´c o komentarz. Je´sli komentarz b˛edzie wstawiony od drugiej linii, to b˛edzie on słu ˙zył za tre´s´c pomocy do funkcji:

f u n c t i o n [ a , b ]= mojaFunkcja ( x , y )

% To j e s t p i e r w s z a l i n i a pomocy .

% To j e s t d r u g a l i n i a pomocy . a= s i n ( pi * x * y ) ;

b= s i n ( pi * y ^ 2 ) ;

% To j e s t k o m e n t a r z , k t ó r e g o u ˙z y t k o w n i k n i e z o b a c z y .

(14)

Wówczas polecenie help mojaFunkcja poka ˙ze:

‘ mojaFunkcja ’ i s a f u n c t i o n from t h e f i l e /home/q/mojaFunkcja .m

To j e s t pierwsza l i n i a pomocy . To j e s t druga l i n i a pomocy .

A d d i t i o n a l help f o r b u i l t −i n f u n c t i o n s and o p e r a t o r s i s a v a i l a b l e i n t h e on−l i n e v e r s i o n o f t h e manual .

Use t h e command doc < t o p i c > t o s e a r c h t h e manual index .

Help and i n f o r m a t i o n about Octave i s a l s o a v a i l a b l e on t h e WWW a t h t t p ://www. o c t a v e . org and v i a t h e help@octave . org

m a i l i n g l i s t .

Według powy ˙zszego schematu zbudowane s ˛a funkcje wykonuj ˛ace operacje wierszowe i kolumnowe, przygotowane na laboratoria z przedmiotu Algebra Liniowa z Geometri ˛a Analityczn ˛a II.

f u n c t i o n a= o d e j m i j i l o c z y n ( a , r i , rk , c )

%a= o d e j m i j i l o c z y n ( a , r i , rk , c )

%Od w i e r s z a m a c i e r z y a o numerze r i

%o d e j m u j e w i e r s z r k pomno ˙zony p r z e z c . a ( r i , : ) − = c . * a ( rk , : ) ;

end

f u n c t i o n a= p o d z i e l w i e r s z ( a , r i , c )

%a= p o d z i e l w i e r s z ( a , r i , c )

%D z i e l i w i e r s z o numerze r i m a c i e r z y a p r z e z l i c z b ˛e c . a ( r i , : ) / = c ;

end

f u n c t i o n a=zamienwiersze ( a , r i , rk )

%a= z a m i e n w i e r s z e ( a , r i , r k )

%Z a m i e n i a dwa w i e r s z e m a c i e r z y a m i e j s c a m i . a ( [ r i , rk ] , : ) = a ( [ rk , r i ] , : ) ;

end

f u n c t i o n a=zerujkolumne ( a , c i , rk )

% Sprowadza kolumne c i m a c i e r z y A do p o s t a c i a ( k , i ) * e i ,

% g d z i e e i t o i −t a kolumna m a c i e r z y j e d n o s t k o w e j ,

% np aby w m a c i e r z y A kolumna d r u g a b y l a t e j p o s t a c i i w a r t o s c n i e z e r o w a

% b y l a w t r z e c i m w i e r s z u , n a l e z y wywolac f u n k c j e n a s t e p u j a c o :

% A= z e r u j k o l u m n e (A, 2 , 3 ) i f ( a ( rk , c i ) ~ = 0 )

f o r i = [ 1 : ( rk −1) , ( rk + 1 ) : rows ( a ) ]

a ( i , : ) = a ( i , : ) − ( a ( i , c i )/ a ( rk , c i ) ) . * a ( rk , : ) ; end

(15)

end

3.2 Skrypty

Mo ˙zliwe jest tworzenie plików nieb˛ed ˛acych funkcjami – skryptów. Skrypty nie przyjmuj ˛a argumentów i nie zwracaj ˛a wyników. S ˛a jakby spisanymi kolejnymi poleceniami, tak, jakby kto´s je miał po kolei wpisywa´c do Octave’a. Maj ˛a pełny dost˛ep do zmiennych, które s ˛a w pami˛eci Octave’a. Skrypty nie maj ˛a odpowiednika polecenia function – pocz ˛atkiem skryptu jest komentarz (tre´s´c pomocy) albo pierwsza instrukcja.

Przydatne mo ˙ze by´c stworzenie w katalogu roboczym Octave’a dwóch skryptów z poleceniami cz˛esto u ˙zywanymi:

„start.m” z poleceniami wykonywanymi na pocz ˛atku (wł ˛aczenie pami˛etnika, zmiana formatu wy´swietlania liczb, dodanie ´scie ˙zki do folderu, w którym przechowujemy swoje m-pliki, zmiana katalogu roboczego itp.) i „stop.m”

z poleceniami wykonywanymi na ko ´ncu (wył ˛aczenie pami˛etnika, wył ˛aczenie Octave’a). Wówczas po uruchomieniu Octave’a nale ˙zy wpisa´c nazw˛e skryptu startowego (bez rozszerzenia): start, a po zako ´nczeniu pracy wpisa´c stop.

Skrypty te mog ˛a mie´c nast˛epuj ˛ac ˛a posta´c:

start.m format r a t; cd "D: \ Octave "

d i a r y( [ s t r f t i m e ( "%Y−%m−%d %H−%M−%S " , l o c a l t i m e ( time ) ) , ’ . t x t ’ ] ) ; c l c

stop.m d i a r y o f f ; q u i t

Trzecia linia podanego skryptu startowego powoduje utworzenie w katalogu roboczym pliku dziennika o nazwie b˛ed ˛acej aktualn ˛a dat ˛a i czasem, z rozszerzeniem „txt”, np. „2012-12-20 20-12-00.txt”

(16)

Spis tre´sci

1 Kwestie techniczne 2

1.1 Instalacja Octave’a . . . . 2

1.2 Uruchomienie i wył ˛aczenie Octave’a . . . . 2

1.3 Instalacja edytora . . . . 2

2 Podstawy j˛ezyka 3 2.1 Kalkulator . . . . 3

2.2 Zmienne . . . . 3

2.3 Polecenia . . . . 5

2.3.1 Polecenia systemowe . . . . 6

2.4 Macierze . . . . 6

2.4.1 Tworzenie . . . . 6

2.4.2 Wektory . . . . 8

2.4.3 Odwołania do elementów macierzy . . . . 8

2.4.4 Działania na macierzach . . . . 9

2.4.5 „Nadmacierze” . . . . 11

3 Skrypty i funkcje u˙zytkownika 12 3.1 Funkcje . . . . 12

3.2 Skrypty . . . . 14

Cytaty

Powiązane dokumenty

Oświadczam, że zapoznałem się z regulaminem zajęć, wyrażam zgodę na publikację wizerunku dziecka w ramach dokumentacji projektu na stronie UD Targówek, SP 114 i fundacji

— Przy przeszukiwaniu nale˙zy pami˛eta´c, ˙ze danych spełniaj ˛ acych podany warunek mo˙ze by´c wiele - wtedy nale˙zy wy´swietli´c wszystkie te dane na ekranie; mo˙ze

[r]

[r]

Przygotuj: plastikowy pojemnik, papier do pieczenia, gumkę, 1 patyczek do szaszłyków, 1 koralik lub guziki( możesz wykorzystać kredki lub inne patyczki). Zrób zdjęcie

Invoice details: Place of work/studies, postal address, tax identification number (NIP). Adres

Zestaw do samodzielnego rozwi ˛ azania po wykładzie o

Prawo wykonywania pliku pozwala na uruchomienie pliku wykonalnego, a w przypadku katalogu oznacza prawo dostępu do plików wewnątrz katalogu.. Minimalne prawa wymagane do