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

Numpy中e^(iθ)与cosθ+isinθ不匹配问题咨询

复数计算问题排查

问题背景

我查阅了相关公式(见附图),尝试将其应用于一组点列表。

正常运行的代码片段

以下代码运行结果符合预期:

Zj = np.array([1. +0.j , 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j ])
δj      = Zj[1: ] - Zj[:-1]
assert(np.allclose(δj, np.array([-.5+0.5j , -.5-.5j, 0.5-.5j, .5+.5j])))
assert(np.allclose(np.angle(δj, deg=True) , np.array([ 135., -135.,  -45.,   45.])))

$e^{i\theta}$计算不符合预期

但计算$e^{i\theta}$时未达到预期效果:

e_iVj   = -1j * ((δj)/abs(δj))
assert(np.allclose(np.cos(np.angle(δj)) + np.sin(np.angle(δj)), e_iVj))

补充调整后的结果

按照@hpaulg的建议为sin添加1j后,数值匹配但符号仍不对应:

>>> np.cos(np.angle(δj)) + 1j* np.sin(np.angle(δj))
array([-0.70710678+0.70710678j, -0.70710678-0.70710678j,
        0.70710678-0.70710678j,  0.70710678+0.70710678j])
>>> e_iVj
array([ 0.70710678+0.70710678j, -0.70710678+0.70710678j,
       -0.70710678-0.70710678j,  0.70710678-0.70710678j])
>>> 1j * ((δj)/abs(δj))
array([-0.70710678-0.70710678j,  0.70710678-0.70710678j,
        0.70710678+0.70710678j, -0.70710678+0.70710678j])

验证过程与疑问

向@peterwhy确认:我已验证角度表示正确,且$\delta j/abs(\delta j)$等于$e^{i\vartheta}$,$abs(\delta j)/\delta j$等于$e^{-i\vartheta}$,因此怀疑原公式中的-i是笔误,请求确认。相关验证代码如下:

验证角度表示正确

-- 确认角度表示正确
>>> Zj= Zj[0]
>>> Zj_p1 = Zj_p1[0]
>>> δj = Zj_p1 - Zj
>>> np.angle(δj, deg=True)
135.0 # 确认无误

验证$e^{i\vartheta} = \delta j/abs(\delta j)$

-- 验证e^iϑ = δj/abs(δj)
>>> ϑ = np.angle(δj)
>>> e_iϑ = np.exp(1j*ϑ)
>>> e_iϑ
(-0.7071067811865475+0.7071067811865476j)

>>> δj/abs(δj)
(-0.7071067811865475+0.7071067811865475j)

>>> np.isclose(np.exp(1j*ϑ), δj/abs(δj))
True # 确认两种方法结果一致

验证$e^{-i\vartheta} = abs(\delta j)/\delta j$

-- 验证e^-iϑ = abs(δj)/ δj
>>> np.exp(-1j*ϑ)
(-0.7071067811865475-0.7071067811865476j)

>>> abs(δj)/δj
(-0.7071067811865476-0.7071067811865476j)

>>> np.isclose(np.exp(-1j*ϑ), abs(δj)/δj)
True # 确认两种方法结果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:39:23