所以,如果我这样做
import sympy as sp
import numpy as np
u = np.random.uniform(0, 1, 10)
w, k = sp.symbols('w k')
l = sum(1 - sp.log(k + w) + sp.exp(k + w) for k in u)
我得到了我想要的东西(u
的符号和作为w
的函数)。但是,编写
f = 1 - sp.log(k + w) + sp.exp(k + w)
l = sum(f for k in u)
但后来我
10*exp(k + w) - 10*log(k + w) + 10
发生了什么事?有没有办法得到我想要的金额? (SymPy有几种求和整数的方法,但我没有找到一个用于数组的方法)(版本:Python 2.7.6,NumPy 1.8.1,SymPy 0.7.4.1)
答案 0 :(得分:2)
问题是没有为每个f
评估k
。试试这个:
sum([f.subs(dict(k=k)) for k in u])
它会给你正确的结果。使用subs()
强制对f
的每个值进行k
的评估。
答案 1 :(得分:0)
将f作为返回结果计算的函数,需要在此处进行,以使其按照您的方式工作。
f = lambda k,w : 1 - sp.log(k + w) + sp.exp(k + w)
l = sum(f(k,w) for k in u)