Portál AbcLinuxu, 1. května 2025 03:24

Octave (1) – je to kalkulačka

2.1.2006 15:09 | Přečteno: 2406× | Octave | poslední úprava: 2.1.2006 21:33

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 Widnows. 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.

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 „>>“1. Jistou představu o popisovém programu zajisté vyvolá následující obrázek:

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ávorek2. 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ší jak 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ých3, z nichž některé plní úlohu konstant, například těch matematických, jako jsou Ludolfovo číslo π, Eulerovo číslo e4 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.

Poznámky pod čarou

1) 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.
2) Pouze kulaté závorky. Není možné zde používat závorky hranaté [ ] a složené {}, ty Octave používá pro jiné účely.
3) 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.
4) Matlab tuto konstantu ve svém repertoáru nemá.
       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

2.1.2006 15:41 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Odpovědět | Sbalit | Link | Blokovat | Admin
Moc pěkné, ale tohle je už spíše na článek, než blogpost. A pokud to bude seriál, tak tím lépe.
When your hammer is C++, everything begins to look like a thumb.
2.1.2006 15:43 Veritas | skóre: 13 | blog: veritas
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Odpovědět | Sbalit | Link | Blokovat | Admin
To by klidně mohlo po lehkém přepracování vyjít jako článek...
Nehledej hry v Linuxu. Linux je hra!
Josef Kufner avatar 2.1.2006 17:25 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Souhlasím. Takový seriál článků by se mi tu celkem i hodil :)
Hello world ! Segmentation fault (core dumped)
2.1.2006 15:44 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Odpovědět | Sbalit | Link | Blokovat | Admin
Výborné, ač sám nepoužívám Octave, ale scilab.
2.1.2006 16:29 jam001 | skóre: 19
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Odpovědět | Sbalit | Link | Blokovat | Admin
Octave som kedysi skusal, rozmyslali sme to nasadit na cluster namiesto matlabu (hlavne koli licenciam). Nazor som zmenil potom ako som porovnaval rychlost s matlabam. Ten isty kod trval v octave niekolkonasobne dlhsie : (. Inak je to urcite zaujimavy program.
2.1.2006 16:31 jam001 | skóre: 19
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Odpovědět | Sbalit | Link | Blokovat | Admin
4) Matlab tuto konstantu ve svém repertoáru nemá

staci napisat:
exp(1)
wamba avatar 2.1.2006 18:19 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Odpovědět | Sbalit | Link | Blokovat | Admin
Dobrý d.

Nefunguje mi odkaz.

Nemá spíše být http://www.octave.org/doc/index.html.
This would have been so hard to fix when you don't know that there is in fact an easy fix.
Jiří Poláček avatar 2.1.2006 21:36 Jiří Poláček | skóre: 47 | blog: naopak | Sivice
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Opravdu, původní odkaz již nefunguje. Ale byly časy, kdy fungoval. Děkuji za upozornění, opraveno.
Sudoku omrzelo? Zkuste bobblemaze! | Statistiky jsou jak bikiny. Napoví hodně, všechno ale neukážou.
2.1.2006 20:21 Martin Baleja | skóre: 13 | blog: Segmentation_Fault
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Odpovědět | Sbalit | Link | Blokovat | Admin
Ještě bych dodal, že kompilace Octave trvá skoro hodinu a půl (Duron 700MHz) :-)
Why are hemorrhoids called "hemorrhoids" instead of "assteroids"?
3.1.2006 09:28 anicka | blog: ze_zivota
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Ještě bych upřesnila, že je třeba si velmi pečlivě vybrat verzi gcc (určitě ne 4.x), pokud u toho nechcete strávit mládí opravováním chyb. Já jsem si s tím hrála asi 14 dní...
^D
3.1.2006 21:00 janosh | skóre: 8 | blog: janosh_blog | Třebíč
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
s kompilací jsem neměl problémy :-) kompiloval sem to ale nějakým gcc asi 3.3.něco. A co se týče rychlosti trvalo to tak půl hoďky na pentiu M 1.4 GHz. Ten fortran byl přeloženej hned ale to c++ to byla doba. Spíš mě zarazilo kolik octave zabírá po přeložení. Tuším že snad 300 MB.
Linux is like teepee, no windows, no gates, apache inside!
10.1.2006 20:56 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
No vidíš, Matlab zabírá na Linux něco kolem 1,2GB.
10.11.2009 18:13 Hela
Rozbalit Rozbalit vše Re: Octave (1) – je to kalkulačka
Odpovědět | Sbalit | Link | Blokovat | Admin
Chtěla bych se zeptat. Mam Vistu a Octave(3.0.0) se mi zobrazuje bez horní lišty s nabídkou jako úpravy, relace apod. Mám docela problém s tím, jak uložit program.:) Poradíte mi?

Založit nové vláknoNahoru

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