Table of Contents

HW05 - maticové operace

Termín odevzdání: 19.12.2021 23:59 CET

Hodnocení: 5b

Zadání

Program načte soubor matrixes.dat, ve kterém jsou umístěny definice matic. Textový řetězec, vyjadřující maticovou operaci, je předán programu jako parametr příkazové řádky. Vaším úkolem je provést zadanou operaci a vypsat na standardní výstup výslednou matici.

Chyby

Volání programu

# maticovy soucet
$python3 HW05.py v=a+b
 
# maticovy soucin
$python3 HW05.py v=a*b
 
# determinant matice
$python3 HW05.py det(a)

Vyhodnocení domácího úkolu není automatické. Není dovolenou používat knihovny jako numpy.
K vyhodnocení výrazu s maticemi využijte vestavěné funkce eval() nebo exec().

Formát vstupu

Definice matic jsou v souboru matrixes.dat. Každá matice má na prvním řádku nejprve název a svoji velikost ($n$, $m$) a následuje $n$ řádků vždy s $m$ hodnotami matice. Jednotlivé hodnoty jsou oddělené mezerami, ale za poslední hodnotou je pouze znak nového řádku.

a 3 3
10 20 30
40 50 60
70 80 90

b 3 3
11 44 47
98 17 77
40 33 18

Formát výstupu

Formát výstupu je stejný, ale obsahuje pouze jednu matici nebo skalár. Pokud je výsledkem matice, jmenuje se v.

Doporuční pro implementaci

Pro implementaci domácího úkolu navrhněte třídu Matrix, která bude popisovat matici. Parametry konstruktoru bude velikost matice, součástí budou přetížené magické metody pro aritmetické operace:

__add__
__sub__
__mul__

Pro výpočet determinantu implementujte funkci, jejíž argumentem bude instance třídy Matrix.

Příklad 1

$ \left( \begin{array}{cc} 76 & 98 & -31 \\
30 & 30 & 32 \end{array} \right) - \left( \begin{array}{c} 89 & 25 & 38 \\
1 & -32 & -38 \end{array} \right) = \left( \begin{array}{c} -13 & 73 & -69 \\
29 & 62 & 70 \end{array} \right) $

matrixes.dat Operace Očekávaný výstup Očekávaný chybový výstup
a 2 3
76 98 -31
30 30 32

b 2 3
89 25 38
1 -32 -38
v=a-b
v 2 3
-13 73 -69
29 62 70
žádný

Příklad 2

$ \left( \begin{array}{cc} -59 & 78 & -85\end{array} \right) \times \left( \begin{array}{c} 78 \\
-28 \\
-97\end{array} \right) = \left( \begin{array}{c} 1459\end{array} \right) $

matrixes.dat Operace Očekávaný výstup Očekávaný chybový výstup
a 1 3
-59 78 -85

b 3 1
78
-28
-97
v=a*b
v 1 1
1459
žádný

Příklad 3

matrixes.dat Operace Očekávaný výstup Očekávaný chybový výstup
a 2 3
16 41 -98

b 3 1
96
-67
49
a*b žádný
Error: Chybny vstup!

Příklad 4

$ \left( \begin{array}{cc} 81 & -96 & -56 & -9 \\
-19 & 66 & 37 & -21 \\
20 & 49 & -71 & -49 \\
45 & -96 & 20 & 8\end{array} \right) \times \left( \begin{array}{c} -89 & -96 \\
76 & 75 \\
65 & 2\end{array} \right) $

matrixes.dat Operace Očekávaný výstup Očekávaný chybový výstup
a 4 4
81 -96 -56 -9
-19 66 37 -21
20 49 -71 -49
45 -96 20 8

b 3 2
-89 -96
76 75
65 2
a*b žádný
Error: Chybny vstup!

Příklad 5

matrixes.dat Operace Očekávaný výstup Očekávaný chybový výstup
a 3 3
1 2 3
4 5 6
7 8 9
det(a) 0
žádný