在Python中用多维系数数组对x点的赫米特级数进行评估

  • Post category:Python

在Python中用多维系数数组对x点的赫米特级数进行评估可以使用NumPy库实现。下面是具体的攻略:

Step 1:导入NumPy库

在代码的开头,需要导入NumPy库:

import numpy as np

Step 2:定义赫米特函数

赫米特函数可以使用SciPy库中的hermite函数来定义,该函数会返回给定参数n和x的赫米特函数值。

from scipy.special import hermite

def H(x, n):
    return hermite(n)(x)

Step 3:生成多维系数数组

生成多维系数数组的过程可以使用NumPy中的meshgrid函数和ndarray方法。

n_max = 5
N = np.arange(n_max+1)[None, :]

xn = np.linspace(-5, 5, 100)[..., None]
Xn = np.power(xn, N)

coeff = np.exp(-np.square(xn)) * Xn  # 多维系数数组

以上代码中,生成了一个n_max1的数组N,其中包含了从0到n_max的所有整数。xn是一个1001的数组,其中包含了从-5到5之间的100个均匀分布的数值,N和xn的维度不同,为了实现多维计算,可以使用ndarray方法将xn的维度扩展为了1006的数组Xn。最后,计算多维系数数组coeff,这是一个1006的数组。

Step 4:对x点的赫米特级数进行评估

使用生成的多维系数数组coeff和定义的赫米特函数H,可以进行对x点的赫米特级数进行评估。

x = np.array([1, 2, -1])

h_x = np.matmul(coeff, H(x, N).T)

以上代码中,定义了一个长度为3的数组x,表示要进行评估的点的坐标。使用H(x, N)函数得到一个包含了x点的赫米特函数值的63的数组,然后使用NumPy中的matmul函数对多维系数数组和赫米特函数值进行矩阵乘法操作,得到一个1001的数组h_x,表示x点的赫米特级数的值。

Step 5:绘制结果

需要导入Matplotlib库,然后使用plot函数绘制x点的赫米特级数的值。

import matplotlib.pyplot as plt

plt.plot(xn[..., 0], h_x)
plt.show()

以上代码绘制了x点的赫米特级数在运行到点的时候的值的曲线,其中xn[…, 0]表示多维数组xn中的所有元素的第一个值。绘图结果中包含了曲线以及坐标轴标签,网站的读者可以在实际运行代码时根据具体需求进行修改。

示例1:对三维点(1, 2, -1)的赫米特级数进行评估

x = np.array([1, 2, -1])

h_x = np.matmul(coeff, H(x, N).T)

plt.plot(xn[..., 0], h_x)
plt.title("Hermite series evaluation for point (1,2,-1)")
plt.xlabel("x")
plt.ylabel("H_n(x)")
plt.show()

示例2:对二维点(2, -1)的赫米特级数进行评估

x = np.array([2, -1])

h_x = np.matmul(coeff, H(x, N).T)

plt.plot(xn[..., 0], h_x)
plt.title("Hermite series evaluation for point (2,-1)")
plt.xlabel("x")
plt.ylabel("H_n(x)")
plt.show()

以上两个示例分别对不同的二维和三维点的赫米特级数进行了评估,并且将评估结果绘制成了曲线图。