TAD de los polinomios: Factorización de un polinomio

Usando el tipo abstracto de los polinomios, definir la función

tal que factorizacion p es la lista de la descomposición del polinomio p en factores obtenida mediante el regla de Ruffini. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Raíces enteras de un polinomio

Usando el tipo abstracto de los polinomios, definir la función

tal que raicesRuffini p es la lista de las raices enteras de p, calculadas usando el regla de Ruffini. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Reconocimiento de raíces por la regla de Ruffini

Usando el tipo abstracto de los polinomios, definir la función

tal que esRaizRuffini r p se verifica si r es una raiz de p, usando para ello el regla de Ruffini. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Regla de Ruffini

Usando el tipo abstracto de los polinomios, definir las funciones

tales que

  • cocienteRuffini r p es el cociente de dividir el polinomio p por el polinomio x-r. Por ejemplo:

  • restoRuffini r p es el resto de dividir el polinomio p por el polinomio x-r. Por ejemplo,

Comprobar con QuickCheck que, dado un polinomio p y un número entero r, las funciones anteriores verifican la propiedad de la división euclídea.

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Regla de Ruffini con representación densa

Usando el tipo abstracto de los polinomios definir la función

tal que ruffiniDensa r cs es la lista de los coeficientes del cociente junto con el rsto que resulta de aplicar la regla de Ruffini para dividir el polinomio cuya representación densa es cs entre x-r. Por ejemplo,

ya que

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Término independiente de un polinomio

Usando el tipo abstracto de datos de los polinomios definir la función

tal que terminoIndep p es el término independiente del polinomio p. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Método de Horner del valor de un polinomio

El método de Horner para calcular el valor de un polinomio se basa en representarlo de una forma forma alernativa. Por ejemplo, para calcular el valor de

se representa como

y se evalúa de dentro hacia afuera; es decir,

Usando el tipo abstracto de los polinomios, definir la función

tal que horner p x es el valor del polinomio p al sustituir su variable por el número x. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Divisibilidad de polinomios

Usando el tipo abstracto de los polinomios, definir la función

tal que divisiblePol p q se verifica si el polinomio p es divisible por el polinomio q. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: División de polinomios

Usando el tipo abstracto de los polinomios, definir las funciones

tales que

  • cociente p q es el cociente de la división de p entre q. Por ejemplo,

  • resto p q es el resto de la división de p entre q. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Multiplicación de un polinomio por un número

Usando el tipo abstracto de los polinomios, definir la función

tal que multEscalar c p es el polinomio obtenido multiplicando el número c por el polinomio p. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Integral definida de un polinomio

Usando el tipo abstracto de datos de los polinomios definir la función

tal que integralDef p a b es la integral definida del polinomio p entre a y b. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Integral de un polinomio

Usando el tipo abstracto de los polinomios, definir la función

tal que integral p es la integral del polinomio p cuyos coefientes son números racionales. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Potencia de un polinomio

Usando el tipo abstracto de los polinomios, definir la función

tal que potencia p n es la potencia n-ésima del polinomio p. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Resta de polinomios

Usando el tipo abstracto de los polinomios, definir la función

tal que restaPol p q es el polinomio obtenido restándole a p el q. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Derivada de un polinomio

Usando el tipo abstracto de los polinomios, definir la función

tal que derivada p es la derivada del polinomio p. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Comprobación de raíces de polinomios

Usando el tipo abstracto de los polinomios,
definir la función

tal que esRaiz c p se verifica si c es una raiz del polinomio p. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Valor de un polinomio en un punto

Usando el tipo abstracto de los polinomios, definir la función

tal que valor p c es el valor del polinomio p al sustituir su variable por c. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Producto de polinomios

Usando el tipo abstracto de los polinomios, definir la función

tal que multPol p q es el producto de los polinomios p y q. Por ejemplo,

Comprobar con QuickCheck las siguientes propiedades

  • El producto de polinomios es conmutativo.
  • El producto es distributivo respecto de la suma.

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Suma de polinomios

Usando el tipo abstracto de los polinomios, definir la función

tal que (sumaPol p q) es la suma de los polinomios p y q. Por ejemplo,

Comprobar con QuickCheck las siguientes propiedades:

  • polCero es el elemento neutro de la suma.
  • la suma es conmutativa.

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Término líder de un polinomio

Usando el tipo abstracto de los polinomios, definir la función

tal que termLider p es el término líder del polinomio p. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Construcción de términos

Usando el tipo abstracto de los polinomios, definir la función

tal que (creaTermino n a) es el término a*x^n. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

TAD de los polinomios: Transformaciones entre polinomios y listas densas

Utilizando el tipo abstracto de datos de los polinomios definir las funciones

tales que

  • densaApolinomio xs es el polinomio cuya representación densa es xs. Por ejemplo,

  • polinomioAdensa p es la representación densa del polinomio p. Por ejemplo,

Comprobar con QuickCheck que ambas funciones son inversas.

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell