Problème: Algorithme d'orthonormalisation de Gramm Shmidt (MATLAB)
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Problème: Algorithme d'orthonormalisation de Gramm Shmidt (MATLAB)



  1. #1
    invite17c3613d

    Problème: Algorithme d'orthonormalisation de Gramm Shmidt (MATLAB)


    ------

    Bonsoir les amis,

    Dans le cadre de ma thèses je suis entrain de réaliser un programme sur MATLAB: ayant a transformer une base de fonctions W0(i,x) i=1 à 5 en une base Orthonormée de manière à avoir:
    Intégrale de 0 à 1 de W(i,x)*W(j,x).dx = Symbole de Chronecker i,j

    J'ai programmé ce qui suit:
    1/ pour la définition de mes fonctions:

    Code:
    %Fonctions de bases w0 et ses derivee w1 et w2%
    
     
        for i=1:n
        Alpha1(i)= -cos(nu(i))+ cosh(nu(i));
       
        Alpha2(i)= sinh(nu(i))-sin(nu(i));
        
        for kk=1:length(x)
     
        w0(i,kk)= (cosh(nu(i)*x(kk))-cos(nu(i)*x(kk)))/Alpha1(i)-(sinh(nu(i)*x(kk))-sin(nu(i)*x(kk)))/Alpha2(i);
        w1(i,kk)= nu(i)*((sinh(nu(i)*x(kk))+sin(nu(i)*x(kk)))/Alpha1(i)-(cosh(nu(i)*x(kk))-cos(nu(i)*x(kk)))/Alpha2(i));
        w2(i,kk)= nu(i)*nu(i)*((cosh(nu(i)*x(kk))+cos(nu(i)*x(kk)))/Alpha1(i)-(sinh(nu(i)*x(kk))+sin(nu(i)*x(kk)))/Alpha2(i));
        
        end
        end

    Pour l'algorithme d'Orthonormalisation de GRAM SHMIDT:

    Code:
    % Normalisation des fonctions de base w0  par l'algorithme de Gramm Shmidt%
    
    
        w0carre=w0.^2;
    
    
    %Norme w0%
    for i=1:n;
    w0int(i)=trapz(0:dx:1,w0carre(i,:)); 
    Normw0(i)=sqrt(w0int(i));
    end
    
    %Orthonormalisation%
    
    for kk=1:length(x);
        w0n(1,kk)=w0(1,kk)/Normw0(1);    %w0n(1,:) normalisé%
    end
    
    for kk=1:length(x);
        Provis21n(kk)=w0n(1,kk)*w0(2,kk);
    end
    
    ALPHA21n=trapz(0:dx:1,Provis21n);
    
    for kk=1:length(x);
        w02nn(2,kk)=w0(2,kk)-(ALPHA21n*w0n(1,kk));
        w0n(2,kk)= w02nn(2,kk)/Normw0(2);  %w0n(2,:) normalisé%
    end
    
    for kk=1:length(x);
        Provis31n(kk)=w0n(1,kk)*w0(3,kk);
        Provis32n(kk)=w0n(2,kk)*w0(3,kk);
    end
    
    ALPHA31n=trapz(0:dx:1,Provis31n);
    ALPHA32n=trapz(0:dx:1,Provis32n);
    
    for kk=1:length(x);
        w03nn(3,kk)=w0(3,kk)-(ALPHA31n*w0n(1,kk))-(ALPHA32n*w0n(2,kk));
        w0n(3,kk)= w03nn(3,kk)/Normw0(3);  %w0n(3,:) normalisé%
    end
    
    for kk=1:length(x);
        Provis41n(kk)=w0n(1,kk)*w0(4,kk);
        Provis42n(kk)=w0n(2,kk)*w0(4,kk);
        Provis43n(kk)=w0n(3,kk)*w0(4,kk);
    end
    
    ALPHA41n=trapz(0:dx:1,Provis41n);
    ALPHA42n=trapz(0:dx:1,Provis42n);
    ALPHA43n=trapz(0:dx:1,Provis43n);
    
    for kk=1:length(x);
        w04nn(4,kk)=w0(4,kk)-(ALPHA41n*w0n(1,kk))-(ALPHA42n*w0n(2,kk))-(ALPHA43n*w0n(3,kk));
        w0n(4,kk)= w04nn(4,kk)/Normw0(4);  %w0n(4,:) normalisé%
    end
    
    for kk=1:length(x);
        Provis51n(kk)=w0n(1,kk)*w0(5,kk);
        Provis52n(kk)=w0n(2,kk)*w0(5,kk);
        Provis53n(kk)=w0n(3,kk)*w0(5,kk);
        Provis54n(kk)=w0n(4,kk)*w0(5,kk);
    end
    
    ALPHA51n=trapz(0:dx:1,Provis51n);
    ALPHA52n=trapz(0:dx:1,Provis52n);
    ALPHA53n=trapz(0:dx:1,Provis53n);
    ALPHA54n=trapz(0:dx:1,Provis54n);
    
    for kk=1:length(x);
        w05nn(5,kk)=w0(5,kk)-(ALPHA51n*w0n(1,kk))-(ALPHA52n*w0n(2,kk))-(ALPHA53n*w0n(3,kk))-(ALPHA54n*w0n(4,kk));
        w0n(5,kk)= w04nn(4,kk)/Normw0(5);  %w0n(5,:) normalisé%
    end
    Mon souci c'est qu'après exécution de l'algorithme pour mes fonction j'obtiens pas des 0 pour Intégrale de 0 à 1 W(i,x).W(j,x).dx lorsque i≠j.

    J'obtiens en effet des valeurs comme:

    ans =

    1.3310e-018


    ans =

    8.9951e-018


    ans =

    -1.3925e-010

    Je veux savoir si l'erreur provient de ma programmation de l'algorithme? ou que c'est une erreur issue de l'intégration (Par trapèze avec un pas de 1/1000)? ou d'autre chose???


    Merci d'avance les amis....

    -----

  2. #2
    gg0
    Animateur Mathématiques

    Re : Problème: Algorithme d'orthonormalisation de Gramm Shmidt (MATLAB)

    Bonsoir.

    Le plus probable est que les approximations faites par matlab font que 0 n'est atteint qu'approximativement.

    Cordialement.

  3. #3
    albanxiii
    Modérateur

    Re : Problème: Algorithme d'orthonormalisation de Gramm Shmidt (MATLAB)

    Bonjour,

    Ce document : http://hal.archives-ouvertes.fr/hal-00128124/ est surement à votre problème ce que le marteau pillon est à la mouche, mais au moins il devrait vous permettre ce comprendre pourquoi ou et c'est pareil dans votre cas.

    @+
    Not only is it not right, it's not even wrong!

  4. #4
    invite17c3613d

    Re : Problème: Algorithme d'orthonormalisation de Gramm Shmidt (MATLAB)

    Merci énormément pour l’éclaircissement et effectivement en augmentant le dx à 1/100.000 ça converge d'avantage vers le zéro ce qui confirme la dite explication...

    @+

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Gauss seidel algorithme informatique Matlab
    Par invited08b581e dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 26/04/2013, 09h37
  2. algorithme de jarvis et graham sous matlab
    Par inviteb223925e dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 22/04/2011, 19h53
  3. algorithme de squalattisation d'empreinte en Matlab
    Par invite98a02b2e dans le forum Électronique
    Réponses: 6
    Dernier message: 02/03/2011, 17h23
  4. Algorithme Matlab
    Par invitede8302a1 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 12/04/2010, 08h17
  5. Matrice et algorithme Matlab
    Par invited028b400 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 14/01/2008, 13h53