PDA

View Full Version : [VB6] Matrici una dentro l'altra


Dark_Sephirot86
27-12-2005, 21:05
E' possibile?
Devo fare un algoritmo che mi calcoli il determinante di matrici quadrate da 4x4 a 9x9, e pensavo che usando Laplace il modo più semplice sarebbe assegnare ad ogni posizione della matrice il suo complemento algebrico, ma questo comporterebbe una serie di matrici l'una dentro l'altra uguali al numero di righe-3... E' qualcosa di fattibile? Come si dichiarano? O esiste un modo più semplice?
PS:Non fatevi ingannare dal nick, sono un povero 16enne al suo primo anno di informatica che sta per perdere la ragione...

wisher
27-12-2005, 21:19
prova a farla in modo ricorsivo:
utilizza laplace, ma considera il complemento algebrico come una nuova matrice di cui calcolare il determinante

Dark_Sephirot86
27-12-2005, 21:25
prova a farla in modo ricorsivo:
utilizza laplace, ma considera il complemento algebrico come una nuova matrice di cui calcolare il determinante
E' proprio qui il fatto!
Come faccio?

Mettiamo di avere una "semplice" matrice 5x5: Ci troveremmo a scomporla in 5 matrici 4x4, ognuna delle quali diventerà 4 matrici 3x3, su cui applicherò Sarrus. Un totale di 20 matrici. Figuriamoci una matrice 8x8 o 9x9!

wisher
27-12-2005, 21:30
la tua funzione deve scorrere una linea, x ogni elemento della linea deve creare una matrice e poi passarla ricorsivamente a una copia della funzione.
se passi anke la dimensione in base a questa fai un ciclo x riempire la matrice se è maggiore di 3 altrimenti via di sarrus.

wisher
27-12-2005, 21:34
nn sapendo VB posso darti solo qualche dritta

crea una funzione
det(matrice,dim)
if dim==3
return sarrus
else
for i=0,i<dim,i++
ottieni con 2 cicli for la matrice complementare
det = det+matrice[i][0]*det(matr. compl.,dim-1)
return det

Dark_Sephirot86
27-12-2005, 21:49
nn sapendo VB posso darti solo qualche dritta

crea una funzione
det(matrice,dim)
if dim==3
return sarrus
else
for i=0,i<dim,i++
ottieni con 2 cicli for la matrice complementare
det = det+matrice[i][0]*det(matr. compl.,dim-1)
return det
Grazie, comincio a capirci qualcosa^_^ Domani ci provo