文章目录
- 拉盖尔多项式简介
- 微分与积分
- 求根和反演
- 采样和拟合
拉盖尔多项式简介
拉盖尔多项式是拉盖尔方程的标准解,但其更著名的应用是薛定谔方程在解氢原子的时候,其径向函数最后要乘上一个 L n − l − 1 2 l + 1 ( 2 r n a μ ) L^{2l+1}_{n-l-1}(\frac{2r}{na_\mu}) Ln−l−12l+1(naμ2r),此即拉盖尔多项式,其中 n , l n,l n,l什么的是量子数。
Numpy
中提供了拉盖尔多项式的类Laguerre
,其构造函数为
Laguerre(coef, domain=None, window=None, symbol='x')
其中coef
为多项式的系数,例如
4
+
3
x
+
2
x
2
+
x
3
4+3x+2x^2+x^3
4+3x+2x2+x3可写为
from numpy.polynomial import laguerre
L3 = laguerre.Laguerre(coef=[4,3,2,1])
print(L3)
# 4.0 + 3.0 L_1(x) + 2.0 L_2(x) + 1.0 L_3(x)
domian
为
x
x
x的定义域,window
为定义域的放缩因子;symbol
为多项式的自变量符号,默认为x
。
微分与积分
Laguerre
支持简单的符号计算,比如可通过deriv(n)
求多项式的n
阶导数;通过integ(n)
可求n
阶积分。
>>> L3.deriv(1) # 系数变为 -6,-3,-1
Laguerre([-6., -3., -1.], domain=[0., 1.], window=[0., 1.])
>>> L3.deriv(3) # 3阶导数,系数变为为-1
Laguerre([-1.], domain=[0., 1.], window=[0., 1.])
>>> L3.integ(2) # 2阶积分,系数变为4, -5, 0, 0, 0, 1
Laguerre([ 4., -5., 0., 0., 0., 1.], domain=[0., 1.], window=[0., 1.])
求根和反演
roots
可用于求根,而fromroot
可根据根来生成多项式
>>> rs = L3.roots()
>>> print(rs)
[1.51738708 4.31158313 9.17102979]
>>> pNew = L3.fromroots(rs)
>>> print(pNew)
-24.00000000000003 - 18.00000000000001 L_1(x) -
11.999999999999998 L_2(x) - 6.0 L_3(x)
可见,对于拉盖尔多项式而言,求根和反演并不完全互为逆过程。
采样和拟合
通过linspace
可以在定义域范围内对多项式进行采样,
import matplotlib.pyplot as plt
xs, ys = L3.linspace()
plt.plot(xs, ys)
plt.show()
效果为
linspace
有一个参数n
,表示在定义域范围内等间隔生成n
组
x
,
y
x,y
x,y,默认为100。
Laguerre
类中最强大的函数非fit
,其功能是基于最小二乘法的拉盖尔多项式拟合,构造函数为
Polynomial.fit(x, y, deg, domain=None, rcond=None, full=False, w=None, window=None, symbol='x')
其中domain
, window
, symbol
不必赘述,其中x,y
为待拟合多项式;deg
为多项式的阶数。rcond
表示截止误差。full
为False
时,只返回拟合系数,否则还返回拟合的标准差等。
>>> L3.fit(xs, ys, 3)
Laguerre([4., 3., 2., 1.], domain=[0., 1.], window=[0., 1.])
>>> p3.fit(xs, ys, 4)
Laguerre([ 4.00000000e+00, 3.00000000e+00, 2.00000000e+00, 1.00000000e+00,
-4.19501684e-12], domain=[0., 1.], window=[0., 1.])