我是一个非常新的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
答案 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()