I1M-0.1.0: Code for the Haskell course taught at the University of Seville.
LicenseCreative Commons
MaintainerJosé A. Alonso
Safe HaskellSafe-Inferred
LanguageHaskell2010

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

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

Resta de polinomios

restaPol :: (Num a, Eq a) => Polinomio a -> Polinomio a -> Polinomio a Source #

(resta p q) es el polinomio obtenido restándole a p el q. Por ejemplo,

ejPol1                  ==  3*x^4 + -5*x^2 + 3
ejPol2                  ==  x^5 + 5*x^2 + 4*x
restaPol ejPol1 ejPol2  ==  -1*x^5 + 3*x^4 + -10*x^2 + -4*x + 3