以前、Sageを使ってラゲール多項式を実装しました。
プログラムを再掲します。
x = var('x') def L_k(x,k): f = x^k*exp(-x) for i in range(k): f = derivative(f,x) return exp(x)*f
で定義されるので、ラゲール多項式のときと同じような感じで実装できます。
def L_k_s(x,k,s): f = L_k(x,k) for i in range(s): f = derivative(f,x) return f
L_k の実装と見分けつかないですね。
次に L_k_s を利用して k=0,1,2,3 のときの多項式を求めてみます。
sage: l = [[L_k_s(x,k,s).expand() for s in range(k+1)] for k in range(3+1)] sage: l [[1], [-x + 1, -1], [x^2 - 4*x + 2, 2*x - 4, 2], [-x^3 + 9*x^2 - 18*x + 6, -3*x^2 + 18*x - 18, -6*x + 18, -6]]
sage shell だとリストを要素ごとに改行して表示してくれるので、多項式が格納されている様子が明確です。例えば の具体的な形を知りたい場合は
sage: l[3][1] -3*x^2 + 18*x - 18
とすれば十分です。
最後に s の値ごとに色分けをしたグラフをプロットします。
sage: c = ["red","blue","green","purple"] sage: p = [[plot(l[k][s],(x,0,10),thickness=2,color=c[s],legend_label="k={},s={}".format(k,s)) for s in range(k+1)] for k in range(3+1)] sage: graphics_array([[sum(p[0]),sum(p[1])],[sum(p[2]),sum(p[3])]]) Launched png viewer for Graphics Array of size 2 x 2
結果は以下のとおりです。