Produit de 2 matrices de format différent et inversion de matrice

Produit de 2 matrices de format différent et inversion de matrice - Delphi/Pascal - Programmation

Marsh Posté le 20-03-2004 à 11:06:41    

Salut, je dois écrire un programme calculant le produit de 2 matrices, ces matrices étant de format quelconques (avec un nombre maximal Maxl de lignes et un nombre maximal Maxc de colonnes où Maxl et Maxc sont des constantes fixées en début de programme), le programme devant comporter un test indiquant si les matrices sont de formats compatibles ou non .... comment faire ?
Je dois aussi écrire un programme déterminant si une matrice carrée est inversible et calculant sa matrice inverse si elle existe ... j'imagine qu'il faut coder le pivot de Gauss sur la matrice à inverser et sur la matrice identité de format correspondant, mais pour la suite, je suis dans le flou, là ...
Merci d'avance à tous les cracks du code pour leur aide précieuse !
 
                              radical_dreamer

Reply

Marsh Posté le 20-03-2004 à 11:06:41   

Reply

Marsh Posté le 20-03-2004 à 11:07:40    

Précision : je code en Turbo Pascal 7.0 ...

Reply

Marsh Posté le 20-03-2004 à 14:03:37    

Ca fait longtemps que je n'ai pas vu une ligne de Turbo Pascal, donc je ne pourrai pas te sortir de code.
Sinon:
- Produit de 2 matrices. Pour multiplier 2 matrices, il suffit que le nombre de lignes de la 2ème matrice soit égal au nombre de colonnes de la 1ère matrice si mes souvenirs sont corrects. Donc le test sur les "formats compatibles" est vite fait...
- Inversion d'une matrice. La matrice doit être carrée (nxn). Son déterminant ne doit pas être nul. La matrice peut être inversée
 
voilà voilà


Message édité par Vinx le 13-04-2004 à 11:25:56
Reply

Marsh Posté le 20-03-2004 à 21:50:07    

pour la vérification avant de multiplier :
 
dans le corp du program tu demande a l'utilisateur de saisir le nombre de lignes / colones de chaque matrice
 
tu passe ca dans une fonction boolean qui compare et te dis si l'opération est possible
 
si la fonction est "true" alors tu apelle une procédure saisie pour la 1ére matrice, ensuite tu la rapelles pour la seconde matrice
 
une foi la saisie effectué tu apelle une procédure calcul qui te renvera la matrice resultat
 
enfin une fonction affichage qui affichera le resultat
 
sinon un writeln pour dire que l'opération est impossible
 
pour l'inversion c'est le meme principe


---------------
LoD 4 ever && PWC spirit|Le topak de l'iMP-450|inDATOUNEwe trust
Reply

Marsh Posté le 12-04-2004 à 23:12:24    

Astuce:
   Utiliser la directive de compilation {-I} pour éviter la vérification de resultat des E/S, puis verifier cette resultat avec la directive {+I} et la fonction IOResult.
exemple
  {-I}  
    x:= M1[1]+ M2[1];
  {-I}  
  if IOResult = 0{0 ou 1} then
    // opération éfectuée avec succer
  else
    // opération échouée...
 
 
  Bonne chance...


---------------
Toufik
Reply

Marsh Posté le 12-04-2004 à 23:14:09    


   Utiliser la directive de compilation {-I} pour éviter la vérification de resultat des E/S, puis verifier cette resultat avec la directive {+I} et la fonction IOResult.
exemple
  {-I}  
    x:= M1[1]+ M2[1];
  {-I}  
  if IOResult = 0{0 ou 1} then
    // opération éfectuée avec succer
  else
    // opération échouée...
 
 
  Bonne chance...


---------------
Toufik
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed