Forum

Nome Utente:
Password:
Riconoscimi automaticamente
 Tutti i Forum
 MolecularLab
 Bioinformatica
 [R] determinare se una matrice è simmetrica
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi Aggiungi ai Preferiti Aggiungi ai Preferiti
Cerca nelle discussioni
I seguenti utenti stanno leggendo questo Forum Qui c'è:

Aggiungi Tag Aggiungi i tag

Quanto è utile/interessante questa discussione:

Autore Discussione  

ki4rett4
Nuovo Arrivato



35 Messaggi

Inserito il - 02 febbraio 2011 : 13:34:34  Mostra Profilo  Visita l'Homepage di ki4rett4 Invia a ki4rett4 un Messaggio Privato  Rispondi Quotando
Ragazzi anche quest' esercizio in R non si trova eppure pensavo di averlo svolto correttamente, non capisco dove sia l' errore!!Spero che qualcuno possa guidarmi i questa difficile ricerca!!Grazie a tutti ancora
L' esercizio è:
Scrivere una funzione, isSimmetrica(m), che restituisce TRUE se la matrice quadrata data in input è una matrice simmetrica, FALSE altrimenti. Una matrice quadrata si dice simmetrica se gli elementi simmetrici rispetto alla diagonale principale sono uguali (cioè se m[i,j]== m[j,i] per ogni i e j).

Io l' ho svolto così:
isSimmetrica<-function(m){
righe<-c(1:nrow(m))
colonne<-c(1:ncol(m))
for(i in righe){
for(j in colonne){
if(m[i,j]==m[j,i]){
condizione<-TRUE
}else{
condizione<-FALSE
}
}
}
return(condizione)
}

Come esempio di matrice quadrata simmetrica ho utilizzato questa, giusto per provare l' esercizio e mi dà TRUE, ma anche utilizzando una matrice non simmetrica mi dà TRUE....quindi non saprei...
x<-c(1,2,3,2,0,5,3,5,6)
m<-matrix(x,3)

[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 0 5
[3,] 3 5 6

Glubus
Utente Junior

pinolo



156 Messaggi

Inserito il - 02 febbraio 2011 : 14:53:47  Mostra Profilo  Visita l'Homepage di Glubus Invia a Glubus un Messaggio Privato  Rispondi Quotando
prova a wrappare questa idea

all(m==t(m))


Stefano

Citazione:
Messaggio inserito da ki4rett4

Ragazzi anche quest' esercizio in R non si trova eppure pensavo di averlo svolto correttamente, non capisco dove sia l' errore!!Spero che qualcuno possa guidarmi i questa difficile ricerca!!Grazie a tutti ancora
L' esercizio è:
Scrivere una funzione, isSimmetrica(m), che restituisce TRUE se la matrice quadrata data in input è una matrice simmetrica, FALSE altrimenti. Una matrice quadrata si dice simmetrica se gli elementi simmetrici rispetto alla diagonale principale sono uguali (cioè se m[i,j]== m[j,i] per ogni i e j).

Io l' ho svolto così:
isSimmetrica<-function(m){
righe<-c(1:nrow(m))
colonne<-c(1:ncol(m))
for(i in righe){
for(j in colonne){
if(m[i,j]==m[j,i]){
condizione<-TRUE
}else{
condizione<-FALSE
}
}
}
return(condizione)
}

Come esempio di matrice quadrata simmetrica ho utilizzato questa, giusto per provare l' esercizio e mi dà TRUE, ma anche utilizzando una matrice non simmetrica mi dà TRUE....quindi non saprei...
x<-c(1,2,3,2,0,5,3,5,6)
m<-matrix(x,3)

[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 0 5
[3,] 3 5 6


Torna all'inizio della Pagina

ki4rett4
Nuovo Arrivato



35 Messaggi

Inserito il - 03 febbraio 2011 : 20:27:15  Mostra Profilo  Visita l'Homepage di ki4rett4 Invia a ki4rett4 un Messaggio Privato  Rispondi Quotando
No il problema stefano è che l' esercizio devo svolgerlo con un ciclo for poichè il professore non ci ha fatto studiare tutte le funzioni ma solo alcune. Grazie mille comunque!!
Torna all'inizio della Pagina

chick80
Moderatore

DNA

Città: Edinburgh


11491 Messaggi

Inserito il - 03 febbraio 2011 : 20:33:45  Mostra Profilo  Visita l'Homepage di chick80 Invia a chick80 un Messaggio Privato  Rispondi Quotando
Il problema è che tu passi sempre tutti gli elementi della matrice!

Quindi basta che la condizione sia true per l'ultimo elemento e la tua funzione restituirà true!

Per avere il comportamento corretto basta uscire dal ciclo non appena trovi un elemento che non soddisfa la condizione (tanto se ce n'è anche solo 1 non buono la matrice non è simmetrica).

Quindi invece di:


else
   {
   condizione<-FALSE
   }


basterà usare:


else
   {
   condizione<-FALSE
   break;
   }


break uscirà immediatamente dal ciclo for, facendoti restituire il giusto valore.

Ovviamente questo è un metodo molto meno efficiente di quello proposto da Stefano.


Sei un nuovo arrivato?
Leggi il regolamento del forum e presentati qui

My photo portfolio (now on G+!)
Torna all'inizio della Pagina

ki4rett4
Nuovo Arrivato



35 Messaggi

Inserito il - 04 febbraio 2011 : 13:03:28  Mostra Profilo  Visita l'Homepage di ki4rett4 Invia a ki4rett4 un Messaggio Privato  Rispondi Quotando
Non so come ringraziarti chick80...ora mi esce correttamente...iuuuuuuuuuuuuuuuuu
Torna all'inizio della Pagina
  Discussione  

Quanto è utile/interessante questa discussione:

 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi Aggiungi ai Preferiti Aggiungi ai Preferiti
Cerca nelle discussioni
Vai a:
MolecularLab.it © 2003-18 MolecularLab.it Torna all'inizio della Pagina