Wstep
Octave jest wolnym i darmowym srodowiskiem do obliczen numerycznych (i róznych innych obliczen matema-
tycznych i inzynierskich) oraz jezykiem do obsługi tego srodowiska. Jezyk ten jest intuicyjny i przyjazny (dla mate-
matyków). Octave jest odpowiednikiem komercyjnego (płatnego, drogiego) srodowiska Matlab. Jezyk Matlab i jezyk
Octave to własciwie ten sam jezyk, tyle, ze w dwóch odmianach. Niektóre zaawansowane funkcje Matlaba nie istnieja
w Octave’ie, a niektóre proste, podstawowe funkcje Octave’a nie wystepuja w Matlabie. W zastosowaniach studenc-
kich, gdzie nie jest tak istotna szybkosc działania, budowanie interfejsów graficznych czy generowanie animacji 3D,
bardziej odpowiedni jest Octave – zarówno jezyk (wiecej interesujacych polecen), jak i sam program (darmowy). Oba
srodowiska mozna zainstalowac i na systemach linuksowych, i na Windowsach, i na MAC OS, a nawet na systemie
Android.
1 Kwestie techniczne
1.1 Instalacja Octave’a
Najnowsza dostepna w tej chwili wersja Octave’a jest wersja 3.6.4 (ale ukonczono juz prace nad wersja 3.8.0). Nalezy
zainstalowac najnowsza dostepna wersje, jednak program zajec Algebry Liniowej z Geometria Analityczna II wyma-
ga tak małego wycinka funkcjonalnosci Octave’a, ze dowolna inna, w miare nowa wersja pakietu powinna działac tak
samo, w szczególnosci 3.2 z repozytoriów starszych wersji Ubuntu. Uzytkownicy systemów linuksowych instaluja
Octave i wszystkie dostepne do niego pakiety funkcji mechanizmem instalacji programów własciwym dla swoje-
go systemu. Uzytkownicy systemów Windows sciagaja Octave ze strony http://octave.sourceforge.net/,
link Windows: installers i tam szukamy linku do najnowszej wersji „MinGW installer” – nalezy pobrac dwa pliki z
rozszerzeniem „7z” i rozpakowac je do katalogu bez spacji w nazwie, np „C://Octave”.
Dodatkowo, mozna zainstalowac program OctaveDE, QtOctave, QOcTerm, GUIOctave, lub podobny (nie trzeba tego
robic, mozna zrobic pózniej). Sa to programy dodajace do Octave’a interfejs graficzny na wzór tego z Matlaba.
1.2 Uruchomienie i wyłaczenie Octave’a
Program uruchamia sie z Menu Start w Windowsach (obecny pod pełna nazwa GNU Octave), a w Linuksach z po-
ziomu analogicznego menu lub w terminalu poprzez wpisanie nazwy (nazwa zalezna jest od dystrybucji, np. moze
to byc postaci „octave3.2”, albo „octave-3.6.3”). Octave działa w trybie tekstowym - nie obsługuje sie go mysza, a tyl-
ko klawiatura. Mysza mozna jedynie zaznaczyc wyswietlony tekst w terminalu. Octave nie posiada zdefinowanych
skrótów klawiszowych. Cała komunikacja z programem odbywa sie poprzez wpisywanie polecen.
Aby zamknac program nalezy wpisac polecenie exit i nacisnac ENTER.
1.3 Instalacja edytora
Do tworzenia własnych funkcji potrzebny moze byc edytor tekstu kolorujacy słowa kluczowe (nazwy funkcji). W sys-
temach linuksowych umiejetnosc te posiada chyba kazdy edytor dla programistów, np. Geany, Gedit. W Windowsach
2
sa to m. in. Notepad++ czy Geany. Nie bedzie to potrzebne na poziomi kursu z algebry liniowej.
2 Podstawy jezyka
2.1 Kalkulator
W pierwszej kolejnosci Octave moze byc traktowany jak kalkulator – rozbudowany kalkulator naukowy. Mozna
wiec dodawac (+), odejmowac (-), mnozyc (*), dzielic (dzielenie prawe / i lewe \), potegowac (^), wyciagac pier-
wiastki kwadratowe (sqrt(x)), obliczac wartosci funkcji wykładniczej (exp(x) lub e^x), trygonometrycznych,
hiperbolicznych i wielu, wielu innych, w ciele liczb rzeczywistych i zespolonych, jak równiez np. operacji modulo
(mod(p,q)) i reszty z dzielenia (rem(p,q)) dla liczb całkowitych.
Przykłady:
octave3 . 2 : 1 > 2+2
ans = 4
octave3 .2 :10 > 2^3
ans = 8
octave3 .2 :11 > sqr t ( 9 )
ans = 3
octave3 .2 :12 > 1/2
ans = 0.50000
octave3 .2 :13 > 10\20
ans = 2
octave3 .2 :17 > sin ( pi /2)
ans = 1
octave3 .2 :18 > exp ( j * pi /2)
ans = 6 .1230 e−17 + 1 .0000 e+00 i
ans oznacza odpowiedz („answer”). Ostatni przykład pokazuje niedokładnosc obliczen numerycznych. W przykła-
dzie tym, zarówno „i” jak i „ j” oznaczaja jednostke urojona. Nalezy zauwazyc tez, ze czesc całkowita oddzielona jest
od ułamkowej nie przecinkiem, a kropka.
2.2 Zmienne
Wyniki obliczen mozna przypisywac do zmiennych. Nazwy zmiennych powinny zaczynac sie od liter (nie moga
zaczynac sie od cyfr, moga od niektórych innych znaków). Przypisanie wyniku do zmiennej „a”:
octave3 . 2 : 1 > a=2+2
a = 4
Wpisanie nazwy zmiennej spowoduje wyswietlenie jej wartosci (mozna to potraktowac jak działanie 0-argumentowe
o nazwie takiej, jak nazwa zmiennej). Nazwy zmiennych sa wrazliwe na wielkosc liter – zmienna „a” to nie to samo
co zmienna „A”.
3
octave3 . 2 : 4 > a
a = 4
octave3 . 2 : 5 > A
e r r o r : ‘A’ undefined near l ine 5 column 1
W tej sytuacji Octave wyswietlił komunikat o błedzie.
Mozna tez nadac zmiennej wartosc wprost, aby potem uzyc jej w obliczeniach.
octave3 . 2 : 2 > k=7
k = 7
octave3 . 2 : 3 > k^2
ans = 49
ans tez jest zmienna, tyle, ze tworzona automatycznie przez program. Na niej równiez mozna wykonywac obliczenia,
co bywa przydatne, zwłaszcza z uzyciem historii polecen:
octave3 .2 :17 > 3
ans = 3
octave3 .2 :18 > ans^2
ans = 9
octave3 .2 :19 > ans^2
ans = 81
octave3 .2 :20 > ans^2
ans = 6561
Nazwy zmiennym mozna nadawac bardzo dowolnie. Mozna nawet nadac zmiennej nazwe istniejacej funkcji:
octave3 . 2 : 5 > cos=7
cos = 7
octave3 . 2 : 6 > i =5
i = 5
W takiej sytuacji, aby znów miec mozliwosc skorzystania z funkcji cos czy jednostki urojonej, nalezy wyczyscic
zmienne poleceniem clear:
octave3 . 2 : 9 > c l e a r i cos
octave3 .2 :10 > i
ans = 0 + 1 i
Zmienne do wyczyszczenia nalezy wpisywac po słowie clear, oddzielone spacjami. Aby wyczyscic wszystkie zmien-
ne, nalezy wpisac clear all .
Wydanie polecenia ze znakiem srednika na koncu spowoduje, ze wynik nie zostanie wyswietlony. Mozna tez wydac
kilka komend na raz, w jednej linii, oddzielonych przecinkami (wynik widoczny) lub srednikami (wynik niewidocz-
ny):
4
octave3 .2 :18 > a =2; b=a +2 , c=b * 2 ;
b = 4
octave3 .2 :19 > c
c = 8
2.3 Polecenia
Oprócz wspomnianych exit i clear, Octave zawiera jeszcze kilka polecen niedotyczacych bezposrednio obliczen. Sa
to m. in. quit (to samo, co exit), close – do zamykania okien z wykresami (uzywa sie tak samo, jak clear – „all”
zamyka wszystkie), clc – czysci ekran programu, who – wyswietla liste wszystkich zmiennych, whos – wyswietla
szczegółowa liste wszystkich zmiennych, what – wyswietla liste plików .m w biezacym katalogu, oraz trzy dla nas
najwazniejsze: diary – uruchamia „pamietnik”, format – zmiana sposobu wyswietlania wyników i help – pomoc
programu.
„Pamietnik” to plik, w którym Octave zapisuje wszystko to, co widac w jego oknie – zarówno polecenia, jak i odpo-
wiedzi. Wpisanie diary on włacza, a diary off wyłacza zapis. Domyslnie, plikiem pamietnika jest plik diary w ka-
talogu roboczym Octave’a. Mozna tez nakazac zapis w innym pliku, wpisujac np. „diary pamietnik.txt”. Nalezy
pamietac, ze plik pamietnika jest zapisywany na dysku dopiero w momencie wydania polecenia o zakonczeniu za-
pisu (lub zamknieciu programu), oraz ze przy ponownym właczeniu zapisu w tym samym pliku, nowa zawartosc
zostanie zapisana na koncu starej.
W przypadku rozwiazywania zadan z algebry liniowej przydatne bywa, aby wyniki były przyblizane za pomo-
ca liczb wymiernych. W tym celu nalezy wydac komende „format rat”. Innym przydatnym formatem jest format
optymalnie dopasowujacy wyswietlanie kazdej liczby z osobna: „format short g”. Dla macierzy liczb zespolonych
przydatny moze byc takze „format free” wyswietlajacy liczby w postaci par (x, y), gdzie z = x + i · y. Wpisanie
samego polecenia format powoduje powrót do domyslnego formatowania wyników:
octave3 . 2 : 3 > pi
ans = 3 .1416
octave3 . 2 : 4 > format r a t
octave3 . 2 : 5 > pi
ans = 355/113
octave3 . 2 : 6 > format
octave3 . 2 : 7 > pi
ans = 3 .1416
Wiecej informacji na temat polecenia format znajduje sie w pomocy. Wykonanie polecenia help powoduje wyswietle-
nie ogólnego tekstu pomocy, „help komenda” wyswietla natomiast pomoc do danej komendy, czyli np. help format
wyswietli opis wszystkich mozliwych formatów. Zazwyczaj w pomocy do danej komendy wymienione sa polecenia
o podobnym działaniu, albo działajace odwrotnie. Aby zamknac pomoc (jak równiez zmienne niemieszczace sie na
ekranie oraz okna wykresów), nalezy nacisnac przycisk „Q” na klawiaturze.
Aby wykonac wybrane polecenie lub działanie, nalezy wpisac odpowiednia komende i nacisnac ENTER. Polecenia
sa zapamietywane – wcisniecie strzałki w góre na klawiaturze powoduje pokazanie ostatnio wpisanego polecenia,
5
strzałkami góra/dół mozna przegladac cała zapisana historie polecen. Wpisanie ciagu znaków i nacisniecie strzałki
w góre spowoduje przegladanie tylko tych zapamietanych komend, które zaczynały sie od tego wpisanego ciagu zna-
ków, np. wpisanie „ex” i nacisniecie strzałki w góre pokaze tylko komendy zaczynajace sie od „ex”, np. exit i exp(2).
Octave obsługuje tez autouzupełnianie polecen. Wpisanie „ex” i dwukrotne nacisniecie klawisza TAB wyswietli liste
wszystkich polecen zaczynajacych sie od „ex”. Jesli wpisany zostanie taki ciag znaków, który jest prefiksem tylko
jednego polecenia, to autouzupełnianie po prostu uzupełni te nazwe.
2.3.1 Polecenia systemowe
Kilka polecen słuzy do porozumienia sie z systemem operacyjnym. pwd pokazuje katalog roboczy Octave’a, czyli ka-
talog, w którym bedzie on szukał plików (przede wszystkim skryptów i funkcji uzytkownika, o czym mowa w czesci
3, str. 12), ls pokazuje zawartosc tego folderu, a cd pozwala zmienic katalog roboczy na inny. Takie same polecenia
funkcjonuja w systemach linuksowych. Działanie polecen widoczne jest w ponizszym przykładzie.
octave3 .2 :39 > pwd
ans = /home/q
octave3 .2 :40 > l s
apro .m document . tex man .m octave
czasy .m Dokumenty mojaFunkcja .m obrazki .m
diary Lab12 . pdf Obrazy P u l p i t
diary . t x t
octave3 .2 :41 > cd Dokumenty
octave3 .2 :42 > pwd
ans = /home/q/Dokumenty
octave3 .2 :43 > cd . .
octave3 .2 :44 > pwd
ans = /home/q
2.4 Macierze
Wiekszosc zmiennych w Octave’ie to macierze. Nawet liczby sa traktowane jak macierze 1× 1.
2.4.1 Tworzenie
Wprowadzanie macierzy zaczyna sie i konczy nawiasem kwadratowym. Nalezy podawac wyrazy wierszami – ko-
lejne wyrazy oddzielane spacja lub przecinkiem (dowolnie), a wiersze oddzielane srednikiem, np.:
octave3 .2 :25 > 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
6
Kazdy wiersz musi miec tyle samo elementów, w przeciwnym razie pojawi sie komunikat o błedzie.
Istnieja tez macierze, które tworzymy funkcja: zeros(n) tworzy macierz zerowa n× n,
a zeros(m,n) macierz zerowa m× n. Podobnie wywoływana jest funkcja ones – tworzy ona macierz z samymi jedyn-
kami (nie jednostkowa!). Macierz jednostkowa to eye, z tym zastrzezeniem, ze jesli wywołana bedzie przez eye(m,n),
gdzie m 6= n, to wiekszy wymiar uzupełniony bedzie zerami:
octave3 .2 :24 > eye ( 2 , 3 )
ans =
Diagonal Matrix
1 0 0
0 1 0
Innymi wbudowanymi macierzami sa: pascal – macierz Pascala, hilb – macierz Hilberta, invhilb – odwrotnosc ma-
cierzy Hilberta, itp. Opisy tych macierzy i dalsze przykłady w pomocy programu.
Elementem macierzy moze byc inna macierz – jesli tylko odpowiednio dobrane beda wymiary macierzy, to umozli-
wia to tworzenie macierzy blokowych. W przypadku dwóch macierzy:
octave3 .2 :54 > a=pascal ( 3 )
a =
1 1 1
1 2 3
1 3 6
octave3 .2 :55 > b=invhilb ( 3 )
b =
9 −36 30
−36 192 −180
30 −180 180
octave3 .2 :56 > [ a , b ]
ans =
1 1 1 9 −36 30
1 2 3 −36 192 −180
1 3 6 30 −180 180
octave3 .2 :57 > [ a ; b ]
ans =
1 1 1
1 2 3
1 3 6
9 −36 30
−36 192 −180
30 −180 180
W przypadku wiekszej liczby macierzy, tez jest to mozliwe:
7
octave3 .2 :59 > a =[1 1 ] ; b =2; c =[3 3 ; 3 3 ] ; d = [ 4 ; 4 ] ;
octave3 .2 :60 > [ a b ; c d ]
ans =
1 1 2
3 3 4
3 3 4
2.4.2 Wektory
Waznym i specyficznym dla jezyka Matlab/Octave elementem jest tzw. „notacja dwukropkowa”. Jej pierwsze zasto-
sowanie to tworzenie wektora kolejnych liczb całkowitych:
octave3 .2 :45 > 1 : 5
ans =
1 2 3 4 5
Dwukropek oznacza tu „wszystkie kolejne” od jednego konca do drugiego. To jednak nie wszystko: zamiast kolej-
nych liczb, mozna wziac np. co trzecia:
octave3 .2 :47 > 1 : 3 : 1 0
ans =
1 4 7 10
Działa to nie tylko dla liczb całkowitych:
octave3 .2 :52 > 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 sa „po ludzku”, a nie „po maszynowemu”, tzn od 1. Aby otrzymac ele-
ment macierzy A z wiersza numer i i kolumny j, nalezy wpisac a( i , j ), koniecznie w nawiasie okragłym.
octave3 .2 :41 > a =[1 2 3 ; 4 5 6 ; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
octave3 .2 :42 > a ( 1 , 1 )
ans = 1
octave3 .2 :43 > a ( 3 , 3 )
ans = 9
8
octave3 .2 :44 > a ( 2 , 3 )
ans = 6
Odwoływac sie mozna nie tylko do pojedynczych elementów, ale tez wybierac podmacierze. Sposób pierwszy, naj-
prostszy:
octave3 .2 :62 > a =[1 2 3 ; 4 5 6 ; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
octave3 .2 :63 > a ( [ 1 , 3 ] , 2 )
ans =
2
8
Do funkcji zostały podane dwa argumenty, ale pierwszy jest wektorem – wektorem zawierajacym numery wierszy,
które chcemy wyłuskac. Znajac tworzenie wektorów za pomoca notacji dwukropkowej, mozemy łatwo uzyskiwac
podmacierze bedace blokami:
octave3 .2 :64 > a ( 1 : 3 , 1 : 2 )
ans =
1 2
4 5
7 8
Notacja ta ma jednak jeszcze jedno zastosowanie: uzycie dwukropka zamiast numerów współrzednych, wybierze
wszystkie współrzedne:
octave3 .2 :65 > a ( : , 1 : 2 )
ans =
1 2
4 5
7 8
Czyli osiagnac taki sam rezultat szybsza, niz poprzednia, metoda.
Zamiast liczyc lub sprawdzac ile wierszy lub kolumn ma macierz, mozna wykorzystac automatycznie powstajaca
zmienna end, oznaczajaca ostatnia współrzedna:
octave3 .2 :66 > a ( end , 2 : end )
ans =
8 9
9
W wywołaniu dla wektorów jest jeden argument:
octave3 .2 :92 > a =5:9
a =
5 6 7 8 9
octave3 .2 :93 > a ( [ 2 , 4 ] )
ans =
6 8
2.4.4 Działania na macierzach
Na macierzach mozna wykonywac, w taki sam sposób, jak na skalarach, dodawanie, odejmowanie i mnozenie ma-
cierzowe. Prawe i lewe dzielenie oznacza tu natomiast mnozenie z prawej i lewej strony przez odwrotnosc, tzn.
A\B = A−1 ·B iB/A = B ·A−1. Specyficznymi działaniami sa transpozycja i sprzezenie, za które odpowiada symbol
pojedynczego cudzysłowu, ewentualnie poprzedzonego kropka. Działanie wyjasnia przykłady.
Jesli zmienna jest liczba zespolona, to operator cudzysłowu jest sprzezeniem liczby.
octave3 .2 :84 > a=2+ i
a = 2 + 1 i
octave3 .2 :85 > a ’
ans = 2 − 1 i
Jesli zmienna jest macierza zespolona, to cudzysłów jest operacja sprzezenia hermitowskiego. Transpozycja jest wzie-
cie operatora „.’ ” – kropka i cudzysłów.
octave3 .2 :86 > b=[ i ; 1− i ]
b =
0 + 1 i
1 − 1 i
octave3 .2 :87 > b ’
ans =
0 − 1 i 1 + 1 i
octave3 .2 :88 > b . ’
ans =
0 + 1 i 1 − 1 i
Jezeli zmienna jest macierza rzeczywista, to cudzysłów jest operacja transpozycji.
octave3 .2 :89 > c = [ 1 ; 2 ]
c =
1
2
octave3 .2 :90 > c ’
ans =
10
1 2
Octave posiada bardzo wiele funkcji operujacych na macierzach. najwazniejsze z nich to: det(a) – wyznacznik macie-
rzy a, eig(a) – multizbiór wartosci własnych, trace (a) – slad macierzy, diag(a) – wyłuskiwanie/ustawianie przekatnej:
octave3 .2 :98 > a=pascal ( 3 )
a =
1 1 1
1 2 3
1 3 6
octave3 .2 :99 > b=diag ( a )
b =
1
2
6
octave3 .2 :100 > c=diag ( b )
c =
Diagonal Matrix
1 0 0
0 2 0
0 0 6
oraz size:
octave3 .2 :100 > [ b , c ]= s ize ( a )
b = 3
c = 3
2.4.5 „Nadmacierze”
Wiadomo juz jak otrzymac podmacierz. Wiadomo jak zrobic macierze blokowe. Ale jest jeszcze jeden droga opero-
wania na rozmiarach macierzy. Mozna powiekszac istniejace macierze. Np. mozna z macierzy 2 × 2 zrobic macierz
3× 4:
octave3 . 2 : 1 > a =[2 1 ; 1 2 ]
a =
2 1
1 2
octave3 . 2 : 2 > a ( 3 , 4 ) = 0
a =
2 1 0 0
1 2 0 0
0 0 0 0
11
Jest to przydatne zwłaszcza dla wektorów:
octave3 . 2 : 3 > b=[2 1 1 2]
b =
2 1 1 2
octave3 . 2 : 4 > b (5 )=3
b =
2 1 1 2 3
octave3 . 2 : 5 > b (7 )=7
b =
2 1 1 2 3 0 7
Mozna tez tak:
octave3 . 2 : 6 > c =[1 2 3 ; 2 3 4]
c =
1 2 3
2 3 4
octave3 . 2 : 7 > c ( 3 , : ) = 2 * c ( 2 , : )
c =
1 2 3
2 3 4
4 6 8
3 Skrypty i funkcje uzytkownika
Octave pozwala na tworzenie własnych funkcji. Mozna w nich wykorzystywac wiele technik programistycznych:
petle, warunki, bloki try-catch, struktury, obsługe błedów itp. Nie beda one jednak potrzebne w zakresie przedmiotu
Algebra Liniowa z Geometria Analityczna II. Omówione tutaj zostana podstawowe warunki utworzenia własnej
funkcji.
Aby stworzyc własna funkcje, nalezy utworzyc plik tekstowy w dowolnie wybranym edytorze tekstu i zapisac go
w folderze, który „widzi” Octave. Domyslnie sa to katalog roboczy i miejsca przechowywania funkcji wbudowa-
nych. Liste tych folderów mozna wyswietlic wywołujac polecenie path. Aby dodac do tej listy kolejny folder, nalezy
uzyc polecenia addpath, np. addpath("D:\Octave") doda do listy folderów folder Octave na dysku D: w systemie
Windows. Polecenie takie nalezy wykonywac po kazdym uruchomieniu Octave’a.
3.1 Funkcje
Przyjmijmy, ze chcemy utworzyc funkcje, która bedzie obliczała wartosc sin(π · x · y) oraz sin(π · y2) dla argumentów
x i y. Tresc pliku z taka funkcja wygladałaby nastepujaco:
function [ a , b]= mojaFunkcja ( x , y )
12
a=sin ( pi * x * y ) ;
b=sin ( pi * y ^ 2 ) ;
gdzie function jest poleceniem wskazujacym Octave’owi, ze dany plik jest funkcja (bo moze nie byc), [a,b] jest lista
zwracanych wartosci, „mojaFunkcja” jest dowolnie wybrana nazwa funkcji (zasady nazewnictwa podobne jak dla
zmiennych, z ta róznica, ze nie mozna uzywac istniejacych nazw funkcji), a „(x,y)” to nazwy argumentów. Kolejne
linie zawieraja obliczenia. Tak przygotowany plik trzeba zapisac pod nazwa „mojaFunkcja.m” – nie inna, nazwa
funkcji i pliku musi sie zgadzac, a rozszerzenie to zawsze „m” (stad uzywana nazwa „m-plik”). Uzycie takiej funkcji
w praktyce wyglada tak samo, jak uzycie funkcji wbudowanej:
octave3 . 2 : 1 > [ u ,w]= mojaFunkcja ( 0 , 0 )
u=0
w=0
Deklaracje funkcji mozna uzupełnic o komentarz. Jesli komentarz bedzie wstawiony od drugiej linii, to bedzie on
słuzył za tresc pomocy do funkcji:
function [ 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 druga l i n i a pomocy .
a=sin ( pi * x * y ) ;
b=sin ( pi * y ^ 2 ) ;
% To j e s t komentarz , k t r e g o u y t k o w n i k n i e z o b a c z y .
Wówczas polecenie help mojaFunkcja pokaze:
‘ mojaFunkcja ’ i s a function from the 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 .
Addit ional help for b u i l t−in f u n c t i o n s and operators i s
a v a i l a b l e in the on−l ine version of the manual .
Use the command doc <topic > to search the manual index .
Help and information about Octave i s a l s o a v a i l a b l e on the WWW
at http ://www. octave . org and via the help@octave . org
mail ing l i s t .
Według powyzszego schematu zbudowane sa funkcje wykonujace operacje wierszowe i kolumnowe, przygotowane
na laboratoria z przedmiotu Algebra Liniowa z Geometria Analityczna II.
function 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
13
%o d e j m u j e w i e r s z rk p o m n o o n y p r z e z s k a l a r c .
a ( r i , : )−= c . * a ( rk , : ) ;
end
function a=podzie lwiersz ( 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 s k a l a r c .
a ( r i , : ) / = c ;
end
function 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 )
%Zamienia 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
function a=redukujkolumne ( a , rk , c i )
% 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 druga 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 wierszu , 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=reduku jko lumne (A, 3 , 2 )
i f ( a ( rk , c i )~=0)
for i = [ 1 : ( rk−1) , ( rk + 1 ) : rows ( a ) ]
a ( i , : ) = a ( i , : ) − ( a ( i , c i )/ a ( rk , c i ) ) . * a ( rk , : ) ;
end
end
3.2 Skrypty
Mozliwe jest tworzenie plików niebedacych funkcjami – skryptów. Skrypty nie przyjmuja argumentów i nie zwracaja
wyników. Sa jakby spisanymi kolejnymi poleceniami, tak, jakby ktos je miał po kolei wpisywac do Octave’a. Maja
pełny dostep do zmiennych, które sa w pamieci Octave’a. Skrypty nie maja odpowiednika polecenia function –
poczatkiem skryptu jest komentarz (tresc pomocy) albo pierwsza instrukcja.
Przydatne moze byc stworzenie w katalogu roboczym Octave’a dwóch skryptów z poleceniami czesto uzywanymi:
„start.m” z poleceniami wykonywanymi na poczatku (właczenie pamietnika, zmiana formatu wyswietlania liczb,
dodanie sciezki do folderu, w którym przechowujemy swoje m-pliki, zmiana katalogu roboczego itp.) i „stop.m”
z poleceniami wykonywanymi na koncu (wyłaczenie pamietnika, wyłaczenie Octave’a). Wówczas po uruchomieniu
Octave’a nalezy wpisac nazwe skryptu startowego (bez rozszerzenia): start, a po zakonczeniu pracy wpisac stop.
Skrypty te moga miec nastepujaca postac:
14
start.m
format r a t ;
cd "D:\ Octave "
diary ( [ 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
diary o f f ;
quit
Trzecia linia podanego skryptu startowego powoduje utworzenie w katalogu roboczym pliku dziennika o nazwie
bedacej aktualna data i czasem, z rozszerzeniem „txt”, np. „2014-01-20 20-12-00.txt”
15
Spis tresci
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 jezyka 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.5 „Nadmacierze” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Skrypty i funkcje uzytkownika 12
3.1 Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Skrypty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
16