文章目录

  • Hermite多项式
  • 求导和积分
  • 求根和反演
  • 拟合
  • 其他

Hermite多项式

Hermite多项式是一种非常重要的正交多项式,尤其在量子力学中,是谐振子的本征态,在物理学中,其定义为

Hn(x)=(−1)nex2dndxne−x2H_n(x)=(-1)^ne^{x^2}\frac{\text d^n}{\text dx^n}e^{-x^2} Hn​(x)=(−1)nex2dxndn​e−x2

其中nnn为厄密特多项式的阶数,在Python中,提供了Hermite类,构造函数为

numpy.polynomial.hermite.Hermite(coef, domain=None, window=None, symbol='x')

其中coef为系数列表a0,a1,⋯,ana_0, a_1,\cdots,a_na0​,a1​,⋯,an​,表示生成

∑i=0naiHi(x)\sum_{i=0}^n a_iH_i(x) i=0∑n​ai​Hi​(x)

domain表示xxx的定义域,window表示缩放系数。

from numpy.polynomial.hermite import Hermite
h3 = Hermite(coef=[4,3,2,1])
print(h3)
# 输出为4.0 + 3.0 H_1(x) + 2.0 H_2(x) + 1.0 H_3(x)

为了便于理解Hermite多项式到底是个啥,可以绘制一下不同阶数的Hermite多项式的函数

import matplotlib.pyplot as plt
for i in range(5):c = np.zeros(i+1)c[i] = 1h = Hermite(coef=c, domain=(-5,5))xs, ys = h.linspace()plt.plot(xs, ys, label=str(i))plt.legend()
plt.show()

其中h.linspace表示在定义域范围内对多项式进行采样,有一个参数n,表示在定义域范围内等间隔生成n组x,yx,yx,y,默认为100。

得图如下

求导和积分

Hermite支持简单的符号计算,比如可通过deriv(n)求多项式的n阶导数;通过integ(n)可求n阶积分,示例如下

>>> h3.deriv(1)
Hermite([6., 8., 6.], domain=[-1.,  1.], window=[-1.,  1.])
>>> h3.deriv(3)
Hermite([48.], domain=[-1.,  1.], window=[-1.,  1.])
>>> h3.integ(2)
Hermite([0.5       , 0.        , 0.5       , 0.125     , 0.04166667, 0.0125    ], domain=[-1.,  1.], window=[-1.,  1.])

求导后得到的系数可通过递推关系验证,

Hn′(x)=2nHn−1(x)H_{n}'(x) = 2nH_{n-1}(x) Hn′​(x)=2nHn−1​(x)

所以H3′(x)=6H2′(x)H_3'(x)=6H_2'(x)H3′​(x)=6H2′​(x),即上述计算是没毛病的。

求根和反演

roots可用于求根,而fromroot可根据根来生成Hermite多项式

rs = h3.roots()
print(rs)
# [-1.50000000e+00, -3.61717794e-16,  5.00000000e-01]
pNew = p3.fromroots(rs)
print(pNew)
# 0.49999999999999983 + 0.37499999999999994 H_1(x) +
# 0.25000000000000006 H_2(x) + 0.125 H_3(x)

可以发现rootsfromroots并非对称的关系。

拟合

Hermite类中同样提供了拟合函数fit,定义为

Hermite.fit(x, y, deg, domain=None, rcond=None, full=False, w=None, window=None, symbol='x')

其中domain, window, symbol不必赘述,其中x,y为待拟合多项式;deg为多项式的阶数。rcond表示截止误差。fullFalse时,只返回拟合系数,否则还返回拟合的标准差等。

>>> p3.fit(xs, ys, 3)
>>> xs, ys = h3.linspace()
>>> h3_3 = h3.fit(xs, ys, 3)
>>> print(h3_3)
3.999999999999998 + 3.000000000000002 H_1(x) + 1.9999999999999984 H_2(x) +
1.0000000000000002 H_3(x)
>>> h3_4 = h3.fit(xs, ys, 4)
>>> print(h3_4)
3.9999999999999916 + 3.0000000000000036 H_1(x) +
1.9999999999999896 H_2(x) + 1.0000000000000002 H_3(x) -
9.797539357718845e-16 H_4(x)

可见其拟合效果还是不错的。

其他

degree返回多项式的最高项次数,cutdeg可以对多项式的次数做阶段,例如

>>> h3.degree()
3
>>> h3.cutdeg(2)
Hermite([4., 3., 2.], domain=[-1.,  1.], window=[-1.,  1.])

