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
house_martin PRO +2322
2. 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ę: > 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
house_martin PRO +2322
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
Vitalijus MOD +1930
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".
Taksas027 +1078
Kur pratęsimas? :D
house_martin PRO +2322
Leisk man išsiblaivyt ;] bus
Taksas027 +1078
Gal kas nori padėt jam išsiblaivyt? :D
Mirtise +3503
aš ;D
klaudidze +102
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.