|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
[c/c++] funzioni per matrici
mi servirebbero delle funzioni per lavorare con delle matrici quadrate e che mi permettano di calcolare determinanti. matrice inversa e moltiplicazioni fra matrici...
esistono?? sapete dove posso trovarle?? grazie mille |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Ci sono molte librerie che consentono di operare con matrici in C++, Newmat è facile da usare, compatibile con diversi compilatori e relativamente completa.
Quote:
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
[edit] mhh ma funziona solo per le 10x10 al massimo?? non si puo usare per matrici piu grandi??
Ultima modifica di mamo139 : 19-01-2008 alle 14:21. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Clicca su questo link.
Quote:
|
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
Quote:
grazie |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Come ti dicevo è molto facile da usare, ho scritto un programmino di esempio:
Codice:
#include <iostream>
#include <ctime>
#include "newmat.h"
using namespace std;
void PrintMatrix(const Matrix& X);
int main(void){
int i,j;
Matrix A(3, 3);
Matrix B(3, 3);
Matrix C(3, 3);
srand((unsigned int)time(NULL));
// Inizializza le matrici (nota gli indici 1-based)
for (i = 1; i <= 3; ++i)
for (j = 1; j <= 3; ++j)
{
A(i,j) = rand() % 10;
B(i,j) = rand() % 10;
}
Real detA = A.determinant();
Real detB = determinant(B);
PrintMatrix(A);
PrintMatrix(B);
cout << "Det A = " << detA << endl;
cout << "Det B = " << detB << endl;
C = A+B;
cout << "A+B: ";
PrintMatrix(C);
C = A*B;
cout << "A*B: ";
PrintMatrix(C);
return 0;
}
void PrintMatrix(const Matrix& X)
{
cout << "\nMatrix type: " << X.Type().Value() << " (";
cout << X.Nrows() << ", ";
cout << X.Ncols() << ")\n\n";
if (X.IsZero()) { cout << "All elements are zero\n" << flush; return; }
int nr=X.Nrows(); int nc=X.Ncols();
for (int i=1; i<=nr; i++)
{
for (int j=1; j<=nc; j++) cout << X(i,j) << "\t";
cout << "\n";
}
cout << flush;
}
Codice:
Matrix type: Rect (3, 3) 7 1 7 4 3 2 4 6 1 Matrix type: Rect (3, 3) 4 7 6 2 0 6 3 0 0 Det A = 25 Det B = 126 A+B: Matrix type: Rect (3, 3) 11 8 13 6 3 8 7 6 1 A*B: Matrix type: Rect (3, 3) 51 49 48 28 28 42 31 28 60 |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
grazie mille, ora provo a fare quello che volevo e se ho problemi faccio vedere...
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
|
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Non vedo perché continui a lamentarti, ti ho risposto con una indicazione precisa: per verificare se la libreria soddisfa o meno le tue specifiche esigenze devi studiare la documentazione. Anche perché non hai precisato quali "operazioni matriciali" ti servono, bastano le classiche somme/prodotti/calcolo del determinante o hai bisogno del prodotto di Kronecker e della diagonalizzazione di Jordan?
Se entri da un panettiere chiedendo della carne è normale che il panettiere ti indirizzi verso il macellaio più vicino, o ti sembra una cosa tanto strana? Volendo potrebbe darti quella che ha nel frigo, ma di sicuro dal macellaio troverai tutta la carne che desideri. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Dai su...non andiamo oltre
|
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: Apr 2008
Messaggi: 1
|
Librerie per matrici "avanzate"
Salve ragazzi,
sto lavorando ad un'applicazione che riguarda il face recognition in C++ in ambiente windows ed al punto in cui mi trovo sono obbligato a lavorare con le matrici. Inizialmente mi sono dato da fare con le librerie che voi stessi avete consigliato, purtroppo però devo effettuare una particolare operazione che non è prevista. L'operazione in questione è il calcolo degli autovettori a partire da una matrice. Nelle newmatt l'unico caso previsto è quello di matrici simmetriche, in realtà il calcolo di cui io mi devo occupare riguarda una matrice quadrata generica. Sapreste dirmi se esiste qualche libreria che prevede questo tipo di operazione ? Ringrazio anticipatamente chiunque volesse aiutarmi...ci sto sbattendo la testa già da un bel po'... Ultima modifica di Corgan_ : 30-04-2008 alle 19:32. |
|
|
|
|
|
#13 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 18
|
salve a tutti ,
rimmetto in luce questo post, poiche ho un problema con il file ke consigliavate. uso visual c++ express edition 2008 ho compilato il file seguendo le istruzioni risultato funziona il main si avvia e non mi da errori. il problema che vorrei creare una libreria affinche la possa includere su un altro progetto. ho seguito la guida ma vc mi dà errore : file non presente in directory... qlc1 puo aiutarmi |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
che operazioni devi implementare??
perchè se ti limiti a quelle piu elementari io ho scritto una piccola classe in c++ per gestirle. la trovi qui: http://mamo139.altervista.org/index....classi&id=2000 se hai pretese in piu invece non so aiutarti, perchè non mi sono piu interessato all'argomento
__________________
http://mamo139.altervista.org |
|
|
|
|
|
#15 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 18
|
ok vanno bene....il problema che mi dà errore
c:matrici.cpp(31) : warning C4101: 'y': variabile locale senza riferimenti 1>c:\documents and settings\***\documenti\visual studio 2008\projects\ekflocal\ekflocal\matrici.cpp(103) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(237): vedere la dichiarazione di 'fopen' 1>c:\documents and settings\***\documenti\visual studio 2008\projects\ekflocal\ekflocal\matrici.cpp(157) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(237): vedere la dichiarazione di 'fopen' 1>c:\documents and settings\****\documenti\visual studio 2008\projects\ekflocal\ekflocal\matrici.cpp(173) : warning C4101: 'y': variabile locale senza riferimenti 1>c:\documents and settings\***\documenti\visual studio 2008\projects\ekflocal\ekflocal\matrici.cpp(369) : error C2668: 'pow': chiamata ambigua a funzione in overload 1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(575): potrebbe essere 'long double pow(long double,int)' 1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(527): o 'float pow(float,int)' 1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(489): o 'double pow(double,int)' 1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int, long)' 1>c:\documents and settings\****\documenti\visual studio 2008\projects\ekflocal\ekflocal\matrici.cpp(393) : error C2668: 'pow': chiamata ambigua a funzione in overload 1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(575): potrebbe essere 'long double pow(long double,int)' 1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(527): o 'float pow(float,int)' 1> c:\programmi\microsoft visual studio 9.0\vc\include\math.h(489): o 'double pow(double,int)' 1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int, long)' 1>EKFLocal - 2 errore/i, 4 avviso/i |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
colpa mia, non ho aggiornato il sito, quella versione si compila solo con dev-c++...
ora l'ho aggiornata, ho messo quella che si compila anche con vc++ la trovi sempre allo stesso link, ho sostituito i sorgenti!!
__________________
http://mamo139.altervista.org |
|
|
|
|
|
#17 | |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 18
|
Quote:
grazie |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:15.




















