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
A voir également:

4 réponses

damlegone32 Messages postés 75 Statut Membre 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
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
damlegone32 Messages postés 75 Statut Membre 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
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
damlegone32 Messages postés 75 Statut Membre 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
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