Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
La seconda generazione della citycar elettrica di Dacia passa alla piattaforma RGEV small di Renault Group, cresce di 15 cm in lunghezza e 18 cm in larghezza, adotta un motore da 80 CV e una batteria LFP da 27,5 kWh per 250 km WLTP. Prezzi da 17.900 euro, produzione a Novo Mesto in Slovenia.
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX ha portato sul mercato Picco, un e-reader da 3,97 pollici che pesa 58 grammi e si aggancia al retro dello smartphone con un anello magnetico. Lo abbiamo usato con Pixel 11 Pro XL e iPhone 18 Pro per capire se un formato così ridotto regga la prova della lettura quotidiana
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-01-2008, 13:16   #1
mamo139
Senior Member
 
L'Avatar di mamo139
 
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
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 13:26   #2
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
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:
It supports matrix types: Matrix (rectangular matrix); UpperTriangularMatrix; LowerTriangularMatrix; DiagonalMatrix; SymmetricMatrix; BandMatrix; UpperBandMatrix; LowerBandMatrix; SymmetricBandMatrix; IdentityMatrix; RowVector; ColumnVector.

Only one element type (float or double) is supported.

The library includes the operations *, +, -, *=, +=, -=, Kronecker product, Schur product, concatenation, inverse, transpose, conversion between types, submatrix, determinant, Cholesky decomposition, QR triangularisation, singular value decomposition, eigenvalues of a symmetric matrix, sorting, fast Fourier and trig. transforms, printing and an interface with Numerical Recipes in C.

It is intended for matrices in the range 10 x 10 to the maximum size your machine will accommodate in a single array. The package works for very small matrices but becomes rather inefficient.

A lazy evaluation approach to evaluating matrix expressions is used to improve efficiency and reduce use of temporary storage.

I have tested the library with Borland (Builder 5,6), Microsoft (VC++ 6,7,8), Open Watcom (1.4), Intel 9 on a PC; Gnu G++ (3.3), Sun C++ on a Sun and Gnu G++ (3.4,4,4.1) and Intel 9 C++ under Linux.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 14:18   #3
mamo139
Senior Member
 
L'Avatar di mamo139
 
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.
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 14:24   #4
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Clicca su questo link.

Quote:
ma funziona solo per le 10x10 al massimo?? non si puo usare per matrici piu grandi??
Che significa la frase "in the range 10 x 10 to the maximum size your machine will accommodate in a single array"?
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 14:26   #5
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
Quote:
Originariamente inviato da variabilepippo Guarda i messaggi
Clicca su questo link.



Che significa la frase "in the range 10 x 10 to the maximum size your machine will accommodate in a single array"?
eheh... avevo letto veloce
grazie
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 14:50   #6
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
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;
}
questo è l'output:

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
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2008, 14:56   #7
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
grazie mille, ora provo a fare quello che volevo e se ho problemi faccio vedere...
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2008, 15:09   #8
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
ma questa libreria consente anche di fare operazioni matriciali e matrice vettore come le moltiplicazioni?
La libreria è ben documentata...
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2008, 17:17   #9
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
è una domanda, non c'è bisogno di mettere ste faccine.
E quali faccine dovrei mettere se non queste? Hai formulato una domanda che trova una risposta ampia, esauriente e completa nella documentazione ufficiale... Non parliamo di un segreto di stato o di funzionalità non documentate, basta un pizzico di buona volontà nel leggere la documentazione, o no?
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2008, 17:52   #10
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
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.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2008, 19:57   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Dai su...non andiamo oltre
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2008, 19:29   #12
Corgan_
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.
Corgan_ è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2010, 18:47   #13
gabriWWW
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
gabriWWW è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2010, 21:43   #14
mamo139
Senior Member
 
L'Avatar di mamo139
 
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
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2010, 10:18   #15
gabriWWW
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
gabriWWW è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2010, 10:24   #16
mamo139
Senior Member
 
L'Avatar di mamo139
 
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
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2010, 10:46   #17
gabriWWW
Junior Member
 
Iscritto dal: Dec 2006
Messaggi: 18
Quote:
Originariamente inviato da mamo139 Guarda i messaggi
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
ok funziona!!!!!


grazie
gabriWWW è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa Nuova Dacia Spring, del modello precedente resta...
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone BOOX Picco: l'ebook reader minuscolo è un...
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jensen Huang non si arrende: la Silicon ...
Xiaomi 18 Pro svela il suo asso nella ma...
NVIDIA: il Segretario al Tesoro USA chie...
OPPO porta in Europa un nuovo mid-range:...
Star Wars, Morrowind e TimeSplitters: la...
God of War: Sons of Sparta debutta su PS...
Dalle schede madri agli ospedali: ASUS p...
Perché Windows non permette di ch...
Il meglio in 7 articoli del Black Friday...
Black Friday Dyson: sconti fino al 43% s...
Cerebras cresce del 70% nel trimestre e ...
Black Friday Amazon, robot aspirapolvere...
22 milioni di persone coinvolte: il giga...
CPU desktop, Intel rialza la testa e AMD...
NVIDIA, una petizione chiede il ritorno ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:14.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v