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

  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日

相关文章

  • Python 的Json 模块编码详解

    以下是关于“Python 的Json 模块编码详解”的完整攻略: 什么是Json? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言的一个子集,虽然Json表示的是JavaScript中的数据类型(例如字符串、数字、布尔值、列表和字典),但是Json是一个独立于语言的数据格式。Json…

    python 2023年5月31日
    00
  • 如何使用Python进行爬虫开发?

    使用Python进行爬虫开发需要以下步骤: 安装Python和相应的第三方库(比如requests和beautifulsoup4) 选择目标网站,并使用requests库发送GET请求获取HTML页面 使用beautifulsoup4库解析HTML页面,提取需要的信息 将提取的信息存储到本地文件或数据库中 以下是两个示例说明: 示例1:爬取新闻网站的标题和链…

    python 2023年4月19日
    00
  • Python制作摩斯密码翻译器

    Python制作摩斯密码翻译器 前言 本文将介绍如何使用Python语言来制作一个摩斯密码翻译器,读者需要具备一定的Python编程基础。 摩斯密码简介 摩斯电码是一种用短、长两种不同的信号组合来表示文字符号、数字符号和标点符号等的电报。俗称电码。发明者是美国人莫尔斯 ( Samuel Morse ),并由其商界朋友亨利 ( Alfred Vail ) 提供…

    python 2023年6月5日
    00
  • 使用 Python 破解压缩文件的密码的思路详解

    首先需要安装 Python ,本文以 Python 3 为例。安装完成后,需要安装 zipcrack 库。zipcrack 是一个用于破解 zip 压缩文件密码的 Python 库,我们可以通过 pip 包管理器安装 zipcrack 库。 安装 zipcrack 库的命令如下: pip install zipcrack 编写基本代码 我们先来编写基本代码,…

    python 2023年6月3日
    00
  • Python如何生成随机数及random随机数模块应用

    Python是一种强大的编程语言,它可以通过内置的random模块来生成随机数。随机数在程序设计中非常重要,可以用于测试、模拟和盐值等多个方面。本文将详细讲解Python如何生成随机数及random随机数模块应用,并提供两个示例说明。 生成随机数的方法 Python中生成随机数主要有以下两种方法:1.使用random模块的函数;2.使用Python内置的模块…

    python 2023年5月14日
    00
  • 详解如何利用Python实现报表自动化

    以下是详解如何利用Python实现报表自动化的完整攻略: 1. 了解报表自动化的概念和优势 报表自动化是指利用计算机技术和相关软件工具,将人工处理数据转变为机器自动执行的过程,以完成数据采集、整理、处理和呈现等任务。报表自动化的优势在于提高工作效率、减少人力成本和错误率、规范化报表格式和内容、便于重复使用和分析等。 2. 选择合适的 Python 技术栈 P…

    python 2023年5月18日
    00
  • Python字典常见操作实例小结【定义、添加、删除、遍历】

    下面是Python字典常见操作实例小结的完整攻略。 一、定义字典 Python中使用花括号 {} 来定义字典,并使用冒号:分隔键值对。键(key)必须是唯一的且不可变的,可以是数字、字符串或元组等不可变类型,值(value)可以是任何类型。 示例1: # 定义一个学生信息字典 student = { "name": "张三&qu…

    python 2023年5月13日
    00
  • python+selenium实现自动抢票功能实例代码

    关于“python+selenium实现自动抢票功能实例代码”的完整攻略,我会从以下方面详细讲解: 环境搭建:Python、Selenium、ChromeDriver 实现步骤:登录,查询,选择,购买 两个示例说明:12306抢票、淘宝秒杀 具体讲解如下: 环境搭建 在开始之前,我们需要搭建好相应的环境: 安装Python:从官网下载对应版本的Python,…

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