====== 5. úkol - Polynomials ======
Úkolem je vytvořit soubor ''polynom.py'', v kterém jsou tři funkce pro základní operace s [[https://cs.wikipedia.org/wiki/Polynom|polynomy]].
Konkrétně se jedná o výpočet hodnoty polynomu, součet dvou polynomů a součin dvou polynomů.
Polynomy budeme reprezentovat v Pythonu pomocí datového typu [[https://docs.python.org/3.5/tutorial/introduction.html#lists|list]].
Položkami listů budou čísla datového typu [[https://docs.python.org/3.5/library/functions.html#float|float]] odpovídající koeficientům daného polynomu.
Definujme, že první položka listu s indexem nula bude odpovídat koeficientu u konstantního členu, druhá koeficientu u lineárního členu, třetí koeficientu u kvadratického členu, atd...
Tudíž například list ''**poly1** = [1, 2.5, 3.5, 0, 5.4]'' reprezentuje polynom:
$$ p1(x) = 1 + 2.5x + 3.5x^2 + 5.4x^4. $$
Aby byla reprezentace jednoznačná, tak budeme vždy uvádět pouze nejmenší možný počet koeficientů.
Neboli nulové koeficienty u nejvyšších členů budeme zahazovat.
Reprezentace ''**poly1** = [1, 2.5, 3.5, 0, 5.4, **0**]'' by tedy byla považována za špatnou.
==== Výpočet hodnoty polynomu ====
Vytvořte funkci **polyEval** s dvěma parametry (polynom, x), která bude vracet hodnotu polynomu v bodě $x$.
To znamená, že volání ''polyEval(poly1, 0)'' vrátí 1, volání ''polyEval(poly1, 2)'' vrátí 106.4, apod.
Zamyslete nad efektivností vašeho algoritmu a zkuste se inspirovat [[https://cs.wikipedia.org/wiki/Hornerovo_sch%C3%A9ma|Hornerovým schématem]].
==== Součet dvou polynomů ====
Vytvořte funkci **polySum** s dvěma parametry (poly1, poly2), jež bude vracet __nový polynom__ odpovídající součtu zadaných polynomů.
Například: volání ''polySum([1, 2, 5], [2, 0, 1, -7])'' vrátí ''[3, 2, 6, -7]''.
==== Součin dvou polynomů ====
Vytvořte funkci **polyMultiply** s dvěma parametry (poly1, poly2), jež bude vracet __nový polynom__ odpovídající součinu zadaných polynomů.
Například: volání ''polyMultiply([1, 2, 5], [2, 0, 1, -7])'' vrátí ''[2, 4, 11, -5, -9, -35]''.
===== Upload =====
Všechny tyto tři funkce umístěte do souboru polynom.py a ten následně nahrajte do [[https://cw.felk.cvut.cz/upload|Odevzdávacího systému]].
K implementaci použijte tuto šablonu: {{:courses:b6b36zal:zadani:polynom.py|}}
K řešení nepoužívejte žádné knihovny, tj. odevzdaný kód by neměl obsahovat příkaz ''import''.
===== Hodnocení =====
Za funkce polyEval a polySum získáte 1 bod a za zbývající polyMultiply body 2. Tzn. dohromady lze získat 4 body.
Za každý započatý týden po deadline (termínu odevzdání) je penalizace 2 body. Záporné body neudělujeme.