【发布时间】:2016-12-25 05:36:58
【问题描述】:
我有相当多的阶跃函数(大约 1000 个),每个阶跃函数只有两个间隔。我想总结它们,然后找到最大值。做这个的最好方式是什么?我试过sympy,代码如下:
from sympy import Piecewise, piecewise_fold, evalf
from sympy.abc import x
from sympy.plotting import *
import numpy as np
S = 20
t = np.random.random(20)
sum_piecewise = None
for s in range(S):
p = Piecewise((np.random.random(), x<t[s]), (np.random.random(), x>=t[s]))
if not sum_piecewise:
sum_piecewise = p
else:
sum_piecewise += p
print sum_piecewise.evalf(0.2)
但是,这会输出一个大的符号表达式,而不是我想要的实际值。
【问题讨论】:
-
evalf的参数是要计算的位数。如果要替换值,请使用subs(x, 0.2)或evalf(subs={x: 0.2})。