ラテックスエディタがないため、ここではSympyを使用してプロットしたい区分的な関数の画像を示します。私は係数の2つの配列とxの値を渡し、それを評価して関数をプロットしたいと思います。 (編集:アルファがあるよりも、正確に一つ以上のpがある、画像更新)SymPyの再帰的区分関数と係数のリスト/配列を合計する
これは、これまで(アルファおよび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)
しかし、私は "リストのインデックスは、シンボルではなく、整数またはスライスでなければならない"というエラーを受けています。どのように配列に任意の長さを与えることができるので、私は関数に渡した係数値を参照できますか?
ありがとう、これはSymPy.And()関数を助けました。しかし、引数リストを作成する前に、アルファの累積合計を計算するコードを書き直しました。 TypeError:__new __()は3つの位置引数をとりますが、7が与えられました すべてのアイデアなぜそれが勝利したのか私は累積合計を持っていると思います。 7つの議論を取る?ドキュメントでは、Piecewise()の間隔を任意に設定できるようです。 –
Piecewiseはどのように作成していますか?実際には、任意の数の引数をサポートしています。 TypeErrorは他のものから来ている可能性があります。 – asmeurer