Алгоритм решения десятичных показателей без дробей

Может ли кто-нибудь объяснить шаги, необходимые для решения чего-то вроде 2 ^ 2,2, если нельзя использовать дроби, например, в вычислении с бесконечной точностью?


person Kevin Markson    schedule 25.03.2012    source источник
comment
Что вы подразумеваете под дробями в данном контексте? Типичный подход к вычислению произвольных мощностей состоит в том, чтобы пройти через логарифмическую область.   -  person Oliver Charlesworth    schedule 26.03.2012
comment
@OliCharlesworth Я имею в виду, что без необходимости преобразования десятичного числа в дробь для решения все примеры, которые я видел для десятичных показателей, всегда будут включать изменение десятичного показателя степени на дробь. Например, если бы вы вычисляли 2^2,2 на листе бумаги без калькулятора, как бы вы вычислили 2^(1/5)?   -  person Kevin Markson    schedule 26.03.2012


Ответы (2)


В общем случае a^b, где ^ — возведение в степень (не исключающее ИЛИ), а a и b — действительные числа:

pow(a,b) = exp( b * log(a) ) 
exp(x)   = sum[n = 0->inf]  x^n / n!
ln(x)    = sum[n = 1->inf]  (x-1)^n / n
x^n      = n == 0  ? 1   // unless x == 0
          (n%2==0) ? x^(n/2) * x^(n/2) 
          othewrwise x*x^(n-1)  
          // faster than loop for large n, 

Это требует двух рядов, которые вам нужно завершить с определенной точностью, но возведение в степень только с натуральными числами.

Вам также придется иметь дело со знаком a и b (a^-b = 1/(a^b)), нулевыми значениями и т.д.

person peterchen    schedule 26.03.2012

Типичная реализация pow(x,y) (то есть x^y) включает вычисление exp(y*log(x)). Без участия дробей.

person Oliver Charlesworth    schedule 26.03.2012