Uvod v octave
Uvod v Octave
Predstavitev programa
Programski paket octave je interpreter za programski jezik namenjen numeričnim izračunom. Programski jezik programa octave je zelo podoben programskemu jeziko paketa matlab, ki je de facto standard za numerične izračune. Ker je Matlab žal dostopen le proti plačilu, bomo na vajah uporabljali program octave, ki je dostopen pod licenco GPL.
Prvi koraki
Program octave poženemo v terminalskem oknu z ukazom
student@mars $ octave GNU Octave, version 2.1.64 (i686-pc-linux-gnu). ... octave:1>
V lupini lahko izvajamo osnovne računske opreacije in vrednosti elementarnih funkcij
octave:1> (1+2)/3+2.5*2 ans=6 octave2:> sin(pi/3) ans=0.86603
Octave pozna tudi spremenljivke
octave:1> a=3; octave:2> b=4; octave:3> a+b ans=7
- s podpičjem na koncu vrstice preprečimo, da bi lupina izpisala rezultat!
Pomoč o določenem ukazu dobimo z
octave> help sum octave> help -i sum
Osnovna sintaksa
-
+-/*
osnovne operacije
1+2/3*5-3
.
decimalno ločilo
3.14
^
potenca, koren
2^0.5, 2^3
(,)
oklepaji
(1+2)/3, sin(pi/2)
=
operator prirejanja
a=3
Vektorji in matrike
Osnovni podatkovni tip programskega jezika octave je matrika! Matriko vnesemo z oglatimi oklepaji:
octave:3> A = [ 1 2 3 ; 3 2 1] %Matrika 2 x 3 A= 1 2 3 3 2 1
- Namesto presledka lahko uporabimo tudi vejico.
- Z znakom % napišemo komentar. Vse kar je za % interpreter ignorira
Podmatrike
Naloga: Iz prejšnje matrike izvleci
- element v drugi vrstici in tretjem stolpcu
- prvi stolpec, drugo vrstico
- prva dva stolpca matrike
- prva dva elemnta matrike
Uporabi operator dvopičje :
Operacije in funkcije na vektorjih
Naloga: Preiskusi, kako delujejo operacije in funkcije na vektorjih!
- nekaterim operatorjem je treba dodati piko, da delujejo po komponetah (npr. .* ali ./)
Naloga: Tabeliraj funkciji y1 = sin(x) in y2 = x^2+2x-1 na intervalu [-1,2] in nariši grafa obeh funkcij.
Rešitev:
- Sestavimo vektor točk, v katerih želimo funkcijo tabelirati
octave> x = linspace(-1,2,20); % vektor 20 enakomerno razporejenih točk na intervalu [-1,2] octave> x(1) ans = -1
-
Funkcijo sin tabeliramo enostavno z klicem sin(x)
octave> y1 = sin(x); % funkcija sin deluje po komponenteh vektorja x
-
Pri polinomu y2, moramo uporabiti operacije po komponentah(s piko!!)
octave> y2 = x.^2+2*x-1; % uporabimo operacije s piko: po komponentah
- Funkciji narišemo z ukazom plot
octave> plot(x,y1) octave> hold on octave> plot(x,y2)
Kontrolne strukture
for
Naloga: Izračunaj vsoto prvih 2005 števil in njunih kvadratov, ter rezultat primerjaj s formulami
while
Naloga: Poišči najmanjše naravno število, za katerega je n!>2005
Funkcije: Odvod polinoma
Funcije v Octavu pišemo v datoteke s končnico .m. Ime datoteke naj bo isto kot ime funkcije.
function y=kaca_slon(x) % funkcija y=kaca_slon(x) izracuna vrednost funkcije y=1/(1+x^2), katere % graf ima obliko kace, ki je pojedla slona y=1./(1+x.^2);
Najpomembnejši elementi funkcije
- argumenti, x
- vrednost, ki jo funkcija vrne: octave ne pozna return stavka, ampak vrne vrednost, ki se ob izteku funkcije nahaja v lokalni spremenljivki y
- telo funkcije
- Komentar s pomočjo: komentarji pred začetkom telesa funkcije so namenjeni pomoči (ukaz help kaca_slon).
Naloga:
Napiši funkcijo za izračun odvoda polinoma. Funkcijo uporabi za program, ki na isti graf nariše izbrani polinom in tangento v dani točki.
"Deljenje" z matrikami
Presečišče dveh premic
Naloga: Napiši funkcijo, ki izračuna presečišče dveh premic. Glava funkcije naj bo oblike
function T=pres(p1,p2) % funkcija T=pres(p1,p2) izračuna presečišče premic p1 in p2
Sami določite kako predstaviti premici p1 in p2.
Testiranje programa
Napišite testni program, ki bo preveril pravilnost programčka pres(p1,p2).
Dodatek: Funkcijo pres dopolni tako, da nariše še sliko premic in presečišča.