Matlab strano risultato

Linux1987
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
Raptorista1
Non è che una delle due è memorizzata con numeri interi e l'altra con double?
Potresti presentare lo script?

Linux1987
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

Linux1987
adesso basta che calcoli l'inversa con questa di una matrice A e dopo la calcoli con inv, e confronta i risultati

Raptorista1
È 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
Inv(A) == inv(A)

Linux1987
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?

Raptorista1
Di nuovo: questione di errore di approssimazione!

Linux1987
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 !!

Raptorista1
Ok ma hai dimostrato in un modo ancora migliore del mio che i numeri non sono gli stessi.
Direi che questo è più che sufficiente!

Linux1987
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?'

Raptorista1
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!

dissonance
[xdom="dissonance"]@pasqualinux: Elimina il titolo in maiuscolo per favore (vedi regolamento).

regole-generali-di-matematicamente-it-forum-t26457.html

Grazie[/xdom]

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.