在Maxima中,如何表示Hermite多项式的递归?

Joh*_*den 2 recurrence maxima hermite polynomials

我试图告诉maxima有关hermite多项式的递归关系:

我的第一个表达是这样的:

phi[0]:exp(-1/2*x^2);

phi[1]:sqrt(2)*x*phi[0];

wxplot2d([phi[0],phi[1]], [x,-5,5]);
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,但我现在要通过以下方式定义所有其他内容:

phi[n]:sqrt(2/n)*x*phi[n-1] - sqrt((n-1)/n)*phi[n-2];
Run Code Online (Sandbox Code Playgroud)

这只是炸弹(堆栈溢出).我真的想这么说

wxplot2d(phi [10],[x,-5,5])会给我一个明智的图片吗?

Rob*_*ier 5

处理这个问题的方法不止一种.这是一种有效的方法.

(%i2) phi[n](x) := sqrt(2/n)*x*phi[n-1](x) - sqrt((n-1)/n)*phi[n-2](x) $
(%i3) phi[0] : lambda ([x], exp(-1/2*x^2)) $
(%i4) phi[1] : lambda ([x], sqrt(2)*x*phi[0](x)) $
(%i5) phi[0];
(%o5) lambda([x],exp((-1)/2*x^2))
(%i6) phi[1];
(%o6) lambda([x],sqrt(2)*x*phi[0](x))
(%i7) phi[2];
(%o7) lambda([x],sqrt(2)*x^2*%e^-(x^2/2)-%e^-(x^2/2)/sqrt(2))
(%i8) phi[3];
(%o8) lambda([x],
         sqrt(2)*x*(sqrt(2)*x^2*%e^-(x^2/2)-%e^-(x^2/2)/sqrt(2))/sqrt(3)
          -2*x*%e^-(x^2/2)/sqrt(3))
(%i9) phi[10];
       <very large expression here>
(%i10) plot2d (%, [x, -5, 5]);
       <nice plot appears>
Run Code Online (Sandbox Code Playgroud)

这利用了所谓的数组函数.对于任何整数n,phi[n]都是lambda表达式(未命名函数).

请注意,这仅适用于文字整数(例如,0,1,2,3,...).如果你需要使用的phi[n]地方n是一个符号,我们可以寻找不同的方法.