Programmation matlab

Fermé
ozagi Messages postés 17 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 30 mai 2011 - 15 mai 2011 à 20:05
ozagi Messages postés 17 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 30 mai 2011 - 17 mai 2011 à 10:44
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
A voir également:

4 réponses

damlegone32 Messages postés 74 Date d'inscription lundi 11 septembre 2006 Statut Membre Dernière intervention 31 mai 2011 29
Modifié par damlegone32 le 16/05/2011 à 23:37
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
ozagi Messages postés 17 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 30 mai 2011
16 mai 2011 à 23:55
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
damlegone32 Messages postés 74 Date d'inscription lundi 11 septembre 2006 Statut Membre Dernière intervention 31 mai 2011 29
17 mai 2011 à 00:08
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
ozagi Messages postés 17 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 30 mai 2011
Modifié par ozagi le 17/05/2011 à 00:18
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
damlegone32 Messages postés 74 Date d'inscription lundi 11 septembre 2006 Statut Membre Dernière intervention 31 mai 2011 29
17 mai 2011 à 00:30
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
ozagi Messages postés 17 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 30 mai 2011
17 mai 2011 à 10:44
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