You are on page 1of 11

DEPARTAMENTO DE CIENCIAS ELCTRICA Y ELECTRNICA

INGENIERA ELECTRONICA EN AUTOMATIZACIN Y


CONTROL

MTODOS NUMRICOS
ING.FERNANDO SALAS
NRC: 1392

INTERPOLACIN POLINOMICA
MTODO DE VANDERMONDE

INTEGRANTES:
-ANDREA TRUJILLO
-LUIS MIGUEL BARRENO
CUARTO NIVEL
07-01-2013

INTERPOLACIN POLINMICA
La interpolacin polinmica es una tcnica de interpolacin de un conjunto de datos o de una funcin por
un polinomio. Es decir, dado cierto nmero de puntos obtenidos por muestreo o a partir de
un experimento se pretende encontrar un polinomio que pase por todos sus puntos.
Dada una funcin f de la cual se conocen sus valores de la variable independiente

, se
llama interpolacin polinmica al proceso de hallar un polinomio P(x) de grado menor o igual a N,
cumpliendo que :

.
Existe un polinomio nico de grado m, el cual es vlido solo dentro del dominio de la funcin.
Para poder realizar el polinomio se necesita una tabla de datos , en la cual es necesario identificar la variable
independiente y dependiente y as utilizar uno de los mtodos que se utiliza en la interpolacin polinmica.
Uno de los mtodos utilizado para encontrar el polinomio es el de Vandermonde.

MTODO DE VANDERMONDE
Se define el polinomio de Vandermonde de la Siguiente forma:


En donde N indica el grado del polinomio.
La matriz de Vandermonde se construye respecto a la variable independiente de la siguiente manera:



En la primera columna de la matriz se debe poner los elementos de la tabla de valores de x elevados a la
potencia N, la cual indica el nmero de pares de datos y el grado del polinomio, en la siguiente columna se
colocan los mismos datos pero elevados a la N-1 y as sucesivamente hasta llegar a la ltima columna que
sus valores sern todos 1 ya que son los datos elevados a la cero.
Los resultados de la resolucin de la matriz son los coeficientes del polinomio es decir


Una vez obtenida la matriz es necesario buscar un mtodo para resolver la misma , el mtodo escogido fue
el Mtodo de Crout .


MTODO DE CROUT
En el mtodo de Crout la matriz A es factorizada como A= LU en donde la matriz L es una matriz triangular
inferior y U una matriz triangular superior con diagonal unitaria

.
El mtodo de Crout es un procedimiento del tipo recursivo, esto significa el desarrollo de un conjunto de
pasos sucesivos en donde el trabajo a realizar en cada paso resulta similar o del mismo tipo pero basado en
resultados obtenidos en pasos anteriores. Estos pasos consisten en la descomposicin sucesiva de los
menores principales de la matriz de coeficientes A.
Para realizar el programa nos basamos en las siguientes definiciones utilizadas para resolver sistemas de
ecuaciones lineales por el MTODO DE CROUT.
La frmula para obtener los n vectores solucin es:

Donde:




Para llenar las matrices L y U se lo har de una forma practica en donde cada figura significar una frmula
que utiliza el mtodo de Crout para resolver sistemas de ecuaciones lineales.











Donde:









El orden que se utiliz para llenar las matrices L y U se muestra a continuacin:

La secuencia de operaciones para determinar los elementos de la matriz L y U son llenar los elementos de la
primera columna de la matriz L; los de la primera la de la matriz U; los de la segunda columna de la matriz
L; los de la segunda la de la matriz U, etc.
Este proceso se debe repetir hasta llenar n columnas de L y n filas de U depende del sistema de ecuaciones,
cabe recalcar que la matriz ingresada debe ser cuadrada es decir de nxn debido a que en L y U se forman
matrices triangulares inferior y superior respectivamente.

EXPLICACIN DEL CDIGO
A continuacin se muestra una breve explicacin del cdigo realizado en matlab:
Para realizar el programa se lo separ en varias funciones para lograr la optimizacin del mismo.
Este consta de 5 funciones las cuales son:
VANDERMONDE
Matrizdevandermonde
Grafico
Sustitucion
crout1
A continuacin se explicara la funcin de cada una de ellas.
Funcin VANDERMONDE
En esta funcin es la principal ya que se llama a las funciones secundarias las cuales construirn la
matriz de Vandermonde y lo resolvern por el mtodo de Crout, tambin se valida el ingreso de la
tabla de datos, se construye el polinomio , se realiza la llamada a la funcin grafico la cual dibujara la
curva dada por el polinomio ,se guardan las variables necesarias y se configura el botn de ayuda.
global X %declaracion de la variable global x

