真实基数和实指数的幂函数

时间:2015-03-08 12:58:47

标签: python base exp

我需要在Python中编写一个power函数,它可以使用真实的基数和实数。

  

a ^ b&& a,b∈R

我陷入了困境:

def power_real_numbers(base, exp):

  if isinstance(exp, int):
      return power_bin_recursive(base, exp)
  else:
      integer = int(exp)
      rational = int(str(exp).split('.')[1])

  #power_bin_recursive() works fine
  intval = power_bin_recursive(base, integer)
  ratval = math.sqrt(rational)

  if exp == 0:
       return 1
  elif exp < 0:
       val = intval / ratval
  else:
       val = intval * ratval
  return val

这只适用于真正的基础。使用实数exp,数字不同,例如:

7.5 ^ 2.5 = 154.046969298, output by power_real_numbers is 125.778823734
7.5 ^ 0.5 = 2.73861278753, output by power_real_numbers is 2.2360679775
7.5 ^ -2.5 = 0.00649152660747, output by power_real_numbers is 0.00795046392

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

要拆分浮点数的整数和小数部分,请使用math.modf

>>> import math
>>> fractional, integer = math.modf(5.5)
>>> fractional
0.5
>>> integer
5.0

答案 1 :(得分:0)

您使用错误的条件来计算实数指数。您的解决方案可以满足您的结果。

真: 7.5 ^ 2.5 = 154.046969298

您的计划: 7.5 ^ 2 * sqrt(5)= 125.778823734