09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

17.1. Estructuras recursivas lineales: las listas <strong>en</strong>lazadas 357<br />

La regla de Horner consiste <strong>en</strong> disponer el polinomio de forma que su evaluación<br />

se pueda hacer simplem<strong>en</strong>te mediante la repetición de operaciones aritméticas<br />

elem<strong>en</strong>tales (y no t<strong>en</strong>er que ir calculando los valores de las pot<strong>en</strong>cias sucesivas<br />

de x).<br />

No es difícil observar que<br />

P (x) =<br />

<br />

<br />

<br />

· · · ((a0x + a1)x + a2)x + a3 x + · · · an−1 x + an<br />

y que, con esta expresión, el valor del polinomio se puede calcular de acuerdo<br />

con el sigui<strong>en</strong>te diseño:<br />

Dar valor inicial a0 a valor<br />

para cada i <strong>en</strong>tre 1 y N hacer<br />

valor:= ai+ x * valor<br />

Devolver valor<br />

En este apartado volvemos a considerar la repres<strong>en</strong>tación de polinomios <strong>en</strong><br />

un computador una vez que se han introducido algunas herrami<strong>en</strong>tas de programación<br />

dinámica.<br />

Hay dos formas de repres<strong>en</strong>tar un polinomio conocida la lista de sus coefici<strong>en</strong>tes:<br />

de más significativo a m<strong>en</strong>os, o viceversa. A saber:<br />

P1(x) = a0x n + a1x n−1 + a2x n−2 + · · · + an−1x + an<br />

<br />

<br />

<br />

= · · · ((a0x + a1)x + a2)x + a3 x + · · · an−1 x + an<br />

P2(x) = b0 + b1x + b2x 2 + · · · + bn−1x n−1 + bnx n<br />

<br />

<br />

= b0 + x b1 + x b2 + x(b3 + · · · + x(bn−1 + xbn) · · ·)<br />

<br />

En el supuesto de que t<strong>en</strong>gamos los coefici<strong>en</strong>tes ord<strong>en</strong>ados de grado m<strong>en</strong>or<br />

a mayor (si lo están del otro modo la modificación del programa es mínima)<br />

según su grado y almac<strong>en</strong>ados <strong>en</strong> una lista (lCoef), es posible dar una versión<br />

recursiva de la función anterior.<br />

La recursividad de la regla de Horner se aprecia mejor si consideramos la<br />

sigui<strong>en</strong>te tabla, <strong>en</strong> la que se r<strong>en</strong>ombra el resultado de cada uno de los paréntesis<br />

de la expresión de Horner:<br />

c0 = a0<br />

c1 = a1 + xc0

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!