在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日

相关文章

  • pygame学习笔记(4):声音控制

    本文将详细讲解“pygame学习笔记(4):声音控制”的完整攻略,内容包括: 声音的基本概念 pygame中声音的操作 示例说明 声音的基本概念 声音是一种机械波在空气中的传播形式,它在媒介中传播时产生的压缩和膨胀形成了声波,人听到的声音就是因为声波的压缩和膨胀作用人的耳膜而产生的。在计算机中,声音通常以“采样率”和“位深”两个参数来表示。采样率表示每秒采集…

    python 2023年6月6日
    00
  • Python学习笔记之抓取某只基金历史净值数据实战案例

    以下是“Python学习笔记之抓取某只基金历史净值数据实战案例”的完整攻略: 步骤1:导入必要的库 在开始之前,需要导入必要的库。在这个案例中,我们需要使用requests库来发送HTTP请求,使用BeautifulSoup库来解析HTML页面。 import requests from bs4 import BeautifulSoup 步骤2:发送HTTP…

    python 2023年5月14日
    00
  • python正则表达式查找和替换内容的实例详解

    Python正则表达式查找和替换内容的实例详解 正则表达式是一种强大的文本处理工具,可以用于各种文本处理任务,如数据清洗、文本分析、信息提取等。在Python中,我们可以使用re模块来操作正则表达式。本攻略将详细讲解Python正则表达式中查找和替换内容实例,包括re模块中的findall()、search()、sub()等函数的用法,以及常用的正则表达式语…

    python 2023年5月14日
    00
  • Python使用for实现无限循环的多种方式汇总

    Python使用for实现无限循环的多种方式汇总 在Python中,我们可以使用for语句创建一个无限循环。无限循环是一种在程序中经常使用的循环方式,它可以使程序不断循环执行某些操作,直到人为终止或者程序出错为止。 下面我们来看看Python使用for实现无限循环的多种方式。 方式一 使用while True无限循环来实现。 while True: prin…

    python 2023年6月3日
    00
  • 详解Python命令行解析工具Argparse

    当你编写一个Python脚本时,它通常需要一些参数来提供上下文信息。例如,你可能需要指定文件路径,设置日志级别或指定输出格式。命令行参数是一种流行的方式来提供这些信息,但如果手工分析参数,则可能会变得非常棘手。因此,Python提供了Argparse模块来帮助我们通过解析命令行参数更加容易地获得所需信息。 Argparse简介 Argparse模块是Pyth…

    python 2023年5月18日
    00
  • 浅谈Python协程

    浅谈Python协程 什么是协程 协程是一种非常轻量级的线程,也称为微线程或者用户空间线程。协程与线程不同的是,线程由操作系统进行调度,而协程是程序员自行调度,因此切换的代价更低。 协程中包含多个协程对象,每个协程对象都应该包含一个状态机,也就是说,协程只有在切换时才会保存和恢复状态。 Python中的协程是通过asyncio库来实现的,asyncio是Py…

    python 2023年5月18日
    00
  • python爬虫xpath模块简介示例代码

    以下是关于“python爬虫xpath模块简介示例代码”的详细攻略。 什么是XPath? XPath是一种在XML文档中查找信息的语言。我们可以使用XPath来定位和选取XML文档中的任何节点。 在Python中使用XPath Python提供了许多第三方库来处理XML文件,其中一个非常常用的就是lxml。lxml是一个高性能的Python库,可以处理XML…

    python 2023年5月14日
    00
  • Python如何清理脏的日期时间字符串

    【问题标题】:Python how to clean dirty date time stringsPython如何清理脏的日期时间字符串 【发布时间】:2023-04-01 18:43:01 【问题描述】: 我有一个数据框data = pd.DataFrame({‘date’:[’25 ugust 2014′,’14 Auust 2014′,’27 ugu…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部