Matlab e funzioni
salve a tutti,
ho un piccolo problema con le funzioni matlab...
il primo esercizio dice: scrivere una funzione che date 2 matrici $A,B \in R^{nxn}$ si dica se la loro somma è una matrice identità...
io ho provato a scrivere qualcosa del genere:
function [ident]=ident(A, B);
S=A+B;
if diag(S)==(non so cosa scrivere) & S'==S
ident=1;
else
ident=0;
end
Molto probabilmente ho scritto un sacco di cavolate ma vi prego di correggermi...
ne approfitto per scrivere anche un'altra traccia di cui però non ho provato a fare niente...
Scrivere una funzione MATLAB che data una matrice $A \in R^(nxn)$ dica se è persimmetrica, dove per persimmetrica s'intende una matrice che è dimmetrica rispetto alla diagonale secondaria. (cioè $a_{i,j} =a_{n-j+1,n-i+1} ).
Grazie a tutti quelli che mi daranno una mano...
ciao a presto..
ho un piccolo problema con le funzioni matlab...
il primo esercizio dice: scrivere una funzione che date 2 matrici $A,B \in R^{nxn}$ si dica se la loro somma è una matrice identità...
io ho provato a scrivere qualcosa del genere:
function [ident]=ident(A, B);
S=A+B;
if diag(S)==(non so cosa scrivere) & S'==S
ident=1;
else
ident=0;
end
Molto probabilmente ho scritto un sacco di cavolate ma vi prego di correggermi...
ne approfitto per scrivere anche un'altra traccia di cui però non ho provato a fare niente...
Scrivere una funzione MATLAB che data una matrice $A \in R^(nxn)$ dica se è persimmetrica, dove per persimmetrica s'intende una matrice che è dimmetrica rispetto alla diagonale secondaria. (cioè $a_{i,j} =a_{n-j+1,n-i+1} ).
Grazie a tutti quelli che mi daranno una mano...
ciao a presto..
Risposte
perché controlli solo la diagonale di S? devi controllarla tutta. Per costruire la matrice identità nxn usa eye(n)
"Splair":
il primo esercizio dice: scrivere una funzione che date 2 matrici $A,B \in R^{nxn}$ si dica se la loro somma è una matrice identità...
Farei così:
function [ident] = ident(A,B) n=size(A); if(n(1)!=n(2)) ident=0; return else n=n(1); end if(norm(A+B-eye(n))<eps) ident=1; return else ident=0; return end
settando eps in modo che sia di grandezza sensata (non troppo piccolo altrimenti ti ritorna sempre falso a parte che per matrici di interi ne tr. grande per il motivo opposto).
*** EDIT ***
Non ho provato a far girare questo codice per cui potrebbe anche contenere degli errori, ma l'idea è quella...