TAD de los polinomios - Resta de polinomios
Utilizando el tipo abstracto de datos de los polinomios definir la función
restaPol :: (Num a, Eq a) => Polinomio a -> Polinomio a -> Polinomio a
tal que restaPol p q
es el polinomio obtenido restándole a p
el q
. Por ejemplo,
λ> ejPol1 = consPol 5 1 (consPol 4 5 (consPol 2 5 (consPol 0 9 polCero))) λ> ejPol2 = consPol 4 3 (consPol 2 5 (consPol 0 3 polCero)) λ> ejPol1 x^5 + 5*x^4 + 5*x^2 + 9 λ> ejPol2 3*x^4 + 5*x^2 + 3 λ> restaPol ejPol1 ejPol2 x^5 + 2*x^4 + 6
Soluciones
Se usarán la siguientes funciones
-
sumaPol
definida en el ejercicio Suma de polinomios, -
creaTermino
definida en el ejercicio Construcción de términos y -
multPorTerm
definida en el ejercicio Producto de polinomios.
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
Soluciones en Haskell
import TAD.Polinomio (Polinomio, polCero, consPol) import Pol_Suma_de_polinomios (sumaPol) import Pol_Crea_termino (creaTermino) import Pol_Producto_polinomios (multPorTerm) restaPol :: (Num a, Eq a) => Polinomio a -> Polinomio a -> Polinomio a restaPol p q = sumaPol p (multPorTerm (creaTermino 0 (-1)) q)
Soluciones en Python
from typing import TypeVar from src.Pol_Crea_termino import creaTermino from src.Pol_Producto_polinomios import multPorTerm from src.Pol_Suma_de_polinomios import sumaPol from src.TAD.Polinomio import Polinomio, consPol, polCero A = TypeVar('A', int, float, complex) def restaPol(p: Polinomio[A], q: Polinomio[A]) -> Polinomio[A]: return sumaPol(p, multPorTerm(creaTermino(0, -1), q))