2010-08-31 4 views
2

Mes maths dans ce domaine sont un peu instables. Est-ce que quelqu'un sait comment je peux calculer une puissance telle que 10^2.2 en utilisant aucune fonction mathématique autre que */- + et une boucle for? Je n'ai pas accès à une bibliothèque de maths (et je ne peux pas l'importer/l'inclure), mais j'ai besoin de calculer ces choses. Hmm .. peut-être que je devrais juste regarder comment la bibliothèque de maths le fait.Calculer l'exposant fractionnaire dans une boucle sans fonction de puissance

+1

Voir: http://stackoverflow.com/questions/164964/how-are-exponents-calculated. Question connexe (Fondamentalement, vous auriez besoin d'utiliser une extension de série et arrondir à un niveau désiré) – dirkgently

Répondre

4

Vous pouvez calculer les journaux & exponentielles en utilisant uniquement l'arithmétique de base avec une extension de série Taylor (ou Maclaurin). Donc, vous devriez être en mesure de tirer profit de certaines identités:

exp(ln(a)) = a 
ln(a^b) = b*ln(a) 
ln(1+x) = x - (x^2)/2 + (x^3)/3 - ... + ... 
exp(x) = 1 + x + (x^2)/2 + ... 

Voyez ce que vous pouvez faire de tout cela ...

+0

S'il n'a pas de bibliothèque de maths, alors il n'a probablement pas de fonctions de journal non plus – Seth

+2

@Seth C'est pourquoi il a besoin de la pour boucle. En d'autres termes, il le fait maintenant. – aaronasterling

1

Étant donné que:

a^(m/n) == nth_root(a)^m 

Convertissez votre exponent to a fraction, puis calculer la nth root, puis soulevez le résultat à la puissance de MTH.

(Vous devez écrire votre propre fonction pow.)

1

Exprimer l'exposant sous forme de fraction et séparer les deux parties (si les chiffres deviennent trop gros, vous pouvez utiliser l'expansion de fraction continue pour obtenir une bonne approximation) :

2,2 = 22/10 = 11/5

10^2,2 = 10^(11/5) = (10^11)^(1/5)

Les parties entières shouldn » t être un problème (voir http://en.wikipedia.org/wiki/Exponentiation_by_squaring). Ensuite, vous pouvez calculer la racine par l'un des algorithmes décrits ici: http://en.wikipedia.org/wiki/Nth_root_algorithm

Questions connexes