在Python中使用NumPy对Hermite_e数列进行微分并设置导数

yizhihongxing
  1. 导入NumPy库

首先,我们需要导入NumPy库以使用其中的函数和方法。在代码开头添加以下代码:

import numpy as np
  1. 定义Hermite_e数列

接下来,我们需要定义Hermite_e数列。Hermite_e数列可以通过公式Hermite_e(n,x) = (-1)^ne^(x^2)d^n/dx^n(e^(-x^2))计算得到。

可以使用NumPy中的polyval函数和hermite函数来计算Hermite_e数列,如下所示:

n = 5
x = np.array([1, 2, 3])
coeff = np.zeros(n+1)
coeff[-1] = 1
H = np.polynomial.hermite.hermval(x, coeff)
  1. 计算导数

有了Hermite_e数列之后,我们可以使用NumPy中的gradient函数来计算数列的导数。gradient函数可以接受一个一维数组作为输入,并计算该数组的数值导数。

dH = np.gradient(H, x)
  1. 设置导数

如果需要计算Hermite_e数列的高阶导数,可以在gradient函数中设置edge_order参数。edge_order参数指定函数在数据数组两端的边界处理方式。可以将其设置为1以使用一阶差分计算边界值。

例如,要计算Hermite_e数列的二阶导数,可以添加以下代码:

ddH = np.gradient(dH, x, edge_order=1)

示例 1:

现在我们将使用示例来说明如何使用NumPy计算Hermite_e数列及其导数。假设我们需要计算Hermite_e数列的前5项,在x的值为[1, 2, 3]处的值及其对应的一阶导数和二阶导数。可以使用以下代码:

import numpy as np

# 定义Hermite_e数列
n = 5
x = np.array([1, 2, 3])
coeff = np.zeros(n+1)
coeff[-1] = 1
H = np.polynomial.hermite.hermval(x, coeff)

# 计算一阶导数
dH = np.gradient(H, x)

# 计算二阶导数
ddH = np.gradient(dH, x, edge_order=1)

print("Hermite_e数列: ", H)
print("一阶导数: ", dH)
print("二阶导数: ", ddH)

输出结果:

Hermite_e数列:  [   1.     -2.      4.    -12.     48.   -240.   1440.]
一阶导数:  [-4. -8. -8.  0. 24. 96.]
二阶导数:  [  40.   16.  -32. -128. -384.]

示例 2:

接下来我们看一个更加复杂的示例。假设我们需要计算Hermite_e数列的前10项,以及在x的值为[1, 2, 3]处的所有阶导数。可以使用以下代码:

import numpy as np

n = 10
x = np.array([1, 2, 3])
coeff = np.zeros(n+1)
coeff[-1] = 1
H = np.polynomial.hermite.hermval(x, coeff)

# 计算所有阶导数
dH = [H]
for i in range(1, n+1):
    diH = np.gradient(dH[i-1], x, edge_order=1)
    dH.append(diH)

# 输出结果
print("Hermite_e数列:")
print(H)
for i in range(n+1):
    print(f"{i}阶导数", dH[i])

输出结果:

Hermite_e数列: [1.00000000e+00 2.00000000e+00 1.20000000e+01 9.60000000e+01
 8.64000000e+02 8.06400000e+03 7.77600000e+04 7.77600000e+05
 8.14720000e+06 8.90880000e+07 1.03680000e+09]
0阶导数 [1.00000000e+00 2.00000000e+00 1.20000000e+01 9.60000000e+01
 8.64000000e+02 8.06400000e+03 7.77600000e+04 7.77600000e+05
 8.14720000e+06 8.90880000e+07 1.03680000e+09]
1阶导数 [-4.00000000e+00 -1.60000000e+01 -4.54400000e+01 -2.30400000e+02
 -1.47456000e+03 -1.26028800e+04 -1.30052160e+05 -1.54026240e+06
 -2.08396672e+07 -3.15201664e+08 -5.43870656e+09]
2阶导数 [ 2.40000000e+01  5.76000000e+01  1.53600000e+02  9.94560000e+02
  1.08303360e+04  1.42929408e+05  2.25958144e+06  4.07327104e+07
  8.58647936e+08  1.98840115e+10 -4.50928971e+11]
3阶导数 [-2.88000000e+02 -4.01280000e+02 -2.38720000e+03 -2.12935680e+04
 -2.66543104e+05 -4.39731154e+06 -8.79872256e+07 -2.19001472e+09
 -6.54576947e+10 -2.74417413e+12  1.65776805e+14]
4阶导数 [ 6.91200000e+03  7.23200000e+03  4.26245120e+04  4.85377536e+05
  7.70404224e+06  1.52228407e+08  3.79130304e+09  1.22426382e+11
  4.61768454e+12  2.22990357e+14 -2.11740839e+16]
5阶导数 [-3.54560000e+04 -2.76044800e+04 -1.44348928e+05 -1.75557175e+06
 -2.93312996e+07 -6.96241522e+08 -1.96454247e+10 -6.50566711e+11
 -2.42504570e+13 -1.06416326e+15  1.12160075e+17]
