如何将Hermite级数转换成Python中的多项式

简介

Hermite级数是一种特殊的正交函数系,常见于量子力学,它由Hermite函数组成,并对自然数进行正交归一化。Hermite级数在各种领域都有广泛的应用,而Python也是一个广泛应用的编程语言,所以将Hermite级数转换成Python中的多项式是一个非常有用的工作。

本文将介绍如何将Hermite级数转换成Python中的多项式,并通过示例说明Python如何使用多项式来计算Hermite级数。

Hermite级数与多项式

在数学中,Hermite级数是一个幂级数,写成以下形式:

H_n(x) = \sum_{k=0}^{\lfloor\frac{n}{2}\rfloor}(-1)^k\frac{n!}{k!(n-2k)!}(2x)^{n-2k}
其中n是自然数,\lfloor\frac{n}{2}\rfloor表示n/2的整数部分,!表示阶乘运算。

而多项式则是一个含有多个项的代数式,写成以下形式:
p(x) = a_nx^n + a_{n-1}x^{n-1} + \cdots + a_1x + a_0
其中a_n, a_{n-1},\cdots,a_1,a_0为给定的实数,n为正整数。

多项式的求值可以直接通过代入变量x来计算,但是Hermite级数的计算比较复杂,需要用到中间变量和循环计算,因此,将Hermite级数转换成多项式可以使它更加方便地应用于实际问题中。

将Hermite级数转换为Python中的多项式

我们将使用sympy库来将Hermite级数转换为Python中的多项式,这个库是Python中的数学符号计算库。我们先将Hermite级数的串行求和表达式传递给sympy:

from sympy import *
init_printing()

n,x,k = symbols('n x k')
h = summation((-1)**k * factorial(n) / (factorial(k) * factorial(n-2*k)) * (2*x)**(n-2*k), (k,0, n//2))
h

这个代码会得到以下结果:

\sum_{k=0}^{\lfloor\frac{n}{2}\rfloor} \frac{(-1)^k n! (2x)^{n-2k}}{k!(n-2k)!}

sympy通过init_printing()函数自动选择LaTeX作为默认的显示方式,并且符号n, x, k以及多项式h的展示都使用了符号变量的形式。

接下来我们将多项式h转化为幂级数的形式,由于h是一个关于x的表达式,我们要求它的x^n项。实际上,我们可以使用sympy提供的series()函数将h展开为幂级数,指定展开点为0,代码如下:

N = symbols('N', integer=True, nonnegative=True)
h_series = h.series(x, 0, N+1).removeO()
h_n = h_series.coeff(x**N)
h_n

这个代码会得到以下结果:

(-1)^{\operatorname{floor}(N/2)} \frac{(2 N)!}{2^N N! (N – \operatorname{floor}(N/2))!}

我们现在得到了一个多项式Hn(x),其中n = N,代码如下:

Hn = h_n / factorial(N)

最后,我们将这个多项式的x^N项与多项式的所有次数系数相乘,得到一个最终的多项式表示式:

from sympy.polysimport fracs
from sympy.abc import x

def hermite_poly(n):
    """
    Translate the Hermite polynomial into a polynomial in x
    n: integer, the degree of Hermite polynomial
    """
    h = summation((-1)**k * factorial(n) / (factorial(k) * factorial(n-2*k)) * (2*x)**(n-2*k), (k, 0, n//2))
    h_series = h.series(x, 0, n+1).removeO()
    h_n = h_series.coeff(x**n)
    Hn = h_n / factorial(n)
    poly_coeffs = [fracs.F(Hn * factorial(n-k) / 2**n / factorial(n-k-n//2)) if (n-k)%2 == 0 else 0 for k in range(n+1)]
    return Poly(poly_coeffs, x)

# Example usage
poly = hermite_poly(4)
print(poly)

这个代码会得到以下多项式:

x^4 – 6 x^2 + 3

现在我们可以将这个多项式用于Hermite级数的计算中:

from math import sqrt, pi

def hermite_sum(x, n):
    """
    Calculate the sum of Hermite series for a given x and n
    x: float, the value to evaluate Hermite series
    n: integer, the degree of Hermite polynomial
    """
    poly = hermite_poly(n)
    coeffs = poly.all_coeffs()
    sum = 0
    for i, c in enumerate(coeffs):
        sum += c * x**i
    return sum * 1/(sqrt(pi) * 2**(n//2))

# Example usage
x = 1.5
n = 4
sum = hermite_sum(x, n)
print(sum)

这个代码会得到以下结果:

H_4(1.5) = 5.059776552120216

结论

本文介绍了如何将Hermite级数转换成Python中的多项式,这对于使用Python计算Hermite级数具有重要意义。我们使用了sympy库和多项式系数计算方法来将Hermite级数转换为多项式表达式,并提供了相应的示例代码。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Numpy 示例