License | Creative Commons |
---|---|
Maintainer | José A. Alonso |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
I1M.PolOperaciones
Description
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
Synopsis
- 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