TAD de los polinomios: Valor de un polinomio en un punto
Usando el tipo abstracto de los polinomios, definir la función
1 |
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,
1 2 3 4 5 6 7 8 9 |
λ> 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.
1 2 3 4 5 6 7 8 9 10 |
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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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) |