TAD de los polinomios - Valor de un polinomio en un punto
Utilizando el tipo abstracto de datos de los polinomios definir las funciones
valor :: (Num a, Eq a) => Polinomio a -> a -> a
tal que valor p c
es el valor del polinomio p
al sustituir su variable por c
. Por ejemplo,
λ> ejPol = consPol 4 3 (consPol 2 (-5) (consPol 0 3 polCero)) λ> ejPol 3*x^4 + -5*x^2 + 3 λ> valor ejPol 0 3 λ> valor ejPol 1 1 λ> valor ejPol (-2) 31
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
Soluciones en Haskell
import TAD.Polinomio (Polinomio, polCero, esPolCero, consPol, grado, coefLider, restoPol) valor :: (Num a, Eq a) => Polinomio a -> a -> a valor p c | esPolCero p = 0 | otherwise = b*c^n + valor r c where n = grado p b = coefLider p r = restoPol p
Soluciones en Python
from typing import TypeVar from src.TAD.Polinomio import (Polinomio, coefLider, consPol, esPolCero, grado, polCero, restoPol) A = TypeVar('A', int, float, complex) def valor(p: Polinomio[A], c: A) -> A: if esPolCero(p): return 0 n = grado(p) b = coefLider(p) r = restoPol(p) return b*c**n + valor(r, c)