Potència d'un polinomi ====================== .. py:module:: power .. warning:: Per a resoldre aquest exercici **no es poden fer servir iteracions (ni** ``for`` **ni** ``while`` **)**, només funcions recursives. Funció `eleva_pol` (2 punts) ---------------------------- En aquest exercici treballarem amb la classe :py:class:`~polinomis.Polinomi`, que representa un polinomi amb una sola variable. Reviseu la seva especificació i fixeu-vos que disposa de les operacions :py:meth:`~polinomis.Polinomi.str`, suma i producte, entre d'altres. La trobareu implementada al fitxer :download:`polinomis.py`. Volem elevar un polinomi a un nombre natural `n`, és a dir, volem calcular :math:`[p(x)]^n, \, n \in \mathbb{N}`. Utilitzarem el mètode d'elevació ràpida, consistent en utilitzar la següent definició recursiva: .. math:: &\quad [p(x)]^0=1,\\[4pt] &\quad \text{per }n\ge 1, \quad [p(x)]^{n}= \begin{cases} r(x) \cdot r(x), & \text{amb} \;\; r(x) = [p(x)]^{n/2} & \text{si } n \text{ és parell}, \\[6pt] p(x) \cdot r(x) \cdot r(x), & \text{amb} \;\; r(x) = [p(x)]^{(n-1)/2} & \text{si }n\text{ és senar}. \end{cases} Es demana que, utilitzant aquesta definició, implementeu la funció que eleva un polinomi `p` a una potència `n`. Deseu-la al mòdul :py:mod:`power` (fitxer :file:`power.py`). .. py:function:: eleva_pol(p, n) :param ~polinomis.Polinomi p: base (polinomi que es vol elevar) :param int n: exponent (enter no negatiu) :return: :math:`[p(x)]^n` (`p` elevat a `n`) :rtype: :py:class:`~polinomis.Polinomi` Per exemple, .. literalinclude:: tests-eleva.txt :language: pycon :start-after: --ini-enunciat :end-before: --fi-enunciat Disposeu de més jocs de prova en el fitxer :download:`tests-eleva.txt`.