Vander Monde

11
DEPARTAMENTO DE CIENCIAS ELÉCTRICA Y ELECTRÓNICA INGENIERÍA ELECTRONICA EN AUTOMATIZACIÓN Y CONTROL MÉTODOS NUMÉRICOS ING.FERNANDO SALAS NRC: 1392 INTERPOLACIÓN POLINOMICA MÉTODO DE VANDERMONDE INTEGRANTES: -ANDREA TRUJILLO -LUIS MIGUEL BARRENO CUARTO NIVEL 07-01-2013

Transcript of Vander Monde

Page 1: Vander Monde

DEPARTAMENTO DE CIENCIAS ELÉCTRICA Y ELECTRÓNICA

INGENIERÍA ELECTRONICA EN AUTOMATIZACIÓN Y

CONTROL

MÉTODOS NUMÉRICOS

ING.FERNANDO SALAS

NRC: 1392

INTERPOLACIÓN POLINOMICA

MÉTODO DE VANDERMONDE

INTEGRANTES:

-ANDREA TRUJILLO

-LUIS MIGUEL BARRENO

CUARTO NIVEL

07-01-2013

Page 2: Vander Monde

INTERPOLACIÓN POLINÓMICA

La interpolación polinómica es una técnica de interpolación de un conjunto de datos o de una función por

un polinomio. Es decir, dado cierto número de puntos obtenidos por muestreo o a partir de

un experimento se pretende encontrar un polinomio que pase por todos sus puntos.

Dada una función f de la cual se conocen sus valores de la variable independiente , se

llama interpolación polinómica 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 válido solo dentro del dominio de la función.

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 métodos que se utiliza en la interpolación polinómica.

Uno de los métodos utilizado para encontrar el polinomio es el de Vandermonde.

MÉTODO 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 número 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 serán todos 1 ya que son los datos elevados a la cero.

Los resultados de la resolución de la matriz son los coeficientes del polinomio es decir

Una vez obtenida la matriz es necesario buscar un método para resolver la misma , el método escogido fue

el Método de Crout .

Page 3: Vander Monde

MÉTODO DE CROUT

En el método 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 método 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 descomposición 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 MÉTODO DE CROUT.

La fórmula para obtener los n vectores solución es:

Donde:

Para llenar las matrices L y U se lo hará de una forma practica en donde cada figura significará una fórmula

que utiliza el método de Crout para resolver sistemas de ecuaciones lineales.

Donde:

Page 4: Vander Monde

El orden que se utilizó para llenar las matrices L y U se muestra a continuación:

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 fila de la matriz U; los de la segunda columna de la matriz

L; los de la segunda fila 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.

EXPLICACIÓN DEL CÓDIGO

A continuación se muestra una breve explicación del código realizado en matlab:

Para realizar el programa se lo separó en varias funciones para lograr la optimización del mismo.

Page 5: Vander Monde

Este consta de 5 funciones las cuales son:

VANDERMONDE

Matrizdevandermonde

Grafico

Sustitucion

crout1

A continuación se explicara la función de cada una de ellas.

Función VANDERMONDE

En esta función es la principal ya que se llama a las funciones secundarias las cuales construirán la

matriz de Vandermonde y lo resolverán por el método de Crout, también se valida el ingreso de la

tabla de datos, se construye el polinomio , se realiza la llamada a la función grafico la cual dibujara la

curva dada por el polinomio ,se guardan las variables necesarias y se configura el botón 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 tamaño 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

Page 6: Vander Monde

Botón 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 ');

Función matrizdevandermonde

Esta función permite a partir de la tabla de datos construir la matriz de Vandermonde , esta devuelve la

matriz A la cual será resuelta por el método 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

Función Crout1

Se envía la matriz obtenida en la función matrizdevandermonde para ser resuelta por este método.

En las siguientes líneas de código se extrae los valores ingresados en la matriz A, es necesario convertirlos

a través de una variable carácter str2num la cual convierte la cadena de caracteres ingresada en su valor

numérico exacto utilizado por Matlab, en este caso nos convertiría en una matriz ya que A debe ser

ingresado exactamente igual como en el command window.

function [X n]=Crout1(a,X1)

Declaración de variables

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

Page 7: Vander Monde

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

Método 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;

Page 8: Vander Monde

%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

Función Grafico

Esta función permite crear el grafico del polinomio , la cual recibe como parámetros 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

Page 9: Vander Monde

Función sustitución

La función sustitución 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

botón CONTINUAR.

EJEMPLO

Para medir la gravedad se deja caer un peso. A altura h = 100 m se pone el cronómetro a cero y se

miden los tiempos con un cronómetro que mide hasta las décimas 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

Page 10: Vander Monde

Luego de presionar el botón CONTINUAR aparecerá la siguiente ventana:

Además el programa cuenta con una sección Ayuda dentro de la función la cual nos

indica lo que realiza la función, 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.

Bibliografía

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 número

de pares de datos

Se debe ingresar la tabla de

datos obtenida del problema

Si se desea evaluar el polinomio

se ingresa el valor de x

Polinomio

Coeficientes

del polinomio

Grafico del

polinomio

Polinomio

evaluado

Se presiona e l botón para

obtener el valor de los

coeficiente , el polinomio, la

grafica y el valor de la función

evaluada en el punto.

Page 11: Vander Monde

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