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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Opération avec log10(), résultat innatendu

par Aureusms » 24 janv. 2009, 12:06

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 ?

par VaN » 22 janv. 2009, 13:39

Après test, le résultat est le même : -1.#IND

par Aureusms » 21 janv. 2009, 22:32

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...)

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

par VaN » 21 janv. 2009, 12:52

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 : )