Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [Risolto] Problema con il prodotto tra due matrici quadrate.
Forum - C/C++ - [Risolto] Problema con il prodotto tra due matrici quadrate.

Avatar
tullio1995 (Normal User)
Rookie


Messaggi: 59
Iscritto: 20/03/2011

Segnala al moderatore
Postato alle 21:50
Giovedì, 18/10/2012
Codice sorgente - presumibilmente C/C++

  1. z=(pm[0]*sm[0])+(pm[1]*sm[2]);
  2.         x=(pm[0]*sm[1])+(pm[1]*sm[3]);
  3.         y=(pm[2]*sm[0])+(sm[3]*sm[2]);
  4.         j=(pm[2]*sm[1])+(pm[3]*sm[3]);
  5.         printf("%lf , %lf\n",z,x);
  6.         printf("%lf , %lf\n",y,j);
  7.         return 0;
  8. }


pm e sm sono le due matrici 2x2. il problema che trovo, è che la y, non da un risultato esatto con tutte le matrici. Ad esempio:
    
A=|3 -2|  B=|1 -3|   A*B=|3 -13|
    |5 -1|       |0  2|          |5 -17|
Ed è giusta, ma se eseguo quest'altra:

A=|2 -1|  B=|1   2|  
    |3  2|       |-6  1|          

Il risultato è questo:
A*B=|8   3|
        |-3  8|
Che è sbagliato perchè anzichè -3 dovrebbe uscire -9.



Ultima modifica effettuata da tullio1995 il 19/10/2012 alle 20:55


L’uomo ha scoperto la bomba atomica, però nessun topo al mondo costruirebbe una trappola per topi.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5461
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:14
Giovedì, 18/10/2012
Nella linea del calcolo della y hai scritto

y=(pm[2]*sm[0])+(sm[3]*sm[2]);

ma deve essere

y=(pm[2]*sm[0])+(pm[3]*sm[2]);

P.S. Perché non usi vere matrici ma semplici vettori ... ?

Ultima modifica effettuata da nessuno il 18/10/2012 alle 22:29


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
carlduke (Member)
Pro


Messaggi: 153
Iscritto: 29/01/2011

Segnala al moderatore
Postato alle 12:25
Venerdì, 19/10/2012
Testo quotato

Postato originariamente da nessuno:

Nella linea del calcolo della y hai scritto

y=(pm[2]*sm[0])+(sm[3]*sm[2]);

ma deve essere

y=(pm[2]*sm[0])+(pm[3]*sm[2]);

P.S. Perché non usi vere matrici ma semplici vettori ... ?



e' la stessa cosa che mi chiedo per le opengl.. :pat:


Il mio canale: http://www.youtube.com/user/MrDukeCarl

tecnologia e programmazione!
PM Quote
Avatar
tullio1995 (Normal User)
Rookie


Messaggi: 59
Iscritto: 20/03/2011

Segnala al moderatore
Postato alle 16:16
Venerdì, 19/10/2012
Nessuno, sono ancora alle prime armi con il C, me lo sto studiando da solo, perchè a scuola ci fanno studiare solo il VB. Si possono dichiarare matrici in C, o intendi un vettore bidimensionale??
PS: Grazie, mi ci sono scervellato per una giornata intera e alla fine era solo un errore di battitura... :blush:

Ultima modifica effettuata da tullio1995 il 19/10/2012 alle 16:19


L’uomo ha scoperto la bomba atomica, però nessun topo al mondo costruirebbe una trappola per topi.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5461
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:56
Venerdì, 19/10/2012
Un vettore bidimensionale è una matrice ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote