Python之Hermite多项式
文章目录
- 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)nex2dxndne−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∑naiHi(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)
可以发现roots
和fromroots
并非对称的关系。
拟合
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
表示截止误差。full
为False
时,只返回拟合系数,否则还返回拟合的标准差等。
>>> 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多项式相关推荐
- Python之勒让德多项式
文章目录 勒让德多项式简介 求导和积分 求根和反演 拟合 勒让德多项式简介 Legendre多项式是一种非常重要的正交多项式,在物理学中有着广泛的应用,例如点电荷在空间中的激发电势就具备勒让德多项式的 ...
- 信息学奥赛一本通 1165:Hermite多项式
[题目链接] ybt 1165:Hermite多项式 默认保留2位小数 [题目考点] 1. 函数 [题解代码] 解法1: #include <bits/stdc++.h> using na ...
- 信息学奥赛一本通(1165:Hermite多项式)
1165:Hermite多项式 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 19861 通过数: 8815 [题目描述] 用递归的方法求Hermite多 ...
- Hermite多项式(信息学奥赛一本通-T1165)
[题目描述] 用递归的方法求Hermite多项式的值 对给定的x和正整数n,求多项式的值,并保留两位小数. [输入] 给定的n和正整数x. [输出] 多项式的值. [输入样例] 1 2 [输出样例] ...
- 【C++】用递归函数实现Hermite多项式求值
要求:用递归函数实现Hermite多项式求值.当x>1时,Hermite多项式定义为: 当输入实数x和整数n后,求出Hermite多项式前n项的值. #include <iostream& ...
- c++用递归法和迭代法编写函数求Hermite多项式前n项的值
Hermite的定义为: 第一串代码是利用了递归的方法: #include<iostream> using namespace std; double Hermite(int n,doub ...
- python逻辑回归aic_基于R和Python 如何使用多项式和有序逻辑回归
原标题:基于R和Python 如何使用多项式和有序逻辑回归 基于R和Python 如何使用多项式和有序逻辑回归 我们中的大多数对于回归的知识是有限的.其中,线性和逻辑回归是我们最喜欢的一种.作为一个有 ...
- 埃尔米特插值(等距节点,只用一个点的导数构造n+1阶Hermite多项式)Python实现
函数 y=11+x2y=11+x2 y = \frac{1}{1+x^2} 埃尔米特插值 埃尔米特多项式构造方法有很多种. 这里只是用最简单的一种,通过均差来进行构造,最后再通过任意一个点的导数来计算 ...
- Python 模拟Hermite Polynomial厄米特多项式
我们知道Hermite Polynomial是Hermite Differential Equation的解.Hermite Differential Equation的形式如下: d 2 y d x ...
最新文章
- JavaScript学习笔记 - 入门篇(1)- 准备
- php encode 数组,PHP中json_encode转换数组时要注意的地方
- 通过hibernate去调用存储过程
- 清华大学《操作系统》(七):虚拟存储、覆盖、交换
- [Ext JS 4] 实战之Grid, Tree Gird 动态添加行
- js字符串、数组处理方法、以及一些常用js方法
- J2ME移动应用开发实战视频教程
- 绝大多数程序员不会测试
- 仙剑奇侠传1-6珍藏版大合集
- 大数据的典型应用场景及展望-札记
- 用python解决放苹果问题_放苹果
- 为什么变量命名不建议用汉语拼音
- 简支梁模型振动位移matlab,不同移动载荷速度下简支桥梁的变形及振动响应研究...
- 恒定帧率30帧以上录制掉帧问题分析
- 东大22春政治学概论X《政治学概论》在线平时作业2_100分满分非答案
- Redis min-slaves-to-write
- Android 中高级面试题:Activity是如何实现LifecycleOwner的?
- 触控科技CEO陈昊芝谈移动游戏市场趋势变化
- linux nat和网桥多网卡,linux 双网卡 NAT共享上网
- 今日北方大部进入降水间歇期 南方仍多低温阴雨雪天气