X1=get(handles.uitable6,'Data')
X1 = str2double(X1) %convierte los valores de la tabla X1 a numeros de
tipo double

a=matrizvandermonde(X1); llama a la funcion para construir la matriz de
vandermonde

[X n]=Crout1(a,X1); % se envia la matriz para resolverla por crout

celda2=cell(1,n); %imprimimos la solucion las ecuaciones en la tabla X
celda2(:,:)={''};
set(handles.uitable3,'Data',celda2);%guarda los datos en la tabla a
set(handles.uitable3,'Data',X);
set(handles.uitable3,'visible','on');

poli=poly2sym(X)% expresa el polinomio caracteristico respecto a la
variable x
set(handles.text19,'String',char(poli))
grafico(X,X1) % llama a la funcion para graficar el polinomio

b=get(handles.edit6,'String');
b=str2double(b);
celda1=cell(b,2); %creamos el tamao de la tabla de datos para ingresar
valores
celda1(:,:)={''};
set(handles.uitable6,'Data',celda1);

global X
d=get(handles.edit8,'String');
d=str2double(d);
e=polyval(X,d);% evaluacion del polinomio
set(handles.text22,'String',e) % se guarda el resultado


Botn de ayuda para saber la forma y el orden de ingreso

helpdlg('En numero de pares, se debe ingresar el numero de pares datos
que desee . *Se debe ingresar la Tabla de datos, primera columna X,
segunda columna Y en ese orden.*Valor es un parametro no obligatorio el
cual evalua el polinomio en el valor ingresado',' Vandermonde devuelve el
polinomio, el valor de los coeficientes y el grafico del mismo ');


Funcin matrizdevandermonde
Esta funcin permite a partir de la tabla de datos construir la matriz de Vandermonde , esta devuelve la
matriz A la cual ser resuelta por el mtodo de Crout y recibe los datos de la variable independiente
function [A]=matrizvandermonde(X1)
[f c]=size(X1);

A=zeros(f); % se crea matriz de ceros para luego llenar la matriz con la
matriz de vandermonde
% con este for se realiza la construccion de la matriz la cual eleva cada
% elemento de los valores de x a la potencia j =f-1 hasta 0

for i=1:f
cont=0;
for j=f-1:-1:0
cont=cont+1;
A(i,cont)=X1(i)^j;
end
end

end

Funcin Crout1
Se enva la matriz obtenida en la funcin matrizdevandermonde para ser resuelta por este mtodo.
En las siguientes lneas de cdigo se extrae los valores ingresados en la matriz A, es necesario convertirlos
a travs de una variable carcter str2num la cual convierte la cadena de caracteres ingresada en su valor
numrico exacto utilizado por Matlab, en este caso nos convertira en una matriz ya que A debe ser
ingresado exactamente igual como en el command window.
function [X n]=Crout1(a,X1)

Declaracin de variables

[n,p]=size(a);
l=zeros(n);
u=eye(n);
cont1=0;
cont2=0;
control=0;

Validaciones

f=X1(:,2)';
if det(a)==0 %validacion de la existencia de soluciones
msgbox('El sistema no tiene solucion o tiene infinitas soluciones','
CROUT ');
control=2;
else
for i=1:n %todo este for es de validacion, si las menores principales
de A son cero entonces el sistema no se puede resolver por LU
if det(a(1:i,1:i))==0
disp('A No posee factorizacion LU')
X=linsolve(a,f'); %si la matriz no puede resolverse por LU,
utilizo la funcion predeterminda linsolve
X=X';
control=2; %variable de control
break
end
end
end



Mtodo de Crout

%si la variable de control es diferente de 2, existe la facorizacion LU,
y
%se realizan los calculos de cada formula que conforma el metodo de crout
if control~=2

l(:,1)=a(:,1); %formula para calcular la primera columna de L

for j=2:n
u(1,j)=a(1,j)/l(1,1); %formula para calcular la primera fila de U
end
% este for es para aplicar el orden de como se van a llenar las
matrices
% L y U se llenaran columna de L fila de U en orden
for m=1:2*n-2
if mod(m,2)~=0
cont1=cont1+1;
j=cont1+1;
%for j=cont1+1:cont1+1
for i=j:n
sum1=0;
for k=1:j-1
sum1=sum1+l(i,k)*u(k,j);
end
l(i,j)=a(i,j)-sum1; % calculo de la segunda,tercera,
etc columna de L
end
%end
else
cont2=cont2+1;
i=cont2+1;
%for i=cont2+1:cont2+1
for j=i+1:n
sum2=0;
for k=1:i-1
sum2=sum2+l(i,k)*u(k,j);
end
u(i,j)=(a(i,j)-sum2)/l(i,i);%calculo de la
segunda,tercera,etc fila de U
end

end
end


l
u
faux=X1(:,2)'; %accede a los valores de Y
[f1 c1]=size(faux);
f=faux
g=sustitucion(f,l,n) %sustitucion adelante

X(n)=g(n)/u(n,n);%retrosustitucion

for i=n-1:-1:1 %Todo este for es de retrosustitucion
s=0;
for j=i+1:n
s=s+u(i,j)*X(j);
end
X(i)=(g(i)-s)/u(i,i);
end


X
X2=linsolve(a,f');%comprobacion en el command window

End

Funcin Grafico

Esta funcin permite crear el grafico del polinomio , la cual recibe como parmetros dos puntos por donde
pasa el polinomio.

function []=grafico(X,X1)

x=sym('x');
min1=min(X1(:,1));
max1=max(X1(:,1));
poli=poly2sym(X)
ezplot(poli,[min1,max1])
hold on
plot(X1(:,1),X1(:,2),'*','LineWidth',4)
grid
hold off
end



Funcin sustitucin
La funcin sustitucin se la realiza aparte y es llamada en la parte que necesita el programa:
function [g]=sustitucion(f,l,n)
g(1)=f(1)/l(1,1);

% for para realizar la sustitucion hacia adelante

fori=2:n
suma=0;
for j=1:i-1
suma=suma+l(i,j)*g(j);
end
g(i)=(f(i)-suma)/l(i,i);
end

end
EJEMPLO CON LA INTERFAZ GRAFICA



En la ventana mostrada hacer doble clic sobre el
botn CONTINUAR.



EJEMPLO
Para medir la gravedad se deja caer un peso. A altura h = 100 m se pone el cronmetro a cero y se
miden los tiempos con un cronmetro que mide hasta las dcimas cada 25 metros hasta que toca
el suelo. Resulta la siguiente tabla de datos.
x Y
h(m) t(s)
0 4.5
25 3.5
50 1
75 2
Luego de presionar el botn CONTINUAR aparecer la siguiente ventana:












Adems el programa cuenta con una seccin Ayuda dentro de la funcin la cual nos
indica lo que realiza la funcin, el orden de ingreso, restricciones , etc.
%*** INTERPOLACION POLINOMICA***
%*** PROGRAMA POR EL METODO DE VANDERMONDE***
%1)En numero de pares, se debe ingresar el numero de pares de datos
que desee.
%2) Se debe ingresar la Tabla de datos, primera columna X, segunda
columna Y
%3)Valor es un parametro no obligatorio, el cual evaluara el
polinomio en el punto ingresado.
%Las soluciones de la tabla a de vandermonde se generan de manera
horizontal
%El polinomio obtenido se genera automaticamente, de forma exacta.
%El grafico del polinomio se genera automaticamente , asi como el
valor de
%la funcion evaluada en el punto.

Bibliografa

http://www.slideshare.net/guestdb8ea2b/mini-tutorial-de-matlab
http://ocw.uniovi.es/file.php/54/T4MaterClase/TEMAS/T4AprxItpTe.pdf
http://www2.caminos.upm.es/departamentos/matematicas/Fdistancia/PIE/m
atlab/temasmatlab/TEMA%202.pdf
webpersonal.uma.es/de/gfdc/docencia/GuiSection.pdf
Se debe ingresar el nmero
de pares de datos
Se debe ingresar la tabla de
datos obtenida del problema
Si se desea evaluar el poli nomi o
se ingresa el valor de x
Polinomio
Coeficientes
del polinomio
Grafico del
polinomio
Polinomio
evaluado
Se presiona el botn para
obtener el valor de los
coeficiente , el pol inomi o, la
grafica y el valor de la f unci n
evaluada en el punto.
www.mathworks.com/discovery/matlab-gui.html
http://www.jldelafuenteoconnor.es/Clase_sisli_12.pdf
http://es.wikipedia.org/wiki/Interpolaci%C3%B3n_polin%C3%B3mica
file:///C:/Users/andrea/Documents/Matriz%20de%20Vandermonde%20-
%20Wikipedia,%20la%20enciclopedia%20libre.htm

You might also like