abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 10:44 | Zajímavý článek

    Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.

    Ladislav Hagara | Komentářů: 0
    dnes 01:00 | Nová verze

    Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    dnes 00:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    včera 16:44 | IT novinky

    Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.

    Ladislav Hagara | Komentářů: 10
    včera 10:44 | Nová verze

    MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.

    Ladislav Hagara | Komentářů: 0
    včera 10:22 | Nová verze

    Canonical vydal Ubuntu Core 24. Představení na YouTube. Nová verze Ubuntu Core vychází z Ubuntu 24.04 LTS a podporována bude 12 let. Ubuntu Core je určeno pro IoT (internet věcí) a vestavěné systémy.

    Ladislav Hagara | Komentářů: 2
    včera 01:00 | Nová verze Ladislav Hagara | Komentářů: 0
    4.6. 19:55 | IT novinky

    Intel na veletrhu Computex 2024 představil (YouTube) mimo jiné procesory Lunar Lake a Xeon 6.

    Ladislav Hagara | Komentářů: 0
    4.6. 13:44 | IT novinky

    Na blogu Raspberry Pi byl představen Raspberry Pi AI Kit určený vlastníkům Raspberry Pi 5, kteří na něm chtějí experimentovat se světem neuronových sítí, umělé inteligence a strojového učení. Jedná se o spolupráci se společností Hailo. Cena AI Kitu je 70 dolarů.

    Ladislav Hagara | Komentářů: 0
    4.6. 13:22 | Nová verze

    Byla vydána nová verze 14.1 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Octave - 2 (počítání s maticemi)

    23. 1. 2006 | Jiří Poláček | Programování | 15713×

    Historie a vyhodnocování příkazů, základní maticové operace, skaláry.

    V hned druhém pokračování povídání o systému Octave vyjde najevo, proč Matlab získal své jméno jako zkratku z MATrix LABoratory - laboratoř pro práci s maticemi. Než se však vrhneme na násobení matic, povíme si pár slov k historii příkazů a jejich vyhodnocování.

    Historie příkazů

    Asi nepřekvapí, ale určitě ani nezarmoutí fakt, že Octave disponuje vestavěnou historií příkazů - pomocí kurzorových šipek nahoru a dolů lze listovat seznamem dříve zadaných příkazů, které lze editovat a opravené nechat spočítat znovu. V linuxových verzích Octave lze také zpětně hledat v historii příkazů přes klávesové zkratky Ctrl-R a Ctrl-S:

    >>
    (reverse-i-search)`sin': (sin(x))^2

    Více příkazů najednou, komentáře

    V Octave je možné zapsat a nechat vyhodnotit více výrazů najednou - píšeme je za sebe na řádek, přičemž v úvahu přichází dva oddělovače, čárka a středník:

    >> A=1+1, B=3*4; C=8/4
    A = 2
    C = 2
    >> B
    B = 12

    V obou případech se výraz vyhodnotí, avšak pouze při ukončení čárkou se též vypíše výsledek. Neuvedení oddělovače za posledním příkazem na řádce je ekvivalentní se zakončení výrazu čárkou, tj. výsledek se vypíše. Skutečnost, že se v příkladě provedl i příkaz ukončený středníkem, dokazuje výraz, kdy jsme si nechali vypsat obsah proměnné B. Středníkem ukončujeme zejména příkazy v programech, které vrací „nezajímavé“ mezivýsledky výpočtu. Chceme-li zapsat výraz či více výrazů na více řádků, můžeme s úspěchem použít znak zpětné lomítko „\“ následovaný znakem nový řádek (tj. stisknutí klávesy Enter) - v zápisu příkazu pokračujeme na dalším řádku:

    >> 1 + \
    > 2 \
    > + 3
    ans = 6

    Speciální význam v Octave má také znak procento „%“. Uvozuje komentář - jinými slovy vše, co bude zapsáno za tímto znakem na stejném řádku, Octave ignoruje. Komentáře slouží zejména k lepší orientaci v programech uživatelem:

    >> c=(a^2 + b^2)^(1/2) % Zde využíváme Pythagorovy věty

    Proměnné jako matice

    Pro výpis uživatelem vytvořených proměnných lze kromě příkazu who použít také příkaz whos, který vrací podrobnější informace:

    >> whos
           prot    type    rows   cols  name
           ====    ====    ====   ====  ====
           rwd     scalar    1     1     P
           rwd     scalar    1     1     p

    Pro nás jsou teď zajímavé sloupce rows a cols udávající počet řádků a sloupců proměnné. Jak již bylo naznačeno v úvodu, Octave podle vzoru Matlabu chápe každou proměnnou jako matici určité velikosti. Proměnné obsahující jedno číslo jsou tak brány jako matice velikosti 1×1 - s těmi se však počítá úplně stejně jako s normálními čísly. Pokud budeme chtít pracovat s maticemi o větším počtu řádků či sloupců, přijdou na řadu hranaté závorky:

    >>M=[0 1 2;1,2,3
    > 4 5,6]
    M =
      0  1  2
      1  2  3
      4  5  6

    Při takovémto zadávání matice na příkazové řádce hranaté závorky vymezují prostor pro zápis jejího obsahu, hodnoty na řádku se oddělují mezerou nebo čárkou, řádky pak středníkem nebo novým řádkem (klávesou Enter - do výskytu uzavírající závorky Octave výraz nevyhodnocuje).

    Matici lze skládat také z „větších“ objektů, než jsou skaláry, tj. z vektorů a menších matic. Při zadávání je pouze nutno dbát na to, aby ve výsledku měla matice stejný počet sloupců v každém řádku, tj. aby někde něco nechybělo či nepřebývalo:

    >> N=[1 2;3] error: number of columns must match (1 != 2)

    Nyní složme velkou matici ze tří menších objektů:

    >> A=[1 2; 3 4; 5 6], B=[-1 -3; 9 9], V=[0, 50]
    A =
      1  2
      3  4
      5  6
    B =
      -1  -3
       9   9
    V =
       0  50
    >> VelkaMatice = [A, [B; V]]
    VelkaMatice =
        1    2   -1   -3
        3    4    9    9
        5    6    0   50

    Z podstaty věci je možné (a formálně korektnější) psát i samostatná čísla v maticových závorkách:

    >> [6]*[10]
    ans = 60

    Pro přehlednost a úsporu psaní si je však každý rád odpustí, jak tomu je v ostatních příkladech v tomto textu. Je také možné vytvořit - na první pohled poněkud překvapivě - prázdnou matici, která má nulový počet řádků a sloupců:

    >> N=[]
    N = [](0x0)

    Prázdné matice mají své uplatnění při rušení řádků či sloupců ve větších maticích, viz dále.

    Základní maticové operace

    Podle očekávání Octave umí s maticemi nativně provádět běžné numerické operace, tj. zejména velikostně si odpovídající matice sčítat, respektive odčítat a násobit:

    >> [1 2;-3 -2] + [-1,-3;4,3]
    ans =
       0  -1
       1   1
    >> [4;-2] * [-1,2]
    ans =
      -4   8
       2  -4

    Nechybí ani možnost umocňovat matici reálným číslem; významná je zejména operace umocňování na minus prvou (M-1), kterou získáme matici inverzní k původní matici:

    >> M=[-1 0 2; 4 2 1; -1 -1 -2]; M^-1
    ans =
       3   2   4
      -7  -4  -9
       2   1   2
    >> M * M^-1
    ans =
      1  0  0
      0  1  0
      0  0  1

    K základním maticovým operacím patří také transpozice, tj. přeměna řádků na sloupce a naopak. V Octave ji vyznačujeme apostrofem - „'“:

    >> M'
    ans =
      -1   4  -1
       0   2  -1
       2   1  -2

    Octave také umí matice dělit, a to hned dvěma způsoby: levostranně pomocí operátoru „\“ a pravostranně pomocí „/“. Formálně to u čtvercových regulárních matic odpovídá násobení jedné matice s druhou inverzní, tj. A\B ≈ A-1·B a A/B ≈ A·B-1. Jelikož výpočet probíhá přímo, je možné levostranně dělit matice se stejným počtem řádků a pravostranně matice se stejným počtem sloupců:

    >> [-1 -4 0; 2 -3 1] \ [2 3; -1 -1]
    ans =
      -0.81159  -1.05797
      -0.29710  -0.48551
      -0.26812  -0.34058
    >> [-1 -4; 2 -3 ] / [2 3; -1 -1; 6 -7]
    ans =
      -0.833333   0.333333   0.166667
      -0.111390   0.033501   0.376047

    Dělení matic se využívá například při řešení soustavy lineárních rovnic. Pro názornost dodejme ještě, že levostranné dělení běžných čísel odpovídá zápisu zlomku, kdy nejdřív uvedeme jmenovatele a teprve poté čitatele:

    >> 5 \ 35
    ans = 7

    Pozor na to, že znak zpětné lomítko se také používá pro zápis výrazu/výrazů na vícero řádků, jak již bylo uvedeno dříve.

    Matice a skalár, operace po prvcích

    Podle očekávání se také Octave chová při operacích s maticemi a skaláry - operace se provede se skalárem a s každým prvkem matice, výsledkem je matice stejných rozměrů. Například násobení matice skalárem a součet matice a skaláru:

    >> 2 * [1,2;-2,4]
    ans =
       2   4
      -4   8
    >> [1,2;-2,4] + 4
    ans =
      5  6
      2  8

    Někdy je zapotřebí u násobení matic provést tuto operaci tzv. po prvcích, tj. stejným způsobem, jak se provádí součet matic. Násobit po prvcích je možno pouze matice se stejným počtem řádků a sloupců a výsledek je opět stejně rozměrná matice s odpovídajícími výsledky na daných pozicích. Násobení po prvcích dáme najevo předřazením symbolu tečka před vlastní symbol násobení - hvězdičku:

    >> [1 -1; 2 3] .* [7 5; 1 -1]
    ans =
       7  -5
       2  -3

    Porovnejte s výsledkem standardního násobení matic:

    >> [1 -1; 2 3] * [7 5; 1 -1]
    ans =
       6   6
      17   7

    Analogickým způsobem lze pomocí tečky před vlastním operátorem zařídit též dělení a umocňování po prvcích. Tečku lze zapsat i před sčítání a odečítání, z praktického hlediska to ale nemá význam - tyto operace se provádí pouze v režimu „po prvcích“:

    >> [4 9; 12 -27] ./ [2 3; 6 9]
    ans =
       2   3
       2  -3
    >> [1 -1; 2 3].^3
    ans =
        1   -1
        8   27

    Pro srovnání:

    >> [1 -1; 2 3]^3
    ans =
       -9  -11
       22   13

    Funkce pro práci s maticemi

    Nakonec uveďme pár základních funkcí, které se nám při práci s maticemi mohou hodit:

    • inv - počítá inverzní matici, totéž, co umocnění na -1
    • det - determinant matice
    • rank - hodnost matice
    • rot90 - otáčí matici o 90 stupňů, je-li druhý parametr -1, tak ve směru hodinových ručiček, hodnota 1 znamená proti směru hodinových ručiček:
    >> rot90([1 2; 3 4],-1)
    ans =
      3  1
      4  2
    >> rot90([1 2; 3 4],1)
    ans =
      2  4
      1  3

    Nejčtenější články posledního měsíce

    Týden na ITBiz: Polovina českých firem si není jistá blízkou budoucnosti svého oboru, většina ale počítá s velkým vlivem AI
    Událo se v týdnu 20/2024
    Týden na ScienceMag.cz: Působivá simulace pádu do černé díry

    Nejkomentovanější články posledního měsíce

    Týden na ITBiz: Platby výkupného za ransomware vzrostly za poslední rok na pětinásobek
    Týden na ScienceMag.cz: Neutronové molekuly – neutrony se mohou vázat na kvantové tečky
    Týden na ScienceMag.cz: Postoupili ve snaze najít kvantovou povahu gravitace
      všechny statistiky »

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

    Octave - 1 (je to kalkulačka) (první díl)
    <—« Octave - 1 (je to kalkulačka)
    »—> Octave - 3 (přístup k jednotlivým položkám matice)
    Octave - 16 (a co dál?) (poslední díl)

    Související články

    Octave - 1 (je to kalkulačka)
    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

    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
           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

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

    Komentáře

    Diskuse byla administrátory uzamčena

    23.1.2006 12:55 Cubic | skóre: 24 | blog: obcasne_vyplody | Essex
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    musim pochvalit clanek, sice pro me prisel pozde protoze jsem potreboval matlab minulej rok a kdybych vedel o tomhle tak bych kvuli zapoctu neklesal do moralniho bahna a neistaloval ileg. kopii matlabu, ale stejne je prinosny treba pro budouci generace :)
    23.1.2006 14:06 xvasek | skóre: 21 | blog: | Zlín
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    Matlab ve školní licenci umožňuje (snad) používání verze stejné jako ve škole studentům - takžes možná do bahna ilegality nespadnul. :) Teda aspoň já jsem takto licenci řešil, ale teďka už si nevzpomínám jestli u Matlabu nebo Maple a jestli je to generální pardon nebo jestli o to musí škola nějak usilovat nebo něco dokupovat.
    23.1.2006 17:17 Cubic | skóre: 24 | blog: obcasne_vyplody | Essex
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    to by musel byt skolni(katedrovy) licencni server dostupny na kolejich :(
    23.1.2006 16:27 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    Poklud vím, tak kámoš používá stejnou verzi matlabu jako mají ve škole legálně. (Na školní licenci)
    24.1.2006 09:42 anicka | blog: ze_zivota
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    Zas o tolik jsi nepřišel. Kdykoliv si chci ušetřit práci a spočítat domácí úkol v octave, mám pak chuť si radši dát pár facek, protože vždycky najdu další bug. A protože má práce spočívá mimo jiné i v tom, aby nám octave v distribuci fungovalo, spoustu práce si tím přidělám. Nikdy jsem nemyslela, že se začnu učit Fortran 77, ale bohužel není vyhnutí.

    Pokud jde o práci s maticemi, daleko příjemnější a spolehlivější je PDL, to nefunguje pořádně jenom na PPC.
    ^D
    28.1.2006 20:38 Zdeněk Hurák | skóre: 7
    Rozbalit Rozbalit vše Re: Octave - 2 (počítání s maticemi)
    Myslím, že zase tak hrozná Octave není.

    A že existuje jiný balík, který Ti sedí více, to je přece super. Jen ale k těm novým a jeětě novějším, lepším a ještě lepčejším balíkům musím dodat, že co dnes rozhoduje o tom, zda se balík tohoto typu uchytí mezi běžnými uživateli, je množství externích aplikačních knihoven (toolboxů), a těch má Octave v Octave-forge docela dost (zpracování signálů, obrazu, návrh regulátorů, statistika, ...). Z F&OS projektů snad stojí za zmínku ještě Scilab (i kdyz tam je ta licence podivna) a na statistiku orientované R, a tím to z tohoto pohledu končí, mám dojem.
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.