Matlab strano risultato
Salve ho sviluppato una function matlab per il calcolo dell'inversa , se visualizzo i risultati rispetto alla function di matlab inv, questi sono numericamente uguali, in tutti i formati di visualizzazione, mentre se utilizzo l'operatore di uguaglianza di due matrici oppure la function isequal mi dice che le due inverse sono diverse.. Ripeto che i numeri che ottengo sono gli stessi , sia con la function inv , che con la function che ho creato io. Qualcuno saprebbe darmi una spiegazione?
Risposte
Non è che una delle due è memorizzata con numeri interi e l'altra con double?
Potresti presentare lo script?
Potresti presentare lo script?
allora la mia function è questa calcola la matrice inversa utilizzando la fattorizzazione LU e la risoluzione di sistemi di equazioni lineari multipli:
function[ Inv ]= Inversa(A)
[L U ipiv]=lu(A,'vector');
I=eye(size(A,1));
Inv=zeros(size(A,1));
I=I(ipiv,:);
for i=1:size(A,1)
p=L\I(:,i);
Inv(:,i)=U\p;
end
end
function[ Inv ]= Inversa(A)
[L U ipiv]=lu(A,'vector');
I=eye(size(A,1));
Inv=zeros(size(A,1));
I=I(ipiv,:);
for i=1:size(A,1)
p=L\I(:,i);
Inv(:,i)=U\p;
end
end
adesso basta che calcoli l'inversa con questa di una matrice A e dopo la calcoli con inv, e confronta i risultati
È solo una questione di approssimazione: usa il comando "format long" per vedere più decimali e vedrai che in alcuni casi non tutte le cifre sono uguali.
Puoi vedere quali sono i numeri diversi con l'espressione
Puoi vedere quali sono i numeri diversi con l'espressione
Inv(A) == inv(A)
No ,se uso format long, mi trovo tutte le cifre decimali uguali, mentre se visualizzo la rappresentazione binaria ieee754 , mi trovo che i numeri differiscono . Come si spiega?
Di nuovo: questione di errore di approssimazione!
Ti ho risposto perchè tu mi hai detto che con format long dovrei vedere cifre decimali diverse, ma non è cosi, le cifre diverse le vedo solo con la rappresentazione ieee754 del numero. Sarà un errore di approssimazione sicuramente ma il comando format long non lo dimostra !!
Ok ma hai dimostrato in un modo ancora migliore del mio che i numeri non sono gli stessi.
Direi che questo è più che sufficiente!
Direi che questo è più che sufficiente!
sicuramente !! Però se la rappresentazione in memoria è diversa le cifre decimali dovrebbero essere diversa perchè la mantissa ieee754 binaria trasformata in decimale dovrebbe essere diversa !! perchè questo non accade ?' problema di matlab?'
Non sono esperto su come sia la rappresentazione, ma forse nemmeno format long mostra tutte le cifre decimali.
Prova col formato esponenziale, oppure prova a cambiare matrici!
Prova col formato esponenziale, oppure prova a cambiare matrici!
[xdom="dissonance"]@pasqualinux: Elimina il titolo in maiuscolo per favore (vedi regolamento).
regole-generali-di-matematicamente-it-forum-t26457.html
Grazie[/xdom]
regole-generali-di-matematicamente-it-forum-t26457.html
Grazie[/xdom]