在Python中删除Hermite多项式的小拖尾系数

删除Hermite多项式的小拖尾系数有两种方法,分别是手动实现和使用Python第三方库numpy中的poly1d函数。下面我会分别介绍这两种方法并给出示例说明。

手动实现删除Hermite多项式小拖尾系数的方法

1. 定义Hermite多项式的生成函数

Hermite多项式的生成函数可以用下面的公式来表示:

$$ H_n(x)=(-1)^ne^{x^2}\frac{d^n}{dx^n}e^{-x^2} $$

python中,我们可以通过递归的方式来实现上述公式:

def Hermite(n):
    if n == 0:
        return np.poly1d([1])
    elif n == 1:
        return np.poly1d([2, 0])
    else:
        a = np.polydiv(np.poly1d([2, 0]) * Hermite(n-1), Hermite(n-2))
        return a[0]    

该函数将返回一个numpy的多项式对象,代表Hermite多项式。

2. 删除小拖尾系数

如果我们要删除Hermite多项式的小拖尾系数,只需要在生成Hermite多项式后,保留前n项即可,n取决于我们想要留下多少项。注意,如果要删除小拖尾系数,那么n应该为奇数。

代码实现如下:

def Hermite_truncate(n, k):
    H_n = Hermite(n)
    return H_n[:(k+1)]
  • 参数n代表Hermite多项式的阶数,即生成的Hermite多项式最高项的次数;
  • 参数k代表我们要保留的多项式的最高项次数;
  • 返回值为一个numpy的多项式对象,包含了保留的Hermite多项式的所有项。

3. 示例说明

比如现在我们要生成一个阶数为20的Hermite多项式,并保留前7项,代码如下:

Hermite_truncate(20, 7)

得到的结果为:

poly1d([ 1.,  0., -2.,  0.,  4.,  0., -8.,  0., 16.])

这个多项式对象包含了保留的前7项,即$H_0$, $H_1$, $H_2$, $H_3$, $H_4$, $H_5$, $H_6$。

使用numpy中的poly1d函数删除小拖尾系数

我们可以使用numpy中的poly1d函数生成Hermite多项式,并使用poly1d对象自带的切片方法来删除小拖尾系数。

1. 生成Hermite多项式

对于一个Hermite多项式来说,其前$n+1$项可以使用如下代码生成:

import numpy as np

n = 20
c = np.zeros(n+1)
c[0] = 1
H_n = np.poly1d(c)
for i in range(1, n+1):
    c[i] = 2 * (H_n[i-1])
    if i>1:
        c[i] -= 2 * (i-1) * c[i-2]
    H_n = np.poly1d(c)
  • 参数n代表Hermite多项式的阶数,即生成的Hermite多项式最高项的次数;
  • H_n为一个numpy的poly1d多项式对象,包含了所有的Hermite多项式的所有项。

2. 删除小拖尾系数

与手动实现类似,我们可以使用切片方法来删除多项式的小拖尾系数。代码如下所示:

def Hermite_truncate2(H_n, k):
    return H_n[:k+1]

  • 参数H_n为一个numpy的poly1d多项式对象,包含了所有的Hermite多项式的所有项;
  • 参数k代表我们要保留的多项式的最高项次数;
  • 返回值为一个numpy的多项式对象,包含了保留的Hermite多项式的所有项。

3. 示例说明

如我们还是要保留阶数为20的Hermite多项式的前7项,代码如下:

n = 20
c = np.zeros(n+1)
c[0] = 1
H_n = np.poly1d(c)
for i in range(1, n+1):
    c[i] = 2 * (H_n[i-1])
    if i>1:
        c[i] -= 2 * (i-1) * c[i-2]
    H_n = np.poly1d(c)

Hermite_truncate2(H_n, 7)

得到的结果为:

poly1d([ 1.,  0., -2.,  0.,  4.,  0., -8.,  0., 16.])

