TAD de los polinomios: Integral de un polinomio
Usando el tipo abstracto de los polinomios, definir la función
1 |
integral :: (Fractional a, Eq a) => Polinomio a -> Polinomio a |
tal que integral p
es la integral del polinomio p
cuyos coefientes son números racionales. Por ejemplo,
1 2 3 4 5 6 7 |
λ> ejPol = consPol 7 2 (consPol 4 5 (consPol 2 5 polCero)) λ> ejPol 2*x^7 + 5*x^4 + 5*x^2 λ> integral ejPol 0.25*x^8 + x^5 + 1.6666666666666667*x^3 λ> integral ejPol :: Polinomio Rational 1 % 4*x^8 + x^5 + 5 % 3*x^3 |
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
1 2 3 4 5 6 7 8 9 10 11 |
import TAD.Polinomio (Polinomio, polCero, consPol, esPolCero, grado, coefLider, restoPol) import Data.Ratio integral :: (Fractional a, Eq a) => Polinomio a -> Polinomio a integral p | esPolCero p = polCero | otherwise = consPol (n+1) (b / fromIntegral (n+1)) (integral r) where n = grado p b = coefLider p r = restoPol p |
1 2 3 4 5 6 7 8 9 10 11 |
from src.TAD.Polinomio import (Polinomio, coefLider, consPol, esPolCero, grado, polCero, restoPol) def integral(p: Polinomio[float]) -> Polinomio[float]: if esPolCero(p): return polCero() n = grado(p) b = coefLider(p) r = restoPol(p) return consPol(n + 1, b / (n + 1), integral(r)) |