求和的指数

时间:2018-06-29 17:45:53

标签: python math

我是一个非常新的python用户。 我正在尝试计算总和的指数。数组具有更多参数。

import math

a = [[1, 2, 3, 4],
     [5, 6, 7, 8]]

def y(i):
    p = 2
    total = 0
    for j in range (4):
        total += math.exp(a[i][j] * (p**j))

    return total

此方法的答案:7.89629603455e+13

答案与下面的手动计算方式大不相同:

y = math.exp(1*(2**0) + 2*(2**1) + 3*(2**2) + 4*(2**3))

答案:1.9073465725e+21

Equation

2 个答案:

答案 0 :(得分:1)

import math

a = [[1, 2, 3, 4],
     [5, 6, 7, 8]]

def y(i):
    p = 2
    total = 1
    for j in range (4):
        total *= math.exp(a[i][j] * (p**j))
    return total

相同底数的指数乘以与幂值求和相同。

exp(a+b)=exp(a)*exp(b)

代码优化:

import math

a = [[1, 2, 3, 4],
     [5, 6, 7, 8]]

def y(i):
    p = 2
    total = 0
    for j in range (4):
        total += a[i][j] * (p**j)
    return math.exp(total)

答案 1 :(得分:1)

您的错误似乎不是python错误,而是分解方程式时的数学错误。您可以进行以下两项更改之一:

解决方案1:首先求和,然后取总数的e ^

import math

a = [[1, 2, 3, 4],
     [5, 6, 7, 8]]

def y(i):
    p = 2
    total = 0
    for j in range (4):
        total += a[i][j] * (p**j)

    return math.exp(total)

解决方案2:正确分解指数并将total + =更改为total * =

import math

a = [[1, 2, 3, 4],
     [5, 6, 7, 8]]

def y(i):
    p = 2
    total = 0
    for j in range (4):
        total *= math.exp(a[i][j] * (p**j))

    return total

解决方案1效率更高,因为它不会重复调用math.exp()