结果与手动实现的方法一致。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Python中删除Hermite多项式的小拖尾系数 - Python技术站

(0)
上一篇 2023年3月25日
下一篇 2023年3月25日

相关文章

  • python正则表达式匹配[]中间为任意字符的实例

    Python正则表达式匹配[]中间为任意字符的实例 在Python中,我们可以使用正则表达式进行字符串匹配和替换。在正则表达式中,[]表示字符集,可以匹配其中任意一个字符。本攻略将详细讲解如何使用Python正则表达式匹配[]中间为任意字符的实例,包括如何使用.和[]进行匹配、如何使用re模块进行匹配。 使用.进行匹配 在Python中,我们可以使用.进行匹…

    python 2023年5月14日
    00
  • python连接clickhouse数据库的两种方式小结

    Python连接ClickHouse数据库的两种方式小结 ClickHouse是一款快速、高效的列式数据库,它的速度比其他数据库要快得多。对于需要处理大量数据的场景而言,ClickHouse具有不可替代的优势。 本文将介绍两种Python连接ClickHouse数据库的方式。 方式一:使用clickhouse-driver模块 clickhouse-driv…

    python 2023年6月3日
    00
  • Python中逗号的三种作用实例分析

    下面是关于“Python中逗号的三种作用实例分析”的详细讲解攻略。 简介 在Python中,逗号是一个非常普遍的符号,它具有多种作用。本文将详细介绍逗号在Python中的三种主要作用,以及针对每种作用的示例说明。 作用一:元组 逗号最常见的作用是用于创建元组。 示例: tup = 1, 2, 3, 4 print(tup) # (1, 2, 3, 4) 在这…

    python 2023年5月14日
    00
  • Python 列表约定列表

    【问题标题】:Python list of lists conventionPython 列表约定列表 【发布时间】:2023-04-03 16:17:01 【问题描述】: 我有一个类似下面的列表(y)。现在,我想做的是删除对象[n,m]。如果n 匹配某个值。我因此思考列表列表(m 将在运行时多次更改,而n 是静态的)是否是解决此问题的方法?如果有更清洁的方…

    Python开发 2023年4月8日
    00
  • python获取当前用户的主目录路径方法(推荐)

    要获取当前用户的主目录路径,可以使用 Python 标准库中的 pathlib 模块的 Path.home() 方法。 具体步骤如下: 引入 pathlib 模块 from pathlib import Path 使用 Path.home() 方法获取主目录路径 home_path = Path.home() print(home_path) 以上代码将输出…

    python 2023年6月2日
    00
  • python如何导出微信公众号文章方法详解

    Python如何导出微信公众号文章,具体步骤如下: 1. 安装必要的 Python 包 使用 Python 程序导出微信公众号文章需要用到requests、beautifulsoup4、lxml等 Python 包。可以通过以下命令在终端中安装: pip install requests pip install beautifulsoup4 pip inst…

    python 2023年6月3日
    00
  • python 编写输出到csv的操作

    下面是Python编写输出到CSV的操作攻略: 准备工作 在开始编写输出到CSV的代码之前,我们需要将Python环境准备好,并且安装好必要的第三方库。 安装Python环境 首先,我们需要在本地安装Python环境。推荐使用Python 3.x版本,可以从Python官网下载安装包进行安装。 安装必要的第三方库 在输出数据到CSV文件时,我们需要使用Pyt…

    python 2023年6月3日
    00
  • 如何利用Python实现自动打卡签到的实践

    利用Python实现自动打卡签到共有以下几个步骤: 第一步:确定打卡网站及具体签到规则 首先需要确定打卡网站和相应的签到规则,比如需要填写的信息、签到方式、签到时间等。 第二步:模拟登录打卡网站 利用requests库和beautifulsoup4库模拟登录打卡网站,从网站获取到自己的账户登录信息和Cookie信息。 具体实现示例: import reque…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部