Programmation matlab

ozagi Messages postés 24 Statut Membre -  
ozagi Messages postés 24 Statut Membre -
Bonjour,

j'ai fait un code Matlab qui manipule les matrices mais il contient déjà des erreurs puisque c'est la première fois que je travaille sur, Ce code permet au début de
- choisir au hasard un vecteur r de taille n, c'est la partie aléatoire de l'algorithme.
- Après il calcule r1=B*r , avec r1 est un vecteur comme r et B est un matrice
- puis il calcule: r2=A*r1, r2 aussi un vecteur et A est un matrice
- Finalement, il calcule r3=C*r, C est un matrice et r3 est un vecteur
Si r3=r2, je déduis que probablement C=A*B, avec C est la matrice identité.

Voila le code mais il ne donne pas le bon résultat

function A_estLinverseDe_B(n)
for i=1,n
r=rand(i,1);
for j=1,n
A=rand(i,j);
B=rand(i,j);
C=eye(i,j);
end
r1=B*r;
r2=A*r1;
r3=C*r;
end
for i=0,n
if isequal(r3,r2)==0
disp('Le matrice A est l inverse de B');
else

disp('A et B ne sont pas inverses');

end
end

end

J'attends vos aides, Merci d'avance

4 réponses

  1. damlegone32 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   29
     
    Si je reprends ce que tu écris au début de ton message: si r2=r3 alors A et B sont inverses. Dans ton code il faut donc écrire:
    if isequal(r3,r2)==1 
    disp('Le matrice A est l inverse de B'); 
    else 
    disp('A et B ne sont pas inverses'); 
    end
    En effet la fonction isequal revoit 1 si les 2 vecteurs en paramètre sont égaux.

    Par contre, d'un point de vue mathématique, je ne vois pas comment les 2 matrices A et B, définies aléatoirement, ont une chance d'être inverses...

    Dernière chose : quand tu poste du code utilise les balises prévues a cet effet (il suffit de cliquer sur l'incone '<>' dans la barre d'outil pour les faire apparraitre)
    0
    1. ozagi Messages postés 24 Statut Membre
       
      Salut,
      Merci pour votre réponse
      Je ne sais pas si je dois les implémenter de façon aléatoire ou de façon manuelle (les matrices A et B), mais juste après cette question, il y a un autre qui me demande d'implémenter un autre code avec des valeurs de n très grande avec n=100, 500, 1000 et 2000.

      concernant ce sujet, menant je dois créer une matrice C égale B avec m éléments modifiés au hasard dans C, les 2 matrices sont carrés de taille n.
      0
  2. damlegone32 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   29
     
    En gros, tu nous donnes l'énoncé de ton problème et tu espères qu'on te donne la solution...
    Vas d'abord lire ça et ensuite si tu bloques sur un point précis de ton problème, reviens et là peut être que quelqu'un pourra d'aider.
    0
  3. ozagi Messages postés 24 Statut Membre
     
    OK, j'ai bien compris
    bein voila j'ai fait ce code
    function ImplementAlgorithm(n,m) 
    for i=0:n 
    A=round(i); 
    end 
    B=inv(A); 
    for i=0:m-1 
        C=B; 
    end 
    
    for i=m:n 
    C= round(i); 
    end 
    
    end

    vous pouvez me vérifier le code,
    Merci
    0
  4. damlegone32 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   29
     
    Aïe. Tu n'as visiblement pas compris le concept de matrice ou/et de boucle for en Matlab... Ecrire :
    for i=0:n 
       A=round(i); 
    end
    n'a simplement aucun sens : à chaque itération de la boucle tu "écrases" la valeur de A.
    Si ton but était d'écrire une matrice aléatoire nxn voici ce que tu aurais du faire :
    A = randn(n) 
    tout simplement.
    Bref révise la manipulation de matrice en Matlab, parce que là tu es mal barré.
    0
    1. ozagi Messages postés 24 Statut Membre
       
      Bonjour,

      J'ai amélioré mon programme et j'espère que vous me donner plus de remarques,
      function ImplementAlgorithm(n,m)
      
      A=rand(n);
      B=inv(A);
      for i=0:m-1
          C=B;
      end
      for i=m:n
      C= rand(i);
      end
      end
      

      Je pense qu'il contient encore des erreurs.
      Merci d'avance
      0