【发布时间】:2017-09-11 05:05:19
【问题描述】:
由于缺少 Latex 编辑器,这里是我希望使用 Sympy 绘制的分段函数的图片。我想传入两个系数数组和一个 x 值,然后评估它并绘制函数。 (编辑:p 比 alpha 多一个,图像已更新)
这是我迄今为止的尝试(alpha 和 p 是列表/数组,t 是一个数字):
def getf(alpha,p,t):
#Create the argument list of tuples for the SymPy.Piecewise function
argtuples = []
for n,number in enumerate(alpha):
if n == 0:
argtuples.append((p[0]*x, x<alpha[0]))
elif 0<n and n<list(enumerate(alpha))[-1][0]:
argtuples.append((p[0]*alpha[0] + Sum(p[i]*(alpha[i] - alpha[i-1]),(i,1,n)) + p[n+1]*(x-alpha[n]), alpha[n-1] <= x < alpha[n]))
else:
argtuples.append((p[0]*alpha[0] + Sum(p[i]*(alpha[i] - alpha[i-1]),(i,1,n)) + p[n+1]*(x-alpha[n]), x>=alpha[n]))
f = Piecewise(argtuples)
return f(t)
from sympy import Piecewise, Sum
from sympy.abc import x, i
getf([10000,50000,100000,1000000],[0.05,0.08,0.15,0.30,0.40],1000001)
但是,我收到错误消息“列表索引必须是整数或切片,而不是符号”。鉴于数组可以是任意长度,我如何引用传递给函数的系数值?
【问题讨论】: