eMatematikas Prisijunk Forumas VBE užduotys ONLINE testai

Octave


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, determinantai, tiesinės lygčių sistemos ir taip toliau ir panašiai) ir kai kur kitur... 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. Trumpai lietuviškai:
Trumpai - Octave tai MATLAB klonas. Privalumai:

Lengvai suprantama ir "intuityvi" sintaksė
Galima greitai parašyti veikiančią programą
Nemokama ir laisvai prieinama

Pora minusų:

Ilgas programos vykdymo laikas, lyginant su C++, C, Java ar panašiomis programavimo kalbomis (ar iš viso jas galima lyginti - atskiras klausimas...)
Nėra padoraus IDE (integrated development environment), tad parašytos programos paleidimas vykdomas komandinėje eilutėje

1. Parsisiuntimas ir įdiegimas

Jeigu kompiuteryje Windows operacinė sistema, Octave įdiegimo failą galima parsisiųsti iš:
http://octave.sourceforge.net/
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 per START meniu esančią nuorodą, arba darbalaykyje sukurtą (jei tokia opcija pasirinkta diegimo metu) nuorodą.
Ubuntu 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 - komandomis "exit" arba 'quit".

pakeista prieš 11 m

2. Paprasčiausi aritmetiniai veiksmai ir kintamieji

Windows aplinkoje paleidus Octave turėtų prieš akis atsirasti toks langas:
https://www.ematematikas.lt/upload/uploads/10000/9000/19088/thumb/p16dav8v8gre41aab1v3a19tf1ru41.JPG
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ę:
    > du = 2
    du = 2
    > trys = 3
    trys = 3
Tai va, aš nebuvau labai išradingas ir mano sugalvoti vardai skaičiams 2 ir 3 yra du ir trys. 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.:
    > tik du = 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. tomasatomas nėra tas pats kas tomasAtomas, 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 = du + trys
    duPliusTrys = 5
Visus esamus kintamuosius galime pasižiūrėti komanda whos:
    > whos
Ekrane išspausdinami ne tik kintamųjų vardai, bet ir papildoma informacija: kiekvieno kintamojo dydis (baitais) ir kintamojo tipas "Class" (tai gali būti skaičius, simbolis ar dar kas). Šiuo atveju Double nurodo kad kintamasis yra skaičius, saugomas atmintyje tep vadinamu dvigubu tikslumu.
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:
[tex]c = \frac{a+b}{2a-b}[/tex]
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
Jei koks nors kintamasis pasidaro nebereikalingas (tarkime kintamasis vardu c), jį galima ištrinti įvedus:
    > clear c
Visų atmintyje esančių kintamųjų ištrynimas:
    > clear all
Labai didelius arba labai mažus skaičius Octave ekrane išveda naudodama eksponentinę formą. Pavyzdžiui, skaičių [tex]123456=1.23456 \cdot 10^5[/tex], Octave gali išvesti kaip 1.23456e+5. Taip pat šitokiu formatu skaičius galima ir įvesti.

pakeista prieš 11 m

3. 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 funkcijas 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. Taip pat niekas nedraudžia šito daryti ir su aukščiau paminėtų funkcijų vardais, tačiau dėl savaime suprantamų priežasčių geriau jau šito privengti.
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ų.

pakeista prieš 11 m

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... :)
Nesudėtingiems skaičiavimams atlikti naudoju "derive", o sudėtingesniems "maple".

Kur pratęsimas? :D

Leisk man išsiblaivyt ;] bus

Gal kas nori padėt jam išsiblaivyt? :D

aš ;D

gal esate jau girdėję, tačiau labai nustebčiau, jei NESATE čiupinėje šito online produkto www.wolframalpha.com

sintaksė - standartinė, o ir samplų pilnas googlas.

pakeista prieš 11 m

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »