Portál AbcLinuxu, 12. června 2024 12:24

Octave - 1 (je to kalkulačka)

16. 1. 2006 | Jiří Poláček
Články - Octave - 1 (je to kalkulačka)  

Octave je volně šiřitelný klon Matlabu běžně dostupný jako balíček i pro vaši oblíbenou distribuci. K dispozici je i verze pro Windows. Následující text představuje první seznámení s tímto systémem pro práci s maticemi, který je zároveň programovacím jazykem podobným Pascalu.

Poznámka: Článek původně vyšel v blogu naopak.

Základním komunikačním prostředkem v Octave je příkazová řádka, do které uživatel zapisuje své požadavky. V následujícím textu, zejména v ukázkách, bude příkazový řádek signalizován znaky „>>“ (tzv. prompt příkazového řádku lze nejrůzněji měnit nastavením obsahu proměnné PS1. Uvedený prompt získáme příkazem PS1=">> ", více možností nastavení je popsáno v nápovědě programu). Jistou představu o popisovaném programu zajisté vyvolá následující obrázek:

jak vypada octave

Nápověda v Octave

Vestavěnou nápovědu v Octave lze zobrazit pomocí příkazu help:

>> help

Na základě tohoto požadavku může program vypsat například následující text:

help is available for the topics listed below.

