====== 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.