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:

  1. 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
    
    
  2. Funkcijo sin tabeliramo enostavno z klicem sin(x)

     octave> y1 = sin(x); % funkcija sin deluje po komponenteh vektorja x
    
    
  3. Pri polinomu y2, moramo uporabiti operacije po komponentah(s piko!!)

     octave> y2 = x.^2+2*x-1; % uporabimo operacije s piko: po komponentah
    
    
  4. 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

  1. argumenti, x
  2. vrednost, ki jo funkcija vrne: octave ne pozna return stavka, ampak vrne vrednost, ki se ob izteku funkcije nahaja v lokalni spremenljivki y
  3. telo funkcije
  4. 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.

Last modified: Wednesday, 18 February 2015, 9:50 AM