jueves, 8 de marzo de 2012

Interpolacion con el Polinomio de Lagrange en matlab

clear all;
     clc;
  fprintf('Interpolacion con el Metodo del Polinomio de Lagrange\n\n');
    n=input('grado del polinolio: ');
for i1:n+1
    x(1,i)=input('dame los valores de xi:');
end
for i=1:n+1
    xi(1,i)=input('dame los valores de f(xi):');
end
 x
   xi
      xint=input('Numero para el que desea interpolar x: ');
   fxint=0;
 i=1;
while i<=n+1
    L=1;
    J=0;
    while J<=n
        if i~=J+1
            L=L*(xint-x(1,J+1))/(x(1,i)-x(1,J+1));
        end
    J=J+1;
    end
fxint=fxint+L*xi(1,i);
i=i+1;
end
fprintf('\nresultado xi: %d',fxint');
       plotx,xi)
   grid
title('Polinomio de Lagrange');xlabel('x');yhabel('y')

10 comentarios:

  1. me da un error despues de colocar el grado

    ResponderEliminar
  2. Hace falta un = en el primer for ........"for i=1:n+1"

    ResponderEliminar
  3. como escribo los valores de xi y yi, me refiero a la forma?

    ResponderEliminar
  4. SI TENGO 4 PUNTOS CUAL ES EL GRADO DEL POLYNOMIO SUPONGO n = 3

    ResponderEliminar
    Respuestas
    1. SI ES 3 PORQUE ENTONCES TE PIDE 4 PUNTOS
      X=[-1, 2, 5, 8]; Y=[2, 8, -3, 10]; UNO POR UNO
      xint=input('Numero para el que desea interpolar x: '); 0
      xint=0
      resultado xi: 8.41975 PERFECTO!

      Eliminar
  5. clear all;
    clc;
    fprintf('Interpolacion con el Metodo del Polinomio de Lagrange\n\n');
    n=input('grado del polinolio: ');
    for i=1:n+1
    x(1,i)=input('dame los valores de xi:');
    end
    for i=1:n+1
    xi(1,i)=input('dame los valores de f(xi):');
    end
    x
    xi
    xint=input('Numero para el que desea interpolar x: ');
    fxint=0;
    i=1;
    while i<=n+1
    L=1;
    J=0;
    while J<=n
    if i~=J+1
    L=L*(xint-x(1,J+1))/(x(1,i)-x(1,J+1));
    end
    J=J+1;
    end
    fxint=fxint+L*xi(1,i);
    i=i+1;
    end
    fprintf('\nresultado xi: %d',fxint');
    plot(x,xi)
    grid
    title('Polinomio de Lagrange');xlabel('x');ylabel('y')

    ResponderEliminar
  6. EL PLOTEO ES INNECESARIO YA QUE SOLO PLOTEA LOS PUNTOS INICIALES
    Y NO EL POLINOMIO INTERPOLADOR DE LAGRANGE. PERO PODEIS HACERLO EN DESMOS FACILMENTE.

    ResponderEliminar
  7. AQUI TENEIS UNA MAS EFICIENTE FUNCION:

    % LAGRANGE INTERPOLATOR POLYNOMIAL
    % X=[-1, 2, 5, 8]; Y=[2, 8, -3, 10];
    % PX(2, [-1, 2, 5, 8], [2, 8, -3, 10])
    % OCTAVE PX.M
    % http://jhhr-signalsystems.blogspot.pe/
    function P=PX(A, X, Y)
    N1=(A-X(2))*(A-X(3))*(A-X(4));D1=(X(1)-X(2))*(X(1)-X(3))*(X(1)-X(4));
    N2=(A-X(1))*(A-X(3))*(A-X(4));D2=(X(2)-X(1))*(X(2)-X(3))*(X(2)-X(4));
    N3=(A-X(1))*(A-X(2))*(A-X(4));D3=(X(3)-X(1))*(X(3)-X(2))*(X(3)-X(4));
    N4=(A-X(1))*(A-X(2))*(A-X(3));D4=(X(4)-X(1))*(X(4)-X(2))*(X(4)-X(3));
    L=[N1/D1 N2/D2 N3/D3 N4/D4];
    P= Y(1)*L(1) + Y(2)* L(2) + Y(3)* L(3) + Y(4)* L(4)
    end

    ResponderEliminar
    Respuestas
    1. EXAMPLE:
      % PX(0, [-1, 2, 5, 8], [2, 8, -3, 10])
      % P = 8.4198 ans = 8.4198

      Eliminar