Python之Hermite多项式相关推荐

  1. Python之勒让德多项式

    文章目录 勒让德多项式简介 求导和积分 求根和反演 拟合 勒让德多项式简介 Legendre多项式是一种非常重要的正交多项式,在物理学中有着广泛的应用,例如点电荷在空间中的激发电势就具备勒让德多项式的 ...

  2. 信息学奥赛一本通 1165:Hermite多项式

    [题目链接] ybt 1165:Hermite多项式 默认保留2位小数 [题目考点] 1. 函数 [题解代码] 解法1: #include <bits/stdc++.h> using na ...

  3. 信息学奥赛一本通(1165:Hermite多项式)

    1165:Hermite多项式 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 19861     通过数: 8815 [题目描述] 用递归的方法求Hermite多 ...

  4. Hermite多项式(信息学奥赛一本通-T1165)

    [题目描述] 用递归的方法求Hermite多项式的值 对给定的x和正整数n,求多项式的值,并保留两位小数. [输入] 给定的n和正整数x. [输出] 多项式的值. [输入样例] 1 2 [输出样例] ...

  5. 【C++】用递归函数实现Hermite多项式求值

    要求:用递归函数实现Hermite多项式求值.当x>1时,Hermite多项式定义为: 当输入实数x和整数n后,求出Hermite多项式前n项的值. #include <iostream& ...

  6. c++用递归法和迭代法编写函数求Hermite多项式前n项的值

    Hermite的定义为: 第一串代码是利用了递归的方法: #include<iostream> using namespace std; double Hermite(int n,doub ...

  7. python逻辑回归aic_基于R和Python 如何使用多项式和有序逻辑回归

    原标题:基于R和Python 如何使用多项式和有序逻辑回归 基于R和Python 如何使用多项式和有序逻辑回归 我们中的大多数对于回归的知识是有限的.其中,线性和逻辑回归是我们最喜欢的一种.作为一个有 ...

  8. 埃尔米特插值(等距节点,只用一个点的导数构造n+1阶Hermite多项式)Python实现

    函数 y=11+x2y=11+x2 y = \frac{1}{1+x^2} 埃尔米特插值 埃尔米特多项式构造方法有很多种. 这里只是用最简单的一种,通过均差来进行构造,最后再通过任意一个点的导数来计算 ...

  9. Python 模拟Hermite Polynomial厄米特多项式

    我们知道Hermite Polynomial是Hermite Differential Equation的解.Hermite Differential Equation的形式如下: d 2 y d x ...

最新文章

  1. JavaScript学习笔记 - 入门篇(1)- 准备
  2. php encode 数组,PHP中json_encode转换数组时要注意的地方
  3. 通过hibernate去调用存储过程
  4. 清华大学《操作系统》(七):虚拟存储、覆盖、交换
  5. [Ext JS 4] 实战之Grid, Tree Gird 动态添加行
  6. js字符串、数组处理方法、以及一些常用js方法
  7. J2ME移动应用开发实战视频教程
  8. 绝大多数程序员不会测试
  9. 仙剑奇侠传1-6珍藏版大合集
  10. 大数据的典型应用场景及展望-札记
  11. 用python解决放苹果问题_放苹果
  12. 为什么变量命名不建议用汉语拼音
  13. 简支梁模型振动位移matlab,不同移动载荷速度下简支桥梁的变形及振动响应研究...
  14. 恒定帧率30帧以上录制掉帧问题分析
  15. 东大22春政治学概论X《政治学概论》在线平时作业2_100分满分非答案
  16. Redis min-slaves-to-write
  17. Android 中高级面试题:Activity是如何实现LifecycleOwner的?
  18. 触控科技CEO陈昊芝谈移动游戏市场趋势变化
  19. linux nat和网桥多网卡,linux 双网卡 NAT共享上网
  20. 今日北方大部进入降水间歇期 南方仍多低温阴雨雪天气

热门文章

  1. 全国大学生数学建模竞赛【高教杯】- 竞赛题目汇总
  2. 基于Stm32f103软件iic利用SH1106驱动0.96寸OLED
  3. 基于Atmega16的人机交互实验
  4. 解决v2rayN的延迟是-1的问题
  5. win10 自启动设置无效
  6. 30岁后你会站在哪里?
  7. 基于STC89c52rc单片机的红外循迹小车
  8. 八上人教版计算机笔记,人教版八上物理笔记
  9. vant H5 公众号 拍照录像一次讲清楚
  10. exdark数据集论文阅读笔记