ラゲール多項式は以下で定義されます。
SageShellを起動して、関数L_kを定義します。
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
上で定義した関数は任意の k に対して、多項式を計算してくれます。k=2 の場合について計算してみます。
sage: L_k(x,2) (x^2*e^(-x) - 4*x*e^(-x) + 2*e^(-x))*e^x
うまく計算できているようですが、e^x が打ち消しあってないのでモヤモヤしてしまいます。
sage: L_k(x,2).expand() x^2 - 4*x + 2
はい、スッキリしました。
次に k を変化させるとグラフがどのように変わるかを見ていきます。
sage: l = [L_k(x,i).expand() for i in range(5)] sage: l [1, -x + 1, x^2 - 4*x + 2, -x^3 + 9*x^2 - 18*x + 6, x^4 - 16*x^3 + 72*x^2 - 96*x + 24]
以上で k=0 から 4 までの式がわかりました。Sage便利すぎますね。
式の具体的な形が分かったところで、グラフをプロットします。量子力学などでは x が正の場合について考えるらしいので で可視化します。
sage: p = [plot(l[i],(x,0,10)) for i in range(5)] sage: sum(p) Launched png viewer for Graphics object consisting of 5 graphics primitives
k ごとに色分けしてプロットし直します。
sage: c = ["red","blue","gray","green","purple"] sage: p = [plot(l[i],(x,0,10),thickness=3,color=c[i],legend_label="k={}".format(i)) for i in range(5)] sage: sum(p) Launched png viewer for Graphics object consisting of 5 graphics primitives
上手にできましたー。