Je ne peux pas comprendre pourquoi la division par 0 donne des résultats différents dans les deux cas suivants. amort
est une fonction qui calcule un programme d'amortissement constant. La seule chose que nous soucions est maintenant que le dernier élément de A est exactement 0.Division Matlab par 0: Inf ou -Inf
amort = @(r,M) ((1+r).^(0:M)' - (1+r).^M) ./ (1-(1+r).^M)
A = amort(0.03, 20);
>> A(end)==0
ans =
1
Ce qui semble étrange est la suivante:
>> 1/0
ans =
Inf
>> 1/A(end)
ans =
-Inf
Cependant
>> sign(A(end))
ans =
0
>> 1/abs(A(end))
ans =
Inf
Comment est-ce possible et pourquoi? Y a-t-il une sorte de "signe" caché?
Copie possible de [Pourquoi Gnu Octave a-t-il des zéros négatifs?] (Http://stackoverflow.com/questions/2109755/why-does-gnu-octave-have-negative-zeroes) – excaza
Alors que le doublon fait référence à Octave, la réponse acceptée concerne MATLAB et le format IEEE-754. – excaza
'A (fin)' est un zéro négatif. 'fprintf ('% f \ n', A (fin))' retourne '-0.000000' – excaza