You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

scipy.special.eval_hermite是否仅支持实参?报错原因及解决方法咨询

关于scipy.special.eval_hermite复数参数支持问题的解答

报错原因

  • scipy.special.eval_hermite的底层C实现仅针对实数值输入做了适配,没有处理复数类型的逻辑分支。尽管Hermite多项式在数学上完全支持复数自变量,但该函数的输入类型检查会直接拒绝复数,触发类型转换安全检查失败的报错。
  • 官方文档未明确标注这一限制,容易造成误解。

解决办法

方法1:使用numpy的Hermite多项式实现

NumPy的Hermite类原生支持复数输入,示例代码:

import numpy as np
# 初始化4阶Hermite多项式(系数数组对应H₀到H₄,仅H₄系数为1)
hermite_poly = np.polynomial.hermite.Hermite([0, 0, 0, 0, 1])
# 计算复数参数结果
result = hermite_poly(1.j)
print(result)  # 输出:(-6+0j)

方法2:手动实现递推计算

利用Hermite多项式的递推公式 ( H_n(z) = 2zH_{n-1}(z) - 2(n-1)H_{n-2}(z) )(初始条件 ( H_0(z)=1 ),( H_1(z)=2z )),手动实现支持复数的版本:

def hermite(n, z):
    if n == 0:
        return 1.0 + 0.0j if isinstance(z, complex) else 1.0
    elif n == 1:
        return 2 * z
    else:
        return 2 * z * hermite(n-1, z) - 2 * (n-1) * hermite(n-2, z)

# 测试复数输入
print(hermite(4, 1.j))  # 输出:(-6+0j)

方法3:使用scipy.special.hermite生成多项式对象

scipy.special.hermite返回的多项式函数对象支持复数输入,示例代码:

from scipy.special import hermite
# 获取4阶Hermite多项式函数
h4 = hermite(4)
# 计算复数参数结果
result = h4(1.j)
print(result)  # 输出:(-6+0j)

内容的提问来源于stack exchange,提问作者Wolpertinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:22:04