You are on page 1of 3

Práctica 1: Polinomios en MATLAB.

Interpolación
de Lagrange I.

En MATLAB un polinomio se representa mediante un vector fila que


contiene los coeficientes de las potencias en orden decreciente: empezando
por el coeficiente principal y terminando por el término independiente.
Por ejemplo, el polinomio p(x) = 3x2 − 2x − 1 se representa con

p = [3 -2 -1];

MATLAB contempla las siguientes operaciones básicas con polinomios:

Cálculo de las raı́ces a partir de la lista coeficientes, por medio del co-
mando roots( ), por ejemplo

r=roots(p)

nos devuelve

r = 1.0000
-0.3333

El resultado es un vector columna de ceros.

Cálculo de los coeficientes a partir del vector columna de ceros, por me-
dio del comando poly( ), por ejemplo

poly(r)

nos devuelve

ans = 1.0000 -0.6667 -0.3333

Observe que el polinomio devuelto siempre es mónico.

Multiplicación de dos polinomios dados por la lista de sus coeficientes,


por medio del comando conv( , ). Por ejemplo, para comprobar que
(x − 5)(x + 1) = x2 − 4x − 5 basta ejecutar
Práctica de ordenador I 2

conv([1 -5], [1 1])

obteniendo

ans = 1 -4 -5

La división se realiza por medio del comando deconv( , ): si p(x) =


s(x)q(x) + r(x), se puede usar el formato

[s, r] = deconv(p, q])

Evaluación de un polinomio dado por la lista de sus coeficientes p en


un valor x, por medio del comando polyval(p, x). Por ejemplo, para
comprobar que p(1)0 = basta realizar

polyval(p, 1)

obteniendo

ans = 0

polyval( ) realiza la evaluación siguiendo el algoritmo de Horner o de


multiplicación anidada.
Si x es un vector o una matriz, MATLAB devuelve la matriz con el
polinomio evaluado en cada elemento.
Recordemos que dados unos nodos de interpolación x = [x0 , x1 , . . . , xn ],
los polinomios básicos de Lagrange se definen por la fórmula
(t − x0 ) . . . (t − xi−1 )(t − xi+1 ) . . . (t − xn )
li (t) = , i = 0, 1, . . . , n .
(xi − x0 ) . . . (xi − xi−1 )(xi − xi+1 ) . . . (xi − xn )
Entonces el polinomio pn de menor grado que interpola la nube de puntos
(x0 , f0 ), . . . , (xn , fn ) está dado por

pn (t) = f0 l0 (t) + · · · + fn ln (t) .

Problema 1 Vamos a construir los polinomios básicos de Lagrange para


los nodos x = [−3, −1, 1], usando los comandos vistos hasta ahora. Un
procedimiento, aunque poco eficiente, podrı́a ser:
1. construir el polinomio nodal (el polinomio mónico que se anula en
todos los nodos de interpolación) por medio de la función poly;

2. para cada uno de los nodos eliminar el factor que contiene ese nodo,
dividiendo con deconv el polinomio nodal entre el factor lineal que se
anula en dicho nodo;

Andrei Martı́nez Finkelshtein


Práctica de ordenador I 3

3. normalizar cada polinomio, dividiéndolo entre su valor en el nodo omi-


tido; utilizar polyval.

Dibuje las gráficas de cada uno de los polinomios obtenidos en el interva-


lo [−4, 2] y compruebe visualmente que en efecto los polinomios obtenidos
satisfacen la propiedad li (xj ) = δij . Para ello tabule los valores de cada
polinomio en 200 puntos equiespaciados del intervalo, creados con

linspace(-4, 2, 200);

Problema 2 Usando los resultados del problema anterior construya el po-


linomio de menor grado que interpole la función f (t) = exp(t) en los nodos
−3, −1, 1. Dibuje su gráfica junto con la de la función f en el intervalo
[−4, 2] y compruebe visualmente que el polinomio obtenido interpola a f en
los nodos indicados.
Para diferenciar las dos curvas puede después de plot usar el comando

legend(’Funcion’, ’Polinomio’);

Problema 3 (Opcional) Escribir una función lagrange con el formato

function [c]=lagrange(x, f)

que dados los nodos (vector x) y los valores correspondientes de ordenada


(vector f ) devuelva los coeficientes del polinomio interpolador de Lagrange.

Andrei Martı́nez Finkelshtein

You might also like