====== HW08 - Dělení polynomů ======
^ Termín odevzdání | 18.12.2023 23:59 CET |
^ Bodový zisk | 4b+2b revize kódu |
===== Zadání =====
Napište program pro dělení dvou polynomů a to bez použití knihovny numpy (4b), nebo s jejím použitím (2b). Polynomy jsou reprezentovány seznamy, tedy polynom $a_0 + a_1 x + a_2 x^2 + \ldots + a_n x^n$ je reprezentován seznamem [$a_0,\ a_1,\ a_2,\ ... a_n$]. Vstupní polynomy mohou být různého stupně.
Poznámky:
* Poslední koeficient $a_i$ nesmí být roven nule pokud $i > 0$
* Tedy například: polynom $1 + 2x$ je vypsán jako ''[1, 2]'', nikoliv jako ''[1, 2, 0]'' nebo ''[1, 2, 0, 0]''.
* Polynom $0$ (tj. $a_0=0$) musí být vypsán jako '0'.
* Polynom $0 + 3x^3$ je vypsán jako ''[0, 0, 0, 3]''. Výpisy typu ''[0, 0, 0, 3, 0, 0]'' nebo ''[0, 0, 0, 3, 0, 0, 0, 0, 0]'' nejsou správné.
* Výstupní koeficienty jsou opět celá čísla.
Výsledek je celočíselný polynom. Aby Vám výpočet vyšel, použijte vnitřní typ [[https://docs.python.org/3/library/fractions.html|Fraction]].
===== Odevzdání =====
Do systému BRUTE odevzdávejte soubor pojmenovaný ''polynom.py''. V tomto souboru budou funkce ''vypocet_python(data)'' a ''vypocet_numpy(data)''. Návratovou hodnotou funkce bude slovník, který obsahuje koeficienty polynomu, který vznikne vydělením prvního vstupního polynomu druhým vstupním polynomem a zbytek po dělení.
===== Příklady =====
prvni = [0, 12, -2, -4]
druhy = [3, -2]
ret = vypocet_python({'prvni': prvni, 'druhy': druhy})
ret['vysledek'] = [0, 4, 2]
ret['zbytek'] = [0]
Komentář: neboť $(0 + 4x + 2x^2)(3-2x) = 0+ 12x -2x^2 -4x^3$.
prvni = [5, -3, 6, 2, -8]
druhy = [2, 0, 3, 4]
ret = vypocet_python({'prvni': prvni, 'druhy': druhy})
ret['vysledek'] = [2, -2]
ret['zbytek'] = [1, 1]
Komentář: neboť $(2 - 2x)(2 +3x^2+4x^3)+(1+x) = 5 -3x +6x^2 +2x^3 -8x^4$, nebo $(2 - 2x)(2 +3x^2+4x^3) = (5 -3x +6x^2 +2x^3 -8x^4) - (1+x)$