Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 1
2 * 2 * 21 1 2
Pro matice - násobení inverzní maticí inv – inverzní matice A-1 k dané matici A je taková matice, která po vynásobení s původní maticí dá jednotkovou matici. Inverzní matici lze vytvořit pouze ke čtvercové matici (která je tzv. regulární), např: A=[1,2;3,4] inv(A) A * inv(A) A = ans = ans = 1 2 -2.00 1.00 1 0 3 4 1.50 -0.50 0 1
Operátory pro maticové operace (operace s celými maticemi) * násobení maticové F = inv(F) 3 2 1 0.12500 -0.21154 -0.16346 4 -5 6 0.25000 0.11538 0.13462 -9 8 -7 0.12500 0.40385 0.22115 F * inv(F) 1.0000e+00 1.1102e-16 -2.4980e-16 tj. jednotková matice: 1 0 0
2.7756e-17 1.0000e+00 2.7756e-17
8.3267e-17 -1.3878e-16 1.0000e+00
0 1 0
0 0 1
Násobením matice a k ní inverzní matice vznikne matice jednotková.
Operátory pro maticové operace (operace s celými maticemi) * násobení maticové F = F.' 3 2 1 3 4 -9 4 -5 6 2 -5 8 -9 8 -7 1 6 -7 F * F.' 14 8 8 77 -18 -118
-18 -118 194
F.'* F 106 -86 90
-86 93 -84
90 -84 86
Násobením matice a k ní transponované matice vznikne matice symetrická podle hlavní diagonály. F * F.' ≠
F.'* F
Maticové násobení není komutativní !!!
Operátory pro maticové operace (operace s celými maticemi) / maticové dělení (zprava) a \ maticové dělení zleva 2 / ans 3 \ ans
3 - dvě děleno třemi zprava = 0.66667 2 - dvě děleno třemi zleva = 0.66667
2 1 2 * 2 * 31 31 * 2 3 3 U matic A-1 (tj. vlastně „něco jako 1 “) značí právě inverzní A matici. inv(A) – inverzní matice
Operátory pro maticové operace (operace s celými maticemi) / maticové dělení (zprava) a \ maticové dělení zleva 2 / ans 3 \ ans
3 - dvě děleno třemi zprava = 0.66667 2 - dvě děleno třemi zleva = 0.66667
2 1 2 * 2 * 31 31 * 2 3 3
Pro čísla jde o stejnou operaci násobení, půjde-li však o dělení matic, jde o dvě různé operace (viz výše násobení matic)
U matic A-1 (tj. vlastně „něco jako 1 “) značí právě inverzní A matici. inv(A) – inverzní matice
Operátory pro maticové operace (operace s celými maticemi) / maticové dělení (zprava) a \ maticové dělení zleva
A děleno B zprava: A / B A děleno B zleva: B \ A
„odpovídá“ A * inv(B); „odpovídá“ inv(B) * A;
B děleno A zprava: B / A B děleno A zleva: A \ B
„odpovídá“ B * inv(A); „odpovídá“ inv(A) * B;
Rovnost A / B = A * inv(B) nelze použít, není zcela matematicky korektní, je uvedena jen pro představu
Operátory pro maticové operace (operace s celými maticemi) / maticové dělení (zprava) a \ maticové dělení zleva Příklad - jsou dány matice U, T: T = U = 1 2 5 5 3 4 7 8 T / U ans = 3.0000 2.0000
T \ U ans = -3 4
-2.0000 -1.0000
-4 5
T * inv(U) ans = 3.0000 2.0000 inv(T) * U ans = -3.0000 4.0000
-2.0000 -1.0000
-4.0000 5.0000
Operátory pro maticové operace (operace s celými maticemi) / maticové dělení (zprava) a \ maticové dělení zleva Pokračování příkladu: T = U = 1 2 5 5 3 4 7 8 U / T ans = -1.0000 -2.0000 U \ T ans = 5.0000 -4.0000
2.0000 3.0000
4.0000 -3.0000
U * inv(T) ans = -1.0000 -2.0000
2.0000 3.0000
inv(U) * T ans = 5.0000 -4.0000
4.0000 -3.0000
Operátory pro maticové operace (operace s celými maticemi) ^ mocnina maticová A = 10 2 8 A^2 ans = 670 82 106
5 7 9
715 113 112
70 6 1
800 188 615
Stejný výsledek dostaneme i pomocí maticového násobení A * A ans = 670 715 800 82 113 188 106 112 615
Operátory pro maticové operace (operace s celými maticemi) ^ mocnina maticová Maticově mocnit lze jen čtvercovou matici – nelze obdélníkovou – probíhá stejná operace jako při maticovém násobení, první matice musí mít stejný počet sloupců jako má druhá matice řádků, tj. matice pro umocnění musí být čtvercová (musí mít stejný počet řádků a sloupců) M = A * A (n,n) = (n,n) * (n,n)
A – čtvercová matice n –počet řádků a sloupců matice A, výsledná matice je stejných rozměrů
O = B * B (???) = (m,n) * (m,n)
B – obdélníková matice m,n –počet řádků a sloupců matice B, nelze násobit, m ≠ n
Operátory pro maticové operace (operace s celými maticemi) ^ mocnina maticová Příklady: A = [1 2;3 4] A = 1 2 3 4
B = [1 2;3 4;5,6] B = 1 2 3 4 5 6
A^2 ans = 7 15
10 22
B^2 nelze – matice musí být čtvercová!!!
A.^2 ans = 1 9
4 16
B.^2 ans = 1 9 25
4 16 36
Odmocnina sqrt(x) – druhá odmocnina z x, tj. Např. sqrt(4) 4 ans = 2
x
Jak jinak na odmocninu (a nejen na druhou)? Platí: to je tedy: x.^(1/n). 1 2
Příklad:
Příklad:
4 4 2
18
1 18
237 237 1,355
n
xx
4 .^ (1/2) ans = 2 237 .^ (1/18) ans = 1.3550
1 n
Příklad: třetí odmocnina z prvků matice tj.
3 3
3
1 64
3
8
100
27 3 1000 3
V = [1 8 27; 64,100,1000] V = 1 8 27 64 100 1000 V.^(1/3) - operace prvek po prvku ans = 1.0000 2.0000 3.0000 4.0000 4.6416 10.0000
8 27 1 V 64 100 1000
Operátory pro maticové operace (operace s celými maticemi) ' transpozice matice a .' překlopení podle hlavní diagonály Příklad: W = [5,6,7;4,3,2] W = 5 4
6 3
7 2
W.' ans = 5 6 7
4 3 2
W' ans = 5 6 7
4 3 2
Transpozice je překlopení matice kolem hlavní diagonály. V našem příkladu se z matice o 2 řádcích a 3 sloupcích stane matice o 3 řádcích a 2 sloupcích - dojde k vzájemné výměně řádků a sloupců. Stejný výsledek dostaneme pomocí příkazu W.'i pomocí příkazu W', protože matice W je naplněna reálnými čísly.
Operátory pro maticové operace (operace s celými maticemi) ' transpozice matice a .' překlopení podle hlavní diagonály Příklad: W = [5,6,7;4,3,2] W = 5 4
6 3
7 2
W.' ans = 5 6 7
4 3 2
W' ans = 5 6 7
4 3 2
Transpozice je překlopení matice kolem hlavní diagonály. V našem příkladu se z matice o 2 řádcích a 3 sloupcích stane matice o 3 řádcích a 2 sloupcích - dojde k vzájemné výměně řádků a sloupců. Stejný výsledek dostaneme pomocí příkazu W.'i pomocí příkazu W', protože matice W je naplněna reálnými čísly.
Operátory pro maticové operace (operace s celými maticemi) ' transpozice matice a .' překlopení podle hlavní diagonály Příklad: K = [1+3i,6,-7+5i;4-8i,-3-9i,2i]; Matice K je naplněna komplexními čísly. Abychom získali transponovanou matici, musíme použít příkaz K.' (prostá transpozice matice). Po provedení příkazu K' dostaneme tzv. adjugovanou matici, tzn. matici transponovanou, kterou tvoří ji čísla komplexně sdružená, tj. u imaginárních částí mají opačná znaménka.
Operátory pro maticové operace (operace s celými maticemi) ' transpozice matice a .' překlopení podle hlavní diagonály Pokračování příkladu: K = [1+3i,6,-7+5i;4-8i,-3-9i,2i]; K = 1 + 3i 6 + 0i -7 + 5i 4 - 8i -3 - 9i 0 + 2i K.' ans = 1 + 3i 4 - 8i 6 + 0i -3 - 9i -7 + 5i 0 + 2i - prostá transpozice
K' ans = 1 - 3i 4 + 8i 6 - 0i -3 + 9i -7 - 5i 0 - 2i - transponovaná matice s komplexně sdruženými čísly
Relační operátory == porovnání na rovnost (je rovno) ~= porovnání na nerovnost (není rovno) <, >, je menší, je větší <=, >= je menší nebo rovno, je větší nebo rovno ~ negace (not) Logické operátory & a zároveň (and) | nebo (or) ~ negace (not)
Pozor! = ==
přiřazení porovnání na rovnost
Příklady: & – a zároveň (logický operátor) (and – funkce provádějící stejnou operaci) (3<5)&(4<6) ans = 1
– pravda a zároveň pravda
(3<5)&(4>=6) ans = 0
– pravda a zároveň nepravda
(3>5)&(4>6) ans = 0
– nepravda a zároveň nepravda
Lze psát i takto: and((3>5),(4<6)) ans = 0
– nepravda a zároveň pravda – funkce and s dvěma argumenty
Příklady: | – nebo (logický operátor) (or – funkce provádějící stejnou operaci) (3<5)|(4~=6) ans = 1
– pravda nebo pravda
(3<5)|(4==6) ans = 1
– pravda nebo nepravda
(3>5)|(4==6) ans = 0
– nepravda nebo nepravda
Lze psát i takto: or((3>5),(4~=6)) ans = 1
– nepravda nebo pravda – funkce or s dvěma argumenty
Příklady: xor – funkce „exkluzivní“ nebo (xor((3<5),(4<6)) ans = 0
– pravda nebo pravda exkluzivně – pozor 0 – výsledkem je nepravda
xor((3>5),(4<6)) – pravda nebo pravda exkluzivně ans = 1 xor((3>5),(4>6)) – nepravda nebo nepravda exkluzivně ans = 0
whos Name ans
Size 1x1
Bytes 1
Class logical
Attributes
Příklady: ~ – negace (not – funkce provádějící stejnou operaci) ~0 ans =1 ~1 ans =0 ~5 ans =0 ~(3<5) ans =0 not(3<5) ans =0 Tedy pak: (~(3<5))&(4<6) ans = 0
– negace 0 (nepravdy) je 1 (pravda)
– negace 1 (pravdy) je 0 (nepravda) – negace 5 (pravdy) je 0 (nepravda)
– negace pravdy je nepravda – lze psát i takto, nepravda – nepravda a zároveň pravda
schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků dnes se tento pojem používá především v informatice a přírodních vědách, jde o daleko širší pojem kuchyňské recepty návody (jak sestavit skleník atd. ;-) postupy (výrobní i jiné) slovo pochází ze jména perského matematika 9. století Abu Jafar Muhammada ibn Mūsā al-Chwārizmího, který ve svých dílech položil základy algebry (arabské číslice, řešení lineárních a kvadratických rovnic)
Detailněji on-line na http://www.algoritmy.net
– postup při tvorbě programu, kterým lze prostřednictvím algoritmu řešit určitý problém. – etapy
Formulace problému (požadavky, výchozí hodnoty, požadované výsledky, přesnost řešení)
Analýza úlohy (je úloha řešitelná, má úloha více řešení?)
Vytvoření algoritmu
Sestavení programu (zdrojový text v konkrétním programovacím
jazyce)
Odladění programu (syntaktické chyby, logické chyby)
Detailněji on-line na http://www.algoritmy.net
– přesný návod k vykonání dané činnosti, vyřešení jisté úlohy. – sekvence jednoduchých kroků – postup, který je: konečný (finitní) – po určitém počtu kroků skončí (počet kroků může být libovolně velký (podle rozsahu a hodnot vstupních údajů). obecný (hromadný, univerzální) – nemá řešit pouze jediný případ, ale skupinu obdobných problémů. jednoznačný (deterministický, podmíněný) – v každém kroku je zcela jasně řečeno, co bude následovat. opakovatelný – protože je v každém kroku udáno, co bude následovat, je možné opakovat postup a výsledek bude vždy stejný. elementární – skládá se z konečného počtu jednoduchých (elementárních) kroků resultativní – má alespoň jeden výstup, veličinu, která je v požadovaném vztahu k zadaným vstupům, a tím tvoří odpověď na problém, který algoritmus řeší správný (korektní) – pro všechna přístupná data vede postup ke správnému cíli.
Augusta Ada Kingová, hraběnka z Lovelace (Augusta Ada Byronová) 10. prosince 1815 Londýn – 27. listopadu 1852 tamtéž
anglická matematička a vynálezkyně strojového programování známá především svým detailním popisem fungování Babbageova mechanického počítače (analytického stroje), jehož vývoj podporovala i finančně
mezi jejími poznámkami k analytickému stroji byl i algoritmus, který je považován za první algoritmus zpracovatelný počítačem, je často uváděna jako první programátorka
Viz např.: https://cs.wikipedia.org/wiki/Ada_Lovelace
– slovní popis – vývojový diagram – grafické znázornění Např.: Algoritmus pro výpočet obsahu kruhu – slovní popis •
•
•
•
Formulace problému: vstupní údaj: poloměr r, výstupní údaj: obsah kruhu S Analýza: S = πr2 Sestavení algoritmu: Slovní popis: Je poloměr r >0? ANO NE S = pi*r*r Vypiš: Vypiš: Poloměr r musí být kladný obsah S Konec
Algoritmus pro výpočet obsahu kruhu Vývojový diagram
Program
Z r>0
-
+ S = * r * r Piš: S
Piš: r musí být kladný
if (r>0) S=pi*r*r; disp(S); else disp('r musi byt kladne') end
K Viz také: Animace 5 – http://home.zcu.cz/~pkropik/PPEL/slozky/!_zaklady_matlabu