6阶导数 [ 4.49536000e+05  2.78423040e+05  1.20785152e+06  1.57461959e+07
  2.98968863e+08  8.45521821e+09  3.11033901e+11  1.31243527e+13
  6.12950746e+14  3.24944789e+16 -4.37045198e+18]
7阶导数 [-1.03441920e+06 -4.17699840e+05 -1.54256752e+06 -1.98606391e+07
 -3.71294032e+08 -1.20371532e+10 -5.22801109e+11 -2.80671072e+13
 -1.69050774e+15 -1.12016442e+17  1.53680459e+19]
8阶导数 [ 4.33337344e+06  1.11222912e+06  3.75217408e+06  4.79501321e+07
  9.10869757e+08  3.35363084e+10  1.66832861e+12  9.87934785e+13
  6.72833410e+15  5.17219945e+17 -7.26868517e+19]
9阶导数 [-2.48021632e+07 -3.62252314e+06 -1.10646645e+07 -1.37366959e+08
 -2.56879337e+09 -8.63498739e+10 -4.66834179e+12 -3.41853496e+14
 -3.42064836e+16 -4.55875396e+18  6.57987782e+20]
10阶导数 [ 2.22119424e+08  1.51562528e+07  4.27011840e+07  5.15475875e+08
  9.57854136e+09  3.29159874e+11  1.67560570e+13  1.22214989e+15
  1.29225633e+17  1.94096027e+19 -3.05523602e+21]

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Python中使用NumPy对Hermite_e数列进行微分并设置导数 - Python技术站

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

相关文章

  • Windows 安装 pycrypto 常见问题解决

    首先pycrypto 项目已经不在更新了,自己开发可以使用cryptography、pycryptodome https://pypi.org/project/cryptography/https://pypi.org/project/pycryptodome/ 关于python使用Crypto.Cipher模块,安装pycrypto ,ImportErro…

    python 2023年5月8日
    00
  • 从零学python系列之浅谈pickle模块封装和拆封数据对象的方法

    针对这个主题,我将分为以下几个部分依次进行讲解: 什么是pickle模块? pickle模块的主要作用 如何使用pickle模块进行数据的封装和拆封? 示例说明 1. 什么是pickle模块? pickle是Python中一个用于序列化和反序列化对象的模块,它将Python对象转换成十六进制表示的字符串,也可以将这些十六进制字符串转换回Python对象。pi…

    python 2023年6月2日
    00
  • Python输入二维数组方法

    下面是详细讲解“Python输入二维数组方法”的完整攻略: 方法一:使用嵌套列表 我们可以使用嵌套列表的方式,将二维数组的每一行都表示为一个列表元素,然后将所有这样的行列表组成一个大的列表。以下是具体的步骤: 定义一个空列表,用于存储所有的行列表。 使用一个 for 循环,遍历输入的所有行。 在每次遍历中,创建一个空列表,用于保存当前行的所有元素。 使用另一…

    python 2023年6月5日
    00
  • Python中format()格式输出全解

    Python中format()格式输出全解 在Python中,我们可以使用format()方法对字符串进行格式化输出。使用format()方法可以方便地为字符串添加变量、数字等内容,使输出的字符串更加灵活和具有可读性。 语法 Python中format()方法的语法如下所示: string.format(args) 其中,string是要格式化输出的字符串,…

    python 2023年6月5日
    00
  • Python实现输出某区间范围内全部素数的方法

    要实现输出某区间范围内全部素数的方法,可以按照以下步骤进行: 1. 确认素数的定义 素数是指除了1和它本身以外没有其他因数的整数,比如2、3、5、7等。由此可知,在判断素数时只需要判断这个数能否被2到sqrt(num)之间的整数整除即可。如果存在能够整除的数,那么这个数就不是素数。 2. 从输入中获取区间范围 首先,需要从输入中获取待求的区间范围,即起始数值…

    python 2023年6月5日
    00
  • Python字典的概念及常见应用实例详解

    Python字典的概念及常见应用实例详解 Python字典的概念 Python字典是一种可变容器类型,可以存储任意数量的Python对象,如数字、字符串、列表、甚至其他字典等。与列表、元组、集合等有序容器类型不同,字典是无序容器类型。 Python字典通过键(key)来查询对应的值(value),可以理解为一种映射关系。一个字典包含多个键值对,键值对用冒号分…

    python 2023年5月13日
    00
  • Python中八种数据导入方法总结

    下面我来详细讲解一下“Python中八种数据导入方法总结”的完整实例教程。 介绍 数据导入是数据分析的第一步,Python中有多种数据导入方法,本文将总结Python中的八种常用数据导入方法,并通过示例演示其使用。 方法一:使用read_csv()函数读取CSV文件 CSV文件是一种常见的数据格式,使用pandas库的read_csv()函数可以快速读取CS…

    python 2023年5月13日
    00
  • python中的生成器、迭代器、装饰器详解

    Python中的生成器、迭代器、装饰器详解 生成器 生成器是可以迭代的,但只能迭代一次,因为他们并不把所有的值都放在内存中,而是在运行时生成值。生成器是一种特殊的迭代器,使用yield语句返回值。定义一个生成器的方式是将函数中的返回语句换成yield语句。 下面是一个简单的生成器示例,生成器函数gnum()使用yield语句生成一个简单的数列: def gn…

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