用Python计算具有给定复根的Hermite_e级数的根
简介
Hermite_e级数是数学中的一个重要分支。在解决物理学中的Harmonic Oscillator问题等方面有着极其广泛的应用。本文将介绍用Python计算具有给定复根的Hermite_e级数的根的方法。
Hermite_e级数
首先,我们需要了解什么是Hermite_e级数。Hermite_e级数由Hermite_e多项式定义。一个n次Hermite_e多项式是由下式定义的:
H_n(x)=(-1)^ne^{x^2}\frac{d^n}{dx^n}(e^{-x^2})
由此,我们便可以通过求解Hermite_e多项式来得到Hermite_e级数。
其中,前十个Hermite_e多项式为:
H_0(x)=1
H_1(x)=2x
H_2(x)=4x^2-2
H_3(x)=8x^3-12x
H_4(x)=16x^4-48x^2+12
H_5(x)=32x^5-160x^3+120x
H_6(x)=64x^6-480x^4+720x^2-120
H_7(x)=128x^7-1344x^5+3360x^3-1680x
H_8(x)=256x^8-3584x^6+13440x^4-13440x^2+1680
H_9(x)=512x^9-9216x^7+48384x^5-80640x^3+30240x
可以看出,Hermite_e多项式的阶数越高,计算难度越大。
计算具有给定复根的Hermite_e级数的根
接着,我们需要了解如何计算具有给定复根的Hermite_e级数的根。我们以具有复根 z_0=a+bi 的Hermite_e级数为例。
\sum_{n=0}^{\infty}\frac{H_n(z_0)x^n}{n!}
上式中,H_n(z_0) 表示z_0是n次Hermite_e多项式的根。因此,我们的目标就在于求出n次Hermite_e多项式的根。
对于复根,我们需要对Hermite_e多项式进行复数化。定义:
h_n(z)=\frac{(-1)^n}{e^{z^2}}\frac{d^n(e^{-z^2})}{dz^n}
则,复数化的Hermite_e多项式为:
H_n(z)=\sqrt{\frac{2}{\pi}}\frac{n!}{2i^n}\cdot h_n(iz)
接下来,我们可以通过解析解或迭代算法来计算Hermite_e多项式的复根。这里我们采用Secant Method迭代算法来计算复根。
代码实现如下:
import numpy as np
def HermitePoly(n, z):
"""计算n次Hermite_e多项式"""
x = z.real
y = z.imag
# 计算复数化的Hermite_e多项式
hn = 1
for i in range(n):
hn = hn*(-1/(2*np.e)) * ((2*i+1)*1j*y-x)*hn + (2*i+1)*np.e/hn
hn = (hn*np.sqrt(2/np.pi)*np.math.factorial(n)/(2j**n)).real # 复数化
return hn
def findRoot(z, n=20):
"""通过Secant Method迭代算法计算Hermite_e级数的复根"""
# 计算初始值
a = 1
b = z
for i in range(n):
f_b = HermitePoly(n, b)
f_a = HermitePoly(n, a)
# 计算下一个迭代值
c = b - f_b*(b-a)/(f_b-f_a)
a = b
b = c
return c
我们可以通过findRoot函数来计算具有给定复根的Hermite_e级数的根。例如,我们要计算具有复根 z_0=2+3i 的Hermite_e级数的根,可以采用以下代码:
z_0 = 2 + 3j
n = 20
root = findRoot(z_0, n)
print("具有复根 {} 的Hermite_e级数的 {} 次根为:{}".format(z_0, n, root))
代码输出如下:
具有复根 (2+3j) 的Hermite_e级数的 20 次根为:(1.541202053343715+2.448025620215823j)
结论
本文介绍了如何用Python计算具有给定复根的Hermite_e级数的根。通过迭代算法Secant Method计算Hermite_e多项式的复根,我们可以得到精度较高的计算结果。这对于解决物理学和工程学等领域中的实际问题具有极大的帮助。