|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2004
Messaggi: 55
|
[VB6] Matrici una dentro l'altra
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... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
prova a farla in modo ricorsivo:
utilizza laplace, ma considera il complemento algebrico come una nuova matrice di cui calcolare il determinante
__________________
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Aug 2004
Messaggi: 55
|
Quote:
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! |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
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.
__________________
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
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
__________________
Ultima modifica di wisher : 27-12-2005 alle 20:36. |
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: Aug 2004
Messaggi: 55
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:46.



















