Quanto è utile/interessante questa discussione:  
  
    
      
        
          
            
              
                | Autore | 
                
Discussione | 
                  | 
               
              
                | 
                 ki4rett4 
                Nuovo Arrivato 
                 
                 
                
                
  
                 35 Messaggi  | 
                
                  
                    
                      
                       Inserito il - 02 febbraio 2011 :  13:34:34
                        
                        
                 
                        
                      
  | 
                     
                    
           	
                       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 
                  
                 
                
  
                 
                
               
  
                 156 Messaggi  | 
                
                  
                    
                      
                       Inserito il - 02 febbraio 2011 :  14:53:47
                        
                        
                 
                        
                      
  | 
                     
                    
                       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
 
 
   | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 ki4rett4 
                Nuovo Arrivato 
                 
                 
                
                 
                
               
  
                 35 Messaggi  | 
                
                  
                    
                      
                       Inserito il - 03 febbraio 2011 :  20:27:15
                        
                        
                 
                        
                      
  | 
                     
                    
                      |  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!! | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 chick80 
                Moderatore 
                      
                 
                
  
                 
                
                Città: Edinburgh 
               
  
                 11491 Messaggi  | 
                
                  
                    
                      
                       Inserito il - 03 febbraio 2011 :  20:33:45
                        
                        
                 
                        
                      
  | 
                     
                    
                       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+!) | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 ki4rett4 
                Nuovo Arrivato 
                 
                 
                
                 
                
               
  
                 35 Messaggi  | 
                
                  
                    
                      
                       Inserito il - 04 febbraio 2011 :  13:03:28
                        
                        
                 
                        
                      
  | 
                     
                    
                       Non so come ringraziarti chick80...ora mi esce correttamente ...iuuuuuuuuuuuuuuuuu 
   | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                |   | 
                
Discussione | 
                  | 
               
             
           | 
         
       
     | 
   
 
Quanto è utile/interessante questa discussione:  
  
    
      
        
          | MolecularLab.it | 
          © 2003-24 MolecularLab.it | 
            | 
         
       
     | 
   
 
     |