2. Potència d’un polinomi¶
Avís
Per a resoldre aquest exercici no es poden fer servir
iteracions (ni for ni while ), només
funcions recursives.
2.1. Funció eleva_pol (2 punts)¶
En aquest exercici treballarem amb la classe Polinomi, que representa un polinomi amb una sola variable. Reviseu la seva especificació i fixeu-vos que disposa de les operacions str(), suma i producte, entre d’altres. La trobareu implementada al fitxer polinomis.py.
Volem elevar un polinomi a un nombre natural n, és a dir, volem calcular \([p(x)]^n, \, n \in \mathbb{N}\). Utilitzarem el mètode d’elevació ràpida, consistent en utilitzar la següent definició recursiva:
Es demana que, utilitzant aquesta definició, implementeu la funció que eleva un polinomi p a una potència n. Deseu-la al mòdul power (fitxer power.py).
Per exemple,
>>> from polinomis import Polinomi
>>> from power import eleva_pol
>>> p = Polinomi()
>>> q = eleva_pol(p, 0)
>>> print("[p(x)]^0 =", q)
[p(x)]^0 = 1
>>> isinstance(q, Polinomi) # Comprovació que la funció retorna un Polinomi
True
>>> p = Polinomi()
>>> p[1], p[0] = 3, 1
>>> q = eleva_pol(p, 2)
>>> print("p(x) =", p, "; [p(x)]^2 =", q)
p(x) = 3x+1 ; [p(x)]^2 = 9x^2+6x+1
>>> p = Polinomi()
>>> p[3], p[2], p[1] = 1, -1, -2
>>> q = eleva_pol(p, 5)
>>> print("p(x) =", p, "; [p(x)]^5 =", q)
p(x) = x^3-x^2-2x ; [p(x)]^5 = x^15-5x^14+30x^12-15x^11-81x^10+30x^9+120x^8-80x^6-32x^5
Disposeu de més jocs de prova en el fitxer tests-eleva.txt.