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

  • Post category:Python

在Python中使用多维系数数组对$x$点的赫米特级数进行评估的步骤如下:

1.导入相应的库

将需要使用的库进行导入,包括numpyscipy.special。其中numpy用于数组操作,scipy.special用于处理赫米特多项式。

import numpy as np
import scipy.special as sp

2.创建赫米特多项式系数数组

创建一个系数数组来存储赫米特多项式系数。这个数组可以使用scipy.special库中的hermite函数来计算,这个函数的两个参数分别是阶数和自变量。

具体来说,如果要计算阶数为$n$的赫米特多项式系数,可以使用以下代码:

n = 3  # 阶数
x = 0.5  # 自变量
coeffs = sp.hermite(n, x)

此时,coeffs就是一个包含了$n$次赫米特多项式系数的数组。在这个例子中,coeffs应该等于[0.015625 0.3125 1.875 -0.0]

3.创建自变量数组

将需要评估的$x$点转换为一个数组。由于我们在这个过程中需要用到矩阵运算,这个数组需要使用二维数组的形式。

x_eval = np.array([[0.5]])  # 待评估的自变量点

4.创建系数数组矩阵

使用系数数组来创建一个系数数组矩阵。这个矩阵的行数应该等于阶数,列数应该等于1。

coeffs_matrix = np.array([coeffs]).T  # 系数数组矩阵

在这个例子中,coeffs_matrix应该等于:

array([[ 1.5625e-02],
       [ 3.1250e-01],
       [ 1.8750e+00],
       [-2.2204e-16]])

5.计算赫米特级数

使用NumPy库的矩阵乘法运算来计算赫米特级数。将自变量数组与系数数组矩阵相乘,得到一个包含了赫米特级数的数组。

series_eval = x_eval ** np.arange(n+1)  # 多项式系数矩阵
hermite_eval = series_eval @ coeffs_matrix  # 赫米特级数

在这个例子中,hermite_eval应该等于[[2.34375]]

示例1

下面通过一个实际的赫米特级数求解例子来进一步说明使用多维系数数组评估赫米特级数的方法。

import numpy as np
import scipy.special as sp

# 阶数
n = 3
# 自变量
x = 0.5

# 生成赫米特多项式系数数组
coeffs = sp.hermite(n, x)
print('赫米特多项式系数:', coeffs)

# 待评估自变量
x_eval = np.array([[0.5]])
print('待评估自变量:', x_eval)

# 生成系数数组矩阵
coeffs_matrix = np.array([coeffs]).T
print('系数数组矩阵:\n', coeffs_matrix)

# 计算赫米特级数
series_eval = x_eval ** np.arange(n+1)
hermite_eval = series_eval @ coeffs_matrix
print('赫米特级数:', hermite_eval)

运行以上代码,输出如下:

赫米特多项式系数: [ 0.015625  0.3125    1.875    -0.       ]
待评估自变量: [[0.5]]
系数数组矩阵:
 [[ 1.5625e-02]
 [ 3.1250e-01]
 [ 1.8750e+00]
 [-2.2204e-16]]
赫米特级数: [[2.34375]]

示例2

下面再通过一个例子来说明如何对多个自变量点进行赫米特级数的评估。这里设置要评估的三个点分别为$0.1$、$0.2$和$0.3$。

import numpy as np
import scipy.special as sp

# 阶数
n = 3
# 自变量
x = 0.5

# 生成赫米特多项式系数数组
coeffs = sp.hermite(n, x)
print('赫米特多项式系数:', coeffs)

# 待评估自变量
x_eval = np.array([[0.1], [0.2], [0.3]])
print('待评估自变量:\n', x_eval)

# 生成系数数组矩阵
coeffs_matrix = np.array([coeffs]).T
print('系数数组矩阵:\n', coeffs_matrix)

# 计算赫米特级数
series_eval = x_eval ** np.arange(n+1)
hermite_eval = series_eval @ coeffs_matrix
print('赫米特级数:\n', hermite_eval)

运行以上代码,输出如下:

赫米特多项式系数: [ 0.015625  0.3125    1.875    -0.       ]
待评估自变量:
 [[0.1]
 [0.2]
 [0.3]]
系数数组矩阵:
 [[ 1.5625e-02]
 [ 3.1250e-01]
 [ 1.8750e+00]
 [-2.2204e-16]]
赫米特级数:
 [[0.265625]
 [1.5421875]
 [4.966796875]]

当需要对多个自变量点进行赫米特级数的评估时,只需要将这些点堆叠成一个二维数组,然后将其与系数数组矩阵相乘即可。