License | Creative Commons |
---|---|
Maintainer | José A. Alonso |
Safe Haskell | Safe |
Language | Haskell2010 |
En este módulo se definen operaciones con el TAD (tipo abstracto de datos) de los polinomios estudiado en el tema 21 del curso.
En los ejemplos se usarán los siguientes polinomios:
ejPol1, ejPol2, ejPol3, ejTerm:: Polinomio Int ejPol1 = consPol 4 3 (consPol 2 (-5) (consPol 0 3 polCero)) ejPol2 = consPol 5 1 (consPol 2 5 (consPol 1 4 polCero)) ejPol3 = consPol 4 6 (consPol 1 2 polCero) ejTerm = consPol 1 4 polCero
- module I1M.Pol
- creaTermino :: (Num t, Eq t) => Int -> t -> Polinomio t
- termLider :: (Num t, Eq t) => Polinomio t -> Polinomio t
- sumaPol :: (Num a, Eq a) => Polinomio a -> Polinomio a -> Polinomio a
- multPorTerm :: (Num t, Eq t) => Polinomio t -> Polinomio t -> Polinomio t
- multPol :: (Num a, Eq a) => Polinomio a -> Polinomio a -> Polinomio a
- polUnidad :: (Num t, Eq t) => Polinomio t
- valor :: (Num a, Eq a) => Polinomio a -> a -> a
- esRaiz :: (Num a, Eq a) => a -> Polinomio a -> Bool
- derivada :: (Eq a, Num a) => Polinomio a -> Polinomio a
- restaPol :: (Num a, Eq a) => Polinomio a -> Polinomio a -> Polinomio a
Documentation
module I1M.Pol
Funciones sobre términos
creaTermino :: (Num t, Eq t) => Int -> t -> Polinomio t Source
(creaTermino n a) es el término a*x^n. Por ejemplo,
creaTermino 2 5 == 5*x^2
termLider :: (Num t, Eq t) => Polinomio t -> Polinomio t Source
(termLider p) es el término líder del polinomio p. Por ejemplo,
ejPol2 == x^5 + 5*x^2 + 4*x termLider ejPol2 == x^5
Suma de polinomios
sumaPol :: (Num a, Eq a) => Polinomio a -> Polinomio a -> Polinomio a Source
(sumaPol p q) es la suma de los polinomios p y q. Por ejemplo,
ejPol1 == 3*x^4 + -5*x^2 + 3 ejPol2 == x^5 + 5*x^2 + 4*x sumaPol ejPol1 ejPol2 == x^5 + 3*x^4 + 4*x + 3
Producto de polinomios
multPorTerm :: (Num t, Eq t) => Polinomio t -> Polinomio t -> Polinomio t Source
(multPorTerm t p) es el producto del término t por el polinomio p. Por ejemplo,
ejTerm == 4*x ejPol2 == x^5 + 5*x^2 + 4*x multPorTerm ejTerm ejPol2 == 4*x^6 + 20*x^3 + 16*x^2
multPol :: (Num a, Eq a) => Polinomio a -> Polinomio a -> Polinomio a Source
(multPol p q) es el producto de los polinomios p y q. Por ejemplo,
ghci> ejPol1 3*x^4 + -5*x^2 + 3 ghci> ejPol2 x^5 + 5*x^2 + 4*x ghci> multPol ejPol1 ejPol2 3*x^9 + -5*x^7 + 15*x^6 + 15*x^5 + -25*x^4 + -20*x^3 + 15*x^2 + 12*x
polUnidad :: (Num t, Eq t) => Polinomio t Source
polUnidad es el polinomio unidad. Por ejemplo,
ghci> polUnidad 1
Valor de un polinomio en un punto
valor :: (Num a, Eq a) => Polinomio a -> a -> a Source
(valor p c) es el valor del polinomio p al sustituir su variable por c. Por ejemplo,
ejPol1 == 3*x^4 + -5*x^2 + 3 valor ejPol1 0 == 3 valor ejPol1 1 == 1 valor ejPol1 (-2) == 31
Verificación de raices de polinomios
esRaiz :: (Num a, Eq a) => a -> Polinomio a -> Bool Source
(esRaiz c p) se verifica si c es una raiz del polinomio p. Por ejemplo,
ejPol3 == 6*x^4 + 2*x esRaiz 1 ejPol3 == False esRaiz 0 ejPol3 == True
Derivación de polinomios
derivada :: (Eq a, Num a) => Polinomio a -> Polinomio a Source
(derivada p) es la derivada del polinomio p. Por ejemplo,
ejPol2 == x^5 + 5*x^2 + 4*x derivada ejPol2 == 5*x^4 + 10*x + 4