Additional help for built-in functions, operators, and variables
is available in the on-line version of the manual.  Use the command
`help -i topic' to search the manual index.

Help and information about Octave is also available on the WWW
at http://www.octave.org and via the help-octave@bevo.che.wisc.edu
mailing list.

Podrobnější nápovědu k vestavěným funkcím a rezervovaným slovům je možné vypsat příkazem help s odpovídajícím argumentem:

>> help fix

Jak sděluje úvodní text zabudované nápovědy, informace o Octave a další nápovědu je možné také získat na webových stránkách programu, konkrétně na adrese www.octave.org/doc.

Octave jako kalkulačka

Na té nejjednodušší úrovni lze Octave využít jako kalkulačku. Na příkazový řádek stačí zadat výraz, který se má spočítat. Po odeslání Octave vypíše výsledek:

>> 1+2*3
ans = 7
>> 4563*1.22
ans = 5566.9
>> (5-3)^2
ans = 4
>> 5**3
ans = 125

Aby bylo možné výraz vyhodnotit, musí samozřejmě být správně zkonstruován. Při vyhodnocování má podle běžných pravidel aritmetiky nejvyšší prioritu umocňování, pro které se používá znak „^“ (stříška) nebo dva těsně vedle sebe zapsané znaky hvězdička „**“; následuje násobení „*“ a dělení „/“; nejmenší prioritu mají sčítaní „+“ a odčítání „-“. Následuje-li po sobě více operandů se stejnou prioritou, vyhodnocuje se také obvyklým způsobem, tj. zleva doprava. Prioritu operandů lze upravit pomocí kulatých závorek (pouze kulaté závorky; není možné zde používat závorky hranaté [] a složené {}, ty Octave používá pro jiné účely). Pro druhou odmocninu existuje v Octave funkce sqrt, vhodnější však bývá použití umocňování na přepočítaný zlomek, tj. sqrt(9) vrátí tentýž výsledek jako 9^(1/2).

Zápis a zobrazování čísel v Octave

Při práci s reálnými čísly se jako oddělovač celé a desetinné části používá podle amerických zvyklostí tečka, nikoliv čárka. Zapisujeme-li reálné číslo v absolutní hodnotě menší než 1, například 0,589, lze nulu z celé části vynechat:

>> -.25+.5
ans = 0.25000

Pro zápis typicky hodně velkých (respektive hodně malých) čísel se používá tzv. exponenciální tvar, tj. zápis s mocninou čísla deset. Například číslo 1,458 · 1045 se v Octave zapíše (a vypíše) jako 1.458e45, oddělovačem mezi základem čísla a exponentem tedy je písmeno e. Vězme také, že Octave umí pracovat s komplexními čísly:

>> (5+2i) * (1-j)
ans = 7 - 3i

Písmena i a j v zápise mají stejnou hodnotu - znamenají imaginární jednotku a formálně v Octave figurují jako vestavěné konstanty, o kterých bude řeč dále.

Počet desetinných míst, který bude Octave zobrazovat u reálných čísel, se dá nastavit s pomocí příkazu format. Výchozí nastavení, které odpovídá parametru short, zobrazuje výsledek s pěti významnými ciframi, parametr long si vynutí 15 významných cifer a parametr bank zaokrouhluje na dvě desetinná místa:

>> r=sqrt(2);
>> format short
>> r
r = 1.4142
>> format long
>> r
r = 1.41421356237310
>> format bank
>> r
r = 1.41

Existují ještě další parametry, které umožňují výpis čísel v binární či hexadecimální podobě, vynucení si vědeckého zápisu s mantisou a další speciality - viz help format.

Ukládání výsledku do proměnných

Výsledek výpočtu si lze nejenom nechat zobrazit, ale také uložit do proměnné pro jeho pozdější využití. Proměnné v Octave vytváříme za chodu podle jejich potřeby, není nutné předem definovat jejich typ a velikost:

>> p=13
p = 13
>> P=12-6
P = 6

Předchozími dvěma příkazy byly vytvořeny dvě proměnné pojmenované p a P. Vzhledem k tomu, že Octave rozlišuje malá a velká písmena v názvech proměnných, jedná se o dvě různé proměnné. Do proměnné p bylo přímo uloženo číslo 13, do proměnné P pak výsledek výrazu 12-6. Stojí za povšimnutí, že výsledek výpočtu nyní nezačíná „ans =“, ale názvem proměnné, do které jsme výsledek uložili. Ono ans, které je možno chápat jako zkratku z anglického answer – odpověď, v Octave funguje jako název implicitní proměnné, do které se uloží každý poslední výsledek, u kterého nebylo specifikováno, do jaké proměnné by se měl uložit. Necháme-li si nyní vypsat obsah této proměnné, měli bychom dostat číslo 0,25 z příkladu z předchozí sekce:

>> ans
ans = 0.25000

Z příkladu je vidět, že aktuální obsah proměnné lze zjistit po odeslání jejího názvu. S vytvořenými proměnnými samozřejmě lze dále pracovat ve výrazech:

>> P+p
ans = 19
>> ans^2
ans = 361

Seznam doposud uživatelem vytvořených proměnných zjistíme příkazem who:

>> who
*** local user variables:
P  p

Vytvořenou proměnnou samozřejmě lze také zrušit, provádí se to příkazem clear následovaným seznamem proměnných, které se mají zrušit:

>> clear p P

Spuštění příkazu clear bez parametrů má za následek zrušení všech proměnných.

Konstanty

Kromě proměnné ans obsahuje Octave po spuštění ještě celou řadu dalších speciálních proměnných (jejich seznam je uveden v nápovědě programu, mnohé z nich se týkají programového prostředí a mají vliv na správný běh Octave), z nichž některé plní úlohu konstant, například těch matematických, jako jsou Ludolfovo číslo π, Eulerovo číslo e (Matlab tuto konstantu ve svém repertoáru nemá) apod.:

>> pi
pi = 3.1416
>> e
e = 2.7183
>> i
i = 0 + 1i
>> j
j = 0 + 1i
>> realmin
realmin =  2.2251e-308
>> realmax
realmax =  1.7977e+308
>> realmax + realmax
ans = Inf
>> Inf/Inf
ans = NaN

Konstanty i a j představují již zmiňovanou imaginární jednotku při práci s komplexními čísly; realmin ukazuje přesnost, s jakou je Octave schopno počítat; realmax nese hodnotu největšího čísla, s kterým je Octave schopno pracovat; Inf je vyjádřením nekonečna a konečně zkratka NaN znamená Not a Number - není číslo. Z uvedených příkladů je také vidět, kdy je možné poslední dvě jmenované konstanty získat jako výsledek výpočtu.

Je nanejvýš vhodné pro vlastní proměnné nepoužívat názvy těchto konstant, obzvláště v případech, že bychom jejich hodnoty potřebovali k výpočtu. Není totiž problém vytvořit si stejně pojmenovanou uživatelskou proměnnou:

>> pi=3+5
pi = 8

K původnímu obsahu konstanty se lze vrátit zrušením stejně pojmenované proměnné.

Základní matematické funkce

Stejně jako vědecké kalkulačky umí také Octave vracet funkční hodnoty běžných matematických funkcí, jako například:

>> sin(pi/2)
ans = 1

Funkce se volají svým jménem, argument se uvádí za jménem v kulatých závorkách. Pokud je třeba počítat s mocninu dané funkce, v matematice zapsáno jako sin2 x, v Octave je toto třeba zapsat takto:

>> (sin(x))^2

Uveďme přehled základních funkcí, kterými Octave disponuje:

Přehled všech dostupných funkcí lze nalézt v nápovědě programu.

Seriál Octave (dílů: 16)

První díl: Octave - 1 (je to kalkulačka), poslední díl: Octave - 16 (a co dál?).
Následující díl: Octave - 2 (počítání s maticemi)

Související články

Octave - 2 (počítání s maticemi)
Octave - 3 (přístup k jednotlivým položkám matice)
Octave - 4 (je to pravda?)
Octave - 5 (práce s řetězci)
Octave - 6 (práce se soubory)
Octave - 7 (vlastní skripty a funkce)
Octave - 8 (větvení programu)
Octave - 9 (cykly)
Octave - 10 (zbylé řídicí struktury)
Octave - 11 (kreslíme grafy)
Octave - 12 (měřítko os a speciální grafy)
Octave - 13 (dokončení grafiky)
Octave - 14 (finance a statistika)
Octave - 15 (špetka matematiky)
Octave - 16 (a co dál?)
Vektorový elegán Ipe
Recenze: Kniha kódů a šifer
Awk & sed: Příručka pro dávkové zpracování textu
SETI@home
Jak se píše procesor
GnuCash - domácí účetnictví na úrovni
Použití gnuplot pro tvorbu grafů v PHP
Hra s písmenky - wxMaxima

Odkazy a zdroje

Octave
Matlab

Další články z této rubriky

LLVM a Clang – více než dobrá náhrada za GCC
Ze 4 s na 0,9 s – programovací jazyk Vala v praxi
Reverzujeme ovladače pro USB HID zařízení
Linux: systémové volání splice()
Programování v jazyce Vala - základní prvky jazyka

Diskuse k tomuto článku

16.1.2006 00:23 coccyx
Rozbalit Rozbalit vše octave a premenne
Odpovědět | Sbalit | Link | Blokovat | Admin
octave vs. scilab :o) mne na octave vadilo ze nepodporoval vypocty so symbolmi(premennymi), ako je to teraz ... ?
16.1.2006 00:42 Jindřich 'GoldenShit' Plešinger | skóre: 16 | blog: Nevěřící | Dolní Bousov
Rozbalit Rozbalit vše Re: octave a premenne
Netuším zdali ti dostatečně dobře rozumím, ale octave je pouze numerická kalkulačka. Tak jako calc, bc, a jim podobní. Pro symbolické výpočty je vhodnějčí použít program Maxima a jeho grafický udělátor wxMaxima.
LINUKS = Lidová Nacionálně Ultralevicová Komunistická Strana
16.1.2006 01:00 coccyx
Rozbalit Rozbalit vše Re: octave a premenne
hej pochopil si to presne tak ako som to myslel :o) maxima je skvela vec ale ma syntax podobnu Mathematic-e. Ale syntaxou prikazov k matlabu je najblizsie octave no ale ta podpora symbolickych vypoctov niekedy dost chyba. Scilab je tiez klon matlabu, ale prikazy nie su moc matlab kompatibilne ale zase na druhu stranu ma nastroj podobny 'simulinku'. No asi bude najlepsie ked budu nainstalovane oba spolu a budu zit v symbioze ... :o)
16.1.2006 01:04 Jindřich 'GoldenShit' Plešinger | skóre: 16 | blog: Nevěřící | Dolní Bousov
Rozbalit Rozbalit vše Re: octave a premenne
Nebo používat to, co se bude vyvíjet (kdopak to ví?) a na onen nástroj si zvykat.
LINUKS = Lidová Nacionálně Ultralevicová Komunistická Strana
16.1.2006 00:49 Jindřich 'GoldenShit' Plešinger | skóre: 16 | blog: Nevěřící | Dolní Bousov
Rozbalit Rozbalit vše Re: octave a premenne
Octave nemá GUI, scilab ano. Octave GUI (GTK+) asi nikdy mít nebude, nějaké solidní, multiplatformní, stále vyvíjené a podporované, s tlačítky funkcí, možností znovu přepočítat napsaný program, exportem napsaného skriptu, ... . Ještě je tam nějakej rozdíl v licemcích, ale normální člověk to snad neřeší. Je to zdarma a basta.
LINUKS = Lidová Nacionálně Ultralevicová Komunistická Strana
Jiří Poláček avatar 16.1.2006 08:34 Jiří Poláček | skóre: 47 | blog: naopak | Sivice
Rozbalit Rozbalit vše Re: octave a premenne
Octave (alespoň pokud vím) nepodporuje symbolické výpočty. V tomto směru bych odkázal na yacas.
Sudoku omrzelo? Zkuste bobblemaze! | Statistiky jsou jak bikiny. Napoví hodně, všechno ale neukážou.
16.1.2006 16:06 Zdeněk Hurák | skóre: 7
Rozbalit Rozbalit vše Re: octave a premenne
Octave je mozno zkompilovat s knihovnou GiNaC (coby symbolicky toolbox v Octave-Forge), a pak zakladni symbolicke operace jsou mozne.
16.1.2006 11:25 orin
Rozbalit Rozbalit vše MuPAD
Odpovědět | Sbalit | Link | Blokovat | Admin
Ja som si na symbolicke vypocty oblubil MuPAD. Je to tusim shareware - kedysi bol sucastou SuSE, ale dnes je to tvrda komercia, s free trialom... (Aj ten sa da celkom pouzivat.)
16.1.2006 15:06 D.
Rozbalit Rozbalit vše Eulerovo cislo Matlab nezna?
Odpovědět | Sbalit | Link | Blokovat | Admin
Hehe, to me pobavilo, jak by asi pocital logaritmy? Co zkusit exp(1)? ;)

D.
16.1.2006 15:16 D.
Rozbalit Rozbalit vše Re: Eulerovo cislo Matlab nezna?
Aj, zapomnel jsem jadro prispevku. Skleroza pokracuje.

Takze: Octave se snazi priblizit Matlabu jak to jde. Kdo zna Matlab, ma prechod na Octave celkem bez problemu. Spoluprace s GNUplotem je taky dobre provedena a grafy se tvori vpodstate stejne jako v Matlabu (s par malymi rozdily - labely a title je nutne nadefinovat pred "plot"). Dokonce se na webu nachazeji toolboxy (opet analogie k Matlabu), ktere funkcnost Octave znacne rozsiruji. Takze pokud ma nekdo na grantu malo penez a staci mu jednoduche zpracovani experimentu, pak lze Octave jen doporucit.

D.
18.1.2006 09:54 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: Octave - 1 (je to kalkulačka)
Odpovědět | Sbalit | Link | Blokovat | Admin
Je nějaká možnost jak do Octave zadat matici? Hledal jsem na internetu, ale nic se mi nepodařilo najít.
18.1.2006 10:15 me
Rozbalit Rozbalit vše Re: Octave - 1 (je to kalkulačka)
Zkuste se podivat poradne. Octave je o vypoctech s maticemi, snad o tom bude dalsi dil.
>> a=[1 2]; b=[3;4]; c=[5 6; 7 8];
>> a, b, c
Jiří Poláček avatar 19.1.2006 10:40 Jiří Poláček | skóre: 47 | blog: naopak | Sivice
Rozbalit Rozbalit vše Re: Octave - 1 (je to kalkulačka)
Ano, další díl, který už je připraven, je o počítání s maticemi.
Sudoku omrzelo? Zkuste bobblemaze! | Statistiky jsou jak bikiny. Napoví hodně, všechno ale neukážou.
18.1.2006 15:54 5
Rozbalit Rozbalit vše Re: Octave - 1 (je to kalkulačka)
rovnako ako v matlabe
18.1.2006 15:56 5
Rozbalit Rozbalit vše Re: Octave - 1 (je to kalkulačka)
rovnako ako v matlabe
18.1.2006 16:01 5
Rozbalit Rozbalit vše Re: Octave - 1 (je to kalkulačka)
Odpovědět | Sbalit | Link | Blokovat | Admin
mne sa na octave najviac paci skriptovanie, netreba mi spustanie nejakeho grafickeho workspace, len konkretne vypocty, pre mna uplne idealne
18.1.2006 17:54 Jindřich 'GoldenShit' Plešinger | skóre: 16 | blog: Nevěřící | Dolní Bousov
Rozbalit Rozbalit vše Re: Octave - 1 (je to kalkulačka)
Pouze ke skriptování je neexistence GUI u octave výhodou. Ale nemožnost tvožit v nativním IDE, krokovat, odlaďovat skript, ... za výhodu nepovažuju. Třeba maxima funguje jak v promptu, tak i existuje možnost použít několik grafických prostředí.
LINUKS = Lidová Nacionálně Ultralevicová Komunistická Strana
21.1.2006 11:19 GeBu | skóre: 27 | blog: zápisky
Rozbalit Rozbalit vše Re: Octave - 1 (je to kalkulačka)
Odpovědět | Sbalit | Link | Blokovat | Admin
Nainstaloval jsem si Octave do Windows (cygwin). Ale nevím jak rozběhat grafický výstup grafů (plot). Nemáte někdo radu?
26.6.2023 13:11 Adilkhatri
Rozbalit Rozbalit vše Re: Octave - 1 (je to kalkulačka)
Odpovědět | Sbalit | Link | Blokovat | Admin
검증된 파워볼사이트 를 찾으신다면 eos파워볼사이트 가 있는 파워볼사이트추천 에서 파워볼 을 즐기시길 바랍니다. 5년 이상 운영된 메이저업체 이며 지금까지 많은분들께 사랑받은 안전한파워볼사이트 입니다. 안전한파워볼사이트
29.6.2023 09:55 Adilkhatri
Rozbalit Rozbalit vše Re: Octave - 1 (je to kalkulačka)
Odpovědět | Sbalit | Link | Blokovat | Admin
This is also a fair post which I really savored the experience of scrutinizing. It isn't every day that I have the probability to see something like this.. 먹튀검증커뮤니티

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.