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

  • 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 polinomio

    se ingresa el valor de x

    Polinomio

    Coeficientes

    del polinomio

    Grafico del

    polinomio

    Polinomio

    evaluado

    Se presiona e l botn para

    obtener el valor de los

    coeficiente , el polinomio, la

    grafica y el valor de la funcin

    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