Page 1 sur 1

Opération avec log10(), résultat innatendu

Posté : 21 janv. 2009, 12:52
par VaN
Bonjour,

Voici le résultat que m'affiche mon opération, à base de log10() :
-1.#IND
Et voici l'operation :
function calculNbMensualites ($montantEmprunt, $mensualites, $taux) {
	$var1 = (($montantEmprunt * $taux / 12) / $mensualites) - 1;
	$var2 = 1 + ($taux / 12);
	$nbMensualites = log10($var1) / log10($var2);
	return $nbMensualites;
}
Je l'ai décomposé en variables intermédiaires, pour ne pas me prendre les pattes dans les parenthèses.

L'équation de départ est la suivante :
D = A * (B/12) / (1 - (1 + B/12)^-C)
Mon but était d'isoler C. j'en suis arrivé à :
C = log((A * B/12 / D) -1) / log(1 + B/12)
grâce à l'égalité
log X^n = n log X
A priori, je n'ai pas fait d'erreur de frappe, ni d'erreur de logique, alors j'aimerai savoir pourquoi PHP me sort ce résultat incompréhensible, qui doit être dû à une erreur.

Je précise de suite que dans mes formule mathématiques, j'écris log, qui en PHP est log10() (logarithme base 10, et non logarithme népérien, ou naturel).

Amis matheux, j'attends vos remarques : )

Posté : 21 janv. 2009, 22:32
par Aureusms
En décomposant je trouve :

Code : Tout sélectionner

D = A * (B/12) / (1 - (1 + B/12)^-C) D x 12 1 -------- = ------------------ A x B 1 - (1 + B/12)^-C A x B -------- = 1 - (1 + B/12) ^-C D x 12 A x B --------- - 1 = - (1 + B/12) ^-C D x 12 A x B 1 - --------- = (1 + B/12) ^-C D x 12 log ( 1 - (AxB/Dx12)) = -C x log (1 + B/12) log (1-(AxB/Dx12)) - ------------------------ = C log (1 + B/12)
Et tu as écris
C = log((A * B/12 / D) -1) / log(1 + B/12)
Est ce que je me trompe ? (mes cours de maths remonte à loin...)

Posté : 22 janv. 2009, 13:39
par VaN
Après test, le résultat est le même : -1.#IND

Posté : 24 janv. 2009, 12:06
par Aureusms
Après quelques recherches : http://www.w3schools.com/php/func_math_log10.asp

Visiblement selon log10(x), si le résultat est "-1.#IND", x est négatif.
Peut être une erreur dans la formule ?