Python之拉盖尔多项式

拉盖尔多项式简介

拉盖尔多项式是拉盖尔方程的标准解,但其更著名的应用是薛定谔方程在解氢原子的时候,其径向函数最后要乘上一个 L n − l − 1 2 l + 1 ( 2 r n a μ ) L^{2l+1}_{n-l-1}(\frac{2r}{na_\mu}) Lnl12l+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 ) -24.00000000000003 - 18.00000000000001 L_1(x) - 11.999999999999998 L_2(x) - 6.0 L_3(x) 24.0000000000000318.00000000000001L1(x)11.999999999999998L2(x)6.0L3(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表示截止误差。fullFalse时,只返回拟合系数,否则还返回拟合的标准差等。

>>> 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.])
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值