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