Interpolation de Lagrange MATLAB
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Interpolation de Lagrange MATLAB



  1. #1
    invite1afd2be4

    Unhappy Interpolation de Lagrange MATLAB


    ------

    Bonjour,
    J'ai réalisé un programme utilisant l'interpolation de Lagrange pour approximer une fonction.
    Cependant mes coefs L(j) sont infiniment grand et je ne comprend pas pourquoi, pourtant la formule est correcte à mon cours.
    J'ai emprunter et lu beaucoup de livre sur le sujet et j'ai essayer de m'en inspirer.
    Bien-sur si je réécrit le programme du livre, ça fonctionne mais mon but est de réaliser moi même le programme pour comprendre et m'entrainer.
    Je joint ci-dessous mon programme MATLAB
    Pouvez-vous m'aider ou m'indiquer où se trouve mon erreur ?

    Cordialement
    Merci d'avance

    %Interpolation de Lagrange
    clear
    clc
    min=input('Entrez l''abscisse minimale de la fonction: ');
    max=input('Entrez l''abscisse maximale de la fonction: ');
    p=input('Entrez le nombre de points(x0,x1,x2,..,xn) pour la fonction originale: ');
    n=input('Entrez le nombre de points(x0,x1,x2,..,xn) pour l''interpolation: ');
    X=linspace(min,max,p+1);
    x=linspace(min,max,n+1);
    L=ones(1,n+1);
    y=ones(1,n+1);
    P=ones(1,n+1);
    for k=1+1
    for j=1:n+1
    L(j)=1;
    for i=1:j-1
    Lp=(X(k)-x(i))/(x(j)-x(i))
    L(j)=L(j)*Lp;
    end
    for i=j+1:n+1
    Lp=(X(k)-x(i))/(x(j)-x(i));
    L(j)=L(j)*Lp;
    end
    y(j)=x(j).*x(j)-10;
    end
    ps=0;
    for w=1:n+1
    psp=y(w)*L(w);
    ps=ps+psp;
    end
    P(k)=ps;
    end
    g=X.*X-10;
    subplot(133)
    plot(X,g,'b',X,P,'r')
    title('Superposition des deux courbes');
    xlabel('x');
    ylabel('f(x),P(x)');
    subplot(131);
    plot(X,g)
    title('Fonction exacte');
    xlabel('x');
    ylabel('f(x)');
    subplot(132)
    plot(X,P)
    title('Interpolation de Lagrange');
    xlabel('x');
    ylabel('P(x)');

    -----

  2. #2
    gg0
    Animateur Mathématiques

    Re : Interpolation de Lagrange MATLAB

    Bonjour.

    je ne comprends pas bien ce que tu fais au début, ce que tu demandes à l'utilisateur : Pour faire une interpolation de Lagrange, on a besoin d'un certain nombre de couples de valeurs (abscisse; valeur de la fonction pour cette abscisse). Je ne connais pas assez Matlab pour savoir ce qu'il attend avec la ligne "p=input('Entrez le nombre de points(x0,x1,x2,..,xn) pour la fonction originale: ');" Un entier p ? Et pourquoi on demande ensuite un autre nombre pour interpoler ? Et je ne vois pas apparaître la fonction ...

    Ton problème : "mes coefs L(j) sont infiniment grand " probablement une division par 0.

    Il me semble que tu ferais mieux de faire une interpolation lagrangienne avec peu de points, mais à la main, pour bien comprendre comment ça marche. Avec 5 ou 6 valeurs, on a déjà une situation complexe, mais tout à fait maîtrisable à la main. Et avec un traceur de courbes, tu pourras comparer ta courbe de fonction initiale (par exemple une sinusoïde, interpolée en 0, 1,3,4, 7 et 10) et le polynôme d'interpolation.

    Cordialement.

Discussions similaires

  1. Interpolation de Lagrange MATLAB
    Par invite1afd2be4 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 29/10/2020, 11h25
  2. interpolation de lagrange
    Par invite3c464b7d dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 22/12/2013, 12h49
  3. Interpolation de Lagrange?
    Par invite8c6bae12 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 09/02/2012, 11h29
  4. interpolation de lagrange
    Par invite5917d706 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 16/02/2010, 23h28
  5. Interpolation de lagrange
    Par invite4ca9df98 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 01/02/2010, 18h30