2010-08-31 3 views
2

Мои математики в этой области немного шаткие. Кто-нибудь знает, как я могу вычислить мощность, такую ​​как 10^2.2, без каких-либо математических функций, кроме */- + и цикла for? У меня нет доступа к библиотеке математики (и не могу импортировать/включать ее), но нужно рассчитать эти вещи. Хм .. может быть, мне стоит просто посмотреть, как это делает математическая библиотека.Вычислить дробную экспоненту в цикле без функции питания

+1

См. Http://stackoverflow.com/questions/164964/how-are-exponents-calculated. Связанный с этим вопрос. (В принципе, вам нужно будет использовать расширение серии и округлить на желаемом уровне) – dirkgently

ответ

4

Вы можете вычислить журналы & экспоненты, используя только базовую арифметику с расширением серии Taylor (или Maclaurin). Таким образом, вы должны быть в состоянии воспользоваться преимуществами некоторых тождеств:

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

Посмотрите, что вы можете сделать из всего этого ...

+0

Если у него нет математической библиотеки, то у него, вероятно, нет функций журнала – Seth

+2

@Seth Вот почему он нуждается в петля. Другими словами, Он делает это сейчас. – aaronasterling

1

Учитывая, что:

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

Преобразование exponent to a fraction, затем вычислить nth root, а затем поднять результат в М-й степени.

(Вы должны написать свою собственную pow функцию.)

1

Выразите показатель как фракция и отдельные оба части (если число становится слишком большим, то вы можете использовать непрерывную дробь, чтобы получить хорошее приближение) :

2,2 = 22/10 = 11/5

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

целых частей не должен» t проблема (см. http://en.wikipedia.org/wiki/Exponentiation_by_squaring). Затем вы можете вычислить корень одним из описанных здесь алгоритмов: http://en.wikipedia.org/wiki/Nth_root_algorithm