Tema: Octave, atsakymų pasitikrinimas baziame Tiesinės Algebros kurse

Tai va, čia pamėginsiu sumest kažką tokio, ką norėčiau pavadinti įvadu į Octave, su pritaikymu atsakymų pasitikrinimui paprastuose Tiesinės algebros uždaviniuose (veiksmai su matricomis). Tikiuosiu gausis kas nors padoraus ;] Pasiūlymai ir pastabos laukiami ;P
Pirma kas tai yra Octave? Nebarškinsiu per daug savo klaviatūros, trumpas aprašas anglų kalba yra čia:
http://www.gnu.org/software/octave/
Trumpai tariant, Octave - tai programavimo kalba, kurios sintaksė labai panaši (ar netgi identiška) Matlab. Pliusai jos mano galva tokie:
* Lengvai suprantama ir "intuityvi" sintaksė
* Galima greitai parašyti veikiančią programą
* Nemokama
Didžiausias minusas tikriausiai yra:
* Ilgas programos vykdymo laikas, lyginant su C++, C, Java ar panašiomis programavimo kalbomis (ar iš viso jas galima lyginti - atskiras klausimas...)

1) Parsisiuntimas ir įdiegimas
Jeigu kompiuteryje Windows operacinė sistema, Octave įdiegimo failą galima parsisiųsti iš:
http://octave.sourceforge.net/

Spustelėjus raudonai apibrauktą nuorodą. Paleidus parsiųstą failą bus pasiūlyta įdiegti Octave. Jei jau yra tekę įdieginėti programas, manau, užtenka pasakyti kad visur spaudinėkit NEXT NEXT NEXT...
Baigus diegimą, programą galima paleisti arba iš START meniu:

arba dukart kairiuoju pelės klavišu spustelėjus nuorodą darbalaukyje:

Linux aplinkoje įdiegti Octave galima komandinėje eilutėje įvedus "sudo apt-get install octave" (be kabučių). Paleidimas - komandinėje eilutėje įvedus "octave". Darbo pabaiga - "exit" arba 'quit".

Paskutinį kartą keitė house_martin (2011-11-03 10:43:23)

Thumbs up

 

 

2

Ats: Octave, atsakymų pasitikrinimas baziame Tiesinės Algebros kurse

Paprasčiausi aritmetiniai veiksmai ir kintamieji

Windows aplinkoje paleidus Octave turėtų prieš akis atsirasti toks langas:

Nieko įspūdingo, bet gal ne tai svarbiausia ;]
Tad po pavadinimu paprasčiausi aritmetiniai veiksmai tupi sudėtis(+), atimtis(-), daugyba(*) ir dalyba(/). Norint sužinoti dviejų skaičių (tarkim 2 ir 3) sudėties rezultatą, komandinėje eilutėje įvedame „2+3“ (be kabučių) ir spaudžiame ENTER:
    > 2+3
Sekančioje eilutėje išspausdinamas atsakymas:
    ans = 5
Nuo šiol visas komandas rašomas komandinėje Octave eilutėje, ir pačios Octave išspausdinamus pranešimos joje, rašysiu paryškintu šriftu. Vartotojo įvedamos komandos prasidės simboliu > , kurio rašyti nereikia (kaip matyti paveikslėlyje aukščiau, šis simbolis esti visuomet). Ranka įvedama tai kas eina dešiniau šio simbolio. Įvedus komandą spaudžiamas ENTER klavišas.
Dviejų skaičių sandauga:
    > 2*3
    ans = 6
Kaip matyti, įvedus kokią nors aritmetinę operaciją, jos rezultatui priskiriamas vardas ans. Jeigu įvestume šį vardą komandinėje eilutėje:
    > ans
    ans = 6
Būtų atspaudinama ans priskirta reikšmė (šiuo atveju sandaugos 2*3 rezultatas).
Dalyba:
    > ans/2
    ans = 3
Jei norime įvesti savo sugalvotus kintamuosius su savo sugalvotais vardais, teisiog rašome kintamojo vardą, lygybės ženklą ir šiam kintamajam priskiriamą skaitinę vertę:
    > pirmasSkaicius = 2
    pirmasSkaicius = 2
    > antrasSkaicius = 3
    antrasSkaicius = 3
Tai va, aš nebuvau labai išradingas ir mano sugalvoti vardai skaičiams 2 ir 3 yra pirmasSkaicius ir antrasSkaicius. Didelių apribojimų tam, kokie turėtų būti vardai, kaip ir nėra. Pirmiausia kintamojo vardas negali būti sudarytas iš dviejų žodžių tarp kurių yra tarpas. Pvz.:
    > pirmas skaicius = 2
nesuveiks ir sulauksime pranešimo prasidedančio žodžiu "error".
Vardas negali prasidėti skaičiu (skaičius galima naudoti kintamojo varde, bet tik ne kaip pirmąjį simbolį), ar kokiu nors kitokiu simboliu kuris nėra raidė  (% $ @ ir pan.). Aritmetinės aperacijos simbolių (+ - / *) išviso negalima naudoti kintamojo varde. Didžiosios ir mažosios raidės yra atskiriamos, t.y. pirmasskaicius nėra tas pats kas pirmasSkaicius, ir Octave šiuos du supras kaip skirtingus kintamuosius.
Kai jau priskyrėme kintamiesiems norimus skaičius, aritmetines operacijas tarp šių skaičių galime nurodyti naudodamiesi kintamųjų vardais. Pvz. dviejų skaičių sudėtis, kurios rezultatą pavadinkim duPliusTrys, bus užrašoma taip:
    > duPliusTrys = pirmasSkaicius + antrasSkaicius
    duPliusTrys = 5
Visus esamus kintamuosius galime pasižiūrėti komanda whos:
    > whos
Ekrane (paveikslėlis žemiau) išspausdinami ne tik kintamųjų vardai, bet ir papildoma informacija: kiekvieno kintamojo dydis (baitais) ir kintamojo tipas "Class" (skaičius, simbolis ar dar kas). Šiuo atveju Double reiškia double-precision.

Atlikę dalybos veiksmą:
    > 2/3
    ans = 0.66667
Ekrane matome tik penkis skaičius po kablelio. Norint pamatyti daugiau skaičių po kablelio, įvedama komanda format long:
    > format long
    > ans
    ans = 0.666666666666667
Kai jau komanda format long įvesta, visi skaičiai kurie bebus spausdimani ekrane, bus spausdinami tokiu formatu. Įvedus format short grįžtama prie ankstesnio skaičių išvedimo būdo. Taip ir padarykim:
    > format short
Tarkime norime suskaičiuoti c, kuris yra lygus štai kam:
c = \frac{a+b}{2a-b}
su a = 5 ir b = 2. Pirmiausia įvedame a ir b reikšmes. Tam kad ekrane kiekvienu kartu įvedus kokią nors komandą nebūtų spausdinamas patvirtinimas apie tai, komandos pabaigoje rašomas kabliataškis ";"
    > a = 5;
    > b = 2;
    > c = (a + b)/(2*a - b)
    c = 0.87500
Skliausteliuose esnatys veiksmai visada atliekami pirmiau, t.y. a + b yra dalinamas iš kažko. Jei užrašytumėme a + b/(2*a - b), tik b būtų padalintas iš (2a-b).
Norint pakeisti kintamojo c reikšmę nauja, kuri susijusi ar nesusijusi su buvusia c reikšme, tiesiog rašome:
    > c = 2*c
    c = 1.7500

Paskutinį kartą keitė house_martin (2011-11-19 22:12:54)

Thumbs up

3

Ats: Octave, atsakymų pasitikrinimas baziame Tiesinės Algebros kurse

Pratęsiu rytoj ;D

Thumbs up

4

Ats: Octave, atsakymų pasitikrinimas baziame Tiesinės Algebros kurse

Na su šia programa dar nebuvau susidūręs tai visai įdomu pasidarė. Lauksiu tęsinio, kuriame tikiuosi pamatyt programos galimybes. Tuomet gal ir pats atsisiųsiu, ir išmėginsiu.

Šiaip "matlab" man nelabai patinka. Man kažkaip nelimpa... smile
Nesudėtingiems skaičiavimams atlikti naudoju "derive", o sudėtingesniems "maple".

5

Ats: Octave, atsakymų pasitikrinimas baziame Tiesinės Algebros kurse

Kur pratęsimas? big_smile

Thumbs up

6

Ats: Octave, atsakymų pasitikrinimas baziame Tiesinės Algebros kurse

Leisk man išsiblaivyt ;] bus

Thumbs up

7

Ats: Octave, atsakymų pasitikrinimas baziame Tiesinės Algebros kurse

Gal kas nori padėt jam išsiblaivyt? big_smile

Thumbs up

8

Ats: Octave, atsakymų pasitikrinimas baziame Tiesinės Algebros kurse

aš ;D

Thumbs up

9

Ats: Octave, atsakymų pasitikrinimas baziame Tiesinės Algebros kurse

Kai kurios matematinės funkcijos

Kaip jau pavyko skaičius sudėt atimt ir padalint, galima judėk į priekį prie biške sudėtingesnių veiksmų. Octave yra nemažai taip vadinamų "build-in" funkcijų, kurias užtenka iškviesti, nurodant kokį nors skaičių su kuriuo būtų operuojama, ir jos grąžina rezultatą. Kelios tokios funkcijos:
sin    sinusas
cos    kosinusas
tan    tangentas
exp    eksponentė
log    logaritmas pagrindu skaičiaus e
log10    logaritmas pagrindu skaičiaus 10
abs    absoliutinė vertė (modulis)
round    apvalinimas iki artimiausio sveikojo skaičiaus
floor    apvalinimas iki mažesnio sveikojo skaičiaus
ceil    apvalinimas iki didesnio sveikojo skaičiaus
sqrt    šaknis
Keletas pavyzdžių:
    > sin(pi/2)
    ans = 1
Pradžioje rašomas funkcijos pavadinimas ir skliausteliuose - funkcijos argumentas. Trigomentrines Octave skaičiuoja tardama kad argumentas nurodomas radianais, tad jei norėtumėm sužinoti 90 laipsnių kampo sinusą ir įvestumėme:
    > sin(90)
    ans  = 0.89400
išvedamas atsakymas būtų ne 90 laipsnių kampo sinusas, bet 90 radianų kampo sinusas. Reikėtų rašyti taip:
    > sin(90*pi/180)
    ans = 1
Kaip matyti, vardas pi pagal nutylėjimą yra rezervuotas skaičiui π:
    > pi
    ans = 3.1416
Tačiau jei tik yra noras galima šiam vardui priskirti ir kitokį skaičių:
    > pi = 0
    pi = 0
Ir dabar pi bus lygus nuliui tol kol nepakeisime jo reikšmės arba neperkrausime Octave.
Atvirkštinės trigonomtrinės funkcijos iškviečiamos tiesiog prirašius raidelę a priekyje:
    > asin(1)
    ans = 1.5708
Daugiau informacijos apie kurią nors funkciją, tarkim sin, galima gauti įvedus:
    > help sin
Ekrane atspausdinamas ne tik trumpas aprašas apie tai ką funkcija daro, kokio tipo argumentus priima, bet ir sąrašas panašių funkcijų.

Thumbs up

10

Ats: Octave, atsakymų pasitikrinimas baziame Tiesinės Algebros kurse

Vektoriai

Tarkime norime atlikti elementariausius veiksmus (sudėtis, skaliarinė ir vektorinė sandauga) su tokiais dviem vektoriais:
\vec{a1} = (1,2,3)
\vec{a2} = (4,-7,0)
Rašome:
    > a1 = [1,2,3]
    a1 = 1   2   3
    > a1 = [2,-7,0]
    a2 = 1   2   3

Sudėtis:
    > a1 + a2
    ans = 3 -5 3

Skaliarinė sandauga:
    > dot(a1, a2)
    ans = -12

Vektorinė sandauga:
    > cross(a1, a2)
    ans = 21 6 -11

Thumbs up