對 Hermite_e 級數進行微分並在 Python 中設定導數


Hermite_e 級數也稱為機率論者的 Hermite 多項式或物理學家的 Hermite 多項式,它存在於數學中,用於對加權 Hermite 多項式求和。在量子力學的某些特定情況下,Hermite_e 級數的權重函式給定為 e^(−x^2)。以下是 Hermite_e 級數的公式。

H_n(x) = (-1)^n e^(x^2/2) d^n/dx^n(e^(-x^2/2))

其中,

  • H_n(x) 是 n 次 Hermite 多項式

  • x 是自變數

  • d^n/dx^n 表示關於 x 的 n 階導數。

定義係數

要執行 Hermite_e 級數的微分,首先我們必須定義該級數的係數。在 Numpy 庫中,我們在多項式包中有一個名為 hermite_e 的模組,用於生成指定次數的 Hermite 多項式,然後我們可以將每個多項式乘以相應的係數並將它們加起來以得到級數。

語法

以下是語法。

np.polynomial.hermite_e.hermval(series, coefficients)
np.polynomial.hermite_e.hermdifn(series, coefficients, derivate_degree)

示例

在這個例子中,我們將使用 **polynomial.hermite_e.hermval()** 函式生成 Hermite_e 級數的微分,方法是傳遞元素和係數的序列,並且為了計算級數的導數,我們有函式 **polynomial.hermite_e.hermdifn()**。

import numpy as np
from numpy.polynomial import hermite
coefficients = [-2,-4,7,-1,5]
x = np.linspace(-5, 5, 20)
series = hermite.hermval(x, coefficients)
print("The Hermite_e series of the given cofficients and series of elements:",series)
derivatives = hermite.hermder(series, m=2,axis = 0)
print("The derivatives of the generated hermite_e series:",derivatives)

輸出

The Hermite_e series of the given cofficients and series of elements: [ 4.57240000e+04  2.85437908e+04  1.66401342e+04  8.82740375e+03
  4.06730185e+03  1.46885923e+03  2.88435202e+02 -7.02824257e+01
 -5.62773152e+01  2.87953898e+01  3.06090653e+01 -5.78343935e+01
 -9.62045718e+01  2.03157465e+02  1.27523917e+03  3.70235652e+03
  8.21415400e+03  1.56876046e+04  2.71470100e+04  4.37640000e+04]
The derivatives of the generated hermite_e series: [ 1.33121073e+05  2.11857690e+05  1.95230489e+05  1.17508739e+05
  3.46122243e+04 -1.18074475e+04 -1.26061186e+04  8.29307228e+03
  1.10192635e+04 -2.54471332e+04 -5.07960139e+04  1.26770258e+05
  9.28374116e+05  3.10997948e+06  7.88558784e+06  1.70681138e+07
  3.32279402e+07  5.98691520e+07]

示例

在上面的示例中,我們將 hermder() 函式中的軸作為 0 傳遞,因為元素序列是一維陣列,但這裡我們使用的是二維陣列,因此軸可以指定為 axis = 1 或 axis = 0。

import numpy as np
from numpy.polynomial import hermite
coefficients = [-2,-4,7,-1,5]
x = np.linspace(-5, 5, 20).reshape(5,4)
series = hermite.hermval(x, coefficients)
print("The Hermite_e series of the given cofficients and series of elements:",series)
derivatives = hermite.hermder(series, m=2,axis = 1)
print("The derivatives of the generated hermite_e series:",derivatives)

輸出

The Hermite_e series of the given cofficients and series of elements: [[ 4.57240000e+04  2.85437908e+04  1.66401342e+04  8.82740375e+03]
 [ 4.06730185e+03  1.46885923e+03  2.88435202e+02 -7.02824257e+01]
 [-5.62773152e+01  2.87953898e+01  3.06090653e+01 -5.78343935e+01]
 [-9.62045718e+01  2.03157465e+02  1.27523917e+03  3.70235652e+03]
 [ 8.21415400e+03  1.56876046e+04  2.71470100e+04  4.37640000e+04]]
The derivatives of the generated hermite_e series: [[ 1.33121073e+05  2.11857690e+05]
 [ 2.30748162e+03 -1.68677822e+03]
 [ 2.44872522e+02 -1.38802544e+03]
 [ 1.02019134e+04  8.88565565e+04]
 [ 2.17176080e+05  1.05033600e+06]]

示例

在下面的示例中,當我們將引數 axis = 2 傳遞給二維陣列的元素序列的 hermder() 函式時,它將引發軸錯誤,因為軸應該為 0 或 1。

import numpy as np
from numpy.polynomial import hermite
coefficients = [-2,-4,7,-1,5]
x = np.linspace(-5, 5, 20).reshape(5,4)
series = hermite.hermval(x, coefficients)
print("The Hermite_e series of the given cofficients and series of elements:",series)
derivatives = hermite.hermder(series, m=2,axis = 2)
print("The derivatives of the generated hermite_e series:",derivatives)

輸出

The Hermite_e series of the given cofficients and series of elements: [[ 4.57240000e+04  2.85437908e+04  1.66401342e+04  8.82740375e+03]
 [ 4.06730185e+03  1.46885923e+03  2.88435202e+02 -7.02824257e+01]
 [-5.62773152e+01  2.87953898e+01  3.06090653e+01 -5.78343935e+01]
 [-9.62045718e+01  2.03157465e+02  1.27523917e+03  3.70235652e+03]
 [ 8.21415400e+03  1.56876046e+04  2.71470100e+04  4.37640000e+04]]
---------------------------------------------------------------------------
AxisError                                 Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_3956\2241814449.py in <module>
      5 series = hermite.hermval(x, coefficients)
      6 print("The Hermite_e series of the given cofficients and series of elements:",series)
----> 7 derivatives = hermite.hermder(series, m=2,axis = 2)
      8 print("The derivatives of the generated hermite_e series:",derivatives)

~\anaconda3\lib\site-packages\numpy\polynomial\hermite.py in hermder(c, m, scl, axis)
    657     if cnt < 0:
    658         raise ValueError("The order of derivation must be non-negative")
--> 659     iaxis = normalize_axis_index(iaxis, c.ndim)
    660 
    661     if cnt == 0:

AxisError: axis 2 is out of bounds for array of dimension 2

示例

以下是另一個示例 -

import numpy as np
from numpy.polynomial import hermite_e as H

# Create an array of coefficients
c = np.array([1,2,3,4])

# Display the array
print("Our Array...\n",c)

# Check the Dimensions
print("\nDimensions of our Array...\n",c.ndim)

# Get the Datatype
print("\nDatatype of our Array object...\n",c.dtype)

# Get the Shape
print("\nShape of our Array object...\n",c.shape)

# To differentiate a Hermite_e series, use the hermite_e.hermeder() method in Python
print("\nResult...\n",H.hermeder(c, 3))

輸出

Our Array...
[1 2 3 4]

Dimensions of our Array...
1

Datatype of our Array object...
int64

Shape of our Array object...
(4,)

Result...
[24.]

更新於: 2023-11-02

118 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.