Anda di halaman 1dari 2

Prctica 1: Polinomios en MATLAB. Interpolacin 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 trmino independiente. Por ejemplo, el polinomio p(x)=3x2-2x-1 se representa con
p = [3 -2 -1];

MATLAB contempla las siguientes operaciones bsicas con polinomios: Clculo de las races a partir de la lista coeficientes, por medio del comando roots( ), por ejemplo
r=roots(p)

nos devuelve
r = 1.0000 -0.3333

El resultado es un vector columna de ceros. Clculo de los coeficientes a partir del vector columna de ceros, por medio del comando poly( ), por ejemplo
poly(r)

nos devuelve
ans = 1.0000 -0.6667 -0.3333

Observe que el polinomio devuelto siempre es mnico. Multiplicacin 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
conv([1 -5], [1 1 -4 1]) -5

obteniendo
ans =

La divisin 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])

Evaluacin 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 evaluacin siguiendo el algoritmo de Horner o de multiplicacin 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 interpolacin x=[x0, x1, ..., xn], los polinomios bsicos de Lagrange se definen por la frmula li(t)= (t-x0)... (t-xi-1)(t-xi+1)... (t-xn) , 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 bsicos de Lagrange para los nodos x=[ 3, -1, 1], usando los comandos vistos hasta ahora. Un procedimiento, aunque poco eficiente, podra ser: 1. construir el polinomio nodal (el polinomio mnico que se anula en todos los nodos de interpolacin) por medio de la funcin 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; 3. normalizar cada polinomio, dividindolo entre su valor en el nodo omitido; utilizar polyval. Dibuje las grficas de cada uno de los polinomios obtenidos en el intervalo [-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 polinomio de menor grado que interpole la funcin f(t)=exp (t) en los nodos -3, -1, 1. Dibuje su grfica junto con la de la funcin 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 despus de plot usar el comando
legend('Funcion', 'Polinomio');

Problema 3 [Opcional] Escribir una funcin 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.