技术实现请求:同一界面展示xy与uv平面的复变换点映射
复变换可视化实现方案
依赖库安装
首先确保安装所需的Python库:
pip install numpy matplotlib
完整实现代码
import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import ConnectionPatch # 生成单位圆上的100个点 theta = np.linspace(0, 2 * np.pi, 100, endpoint=False) z = np.cos(theta) + 1j * np.sin(theta) # 执行复变换 f(z) = z^50 - 2z + 1 w = z ** 50 - 2 * z + 1 # 提取坐标 x, y = z.real, z.imag u, v = w.real, w.imag # 创建画布与子图 fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 7)) # 绘制XY平面(单位圆) ax1.add_patch(plt.Circle((0, 0), 1, fill=False, color='gray', linestyle='--')) ax1.scatter(x, y, color='blue', s=30, label='原始点') ax1.set_title('XY平面(单位圆)') ax1.set_xlabel('X') ax1.set_ylabel('Y') ax1.axis('equal') ax1.legend() # 绘制UV平面(变换结果) ax2.scatter(u, v, color='red', s=30, label='变换后点') ax2.set_title('UV平面(复变换 $f(z)=z^{50}-2z+1$ 结果)') ax2.set_xlabel('U') ax2.set_ylabel('V') ax2.axis('equal') ax2.legend() # 添加对应点的虚线箭头连接 for i in range(len(z)): conn = ConnectionPatch( xyA=(x[i], y[i]), coordsA=ax1.transData, xyB=(u[i], v[i]), coordsB=ax2.transData, linestyle='--', color='gray', arrowstyle='->', linewidth=0.8 ) fig.add_artist(conn) plt.tight_layout() plt.show()
代码说明
- 点生成:用
np.linspace生成0到2π的100个等分角度,通过三角函数得到单位圆上的复数点。 - 复变换计算:直接利用Python的复数运算特性,批量计算变换后的结果。
- 可视化设置:两个子图分别展示原始平面与变换平面,
axis('equal')保证坐标轴比例一致,避免图形变形。 - 对应点连接:使用
ConnectionPatch实现跨子图的虚线箭头连接,清晰展示每个点的映射关系。
内容的提问来源于stack exchange,提问作者AgnostMystic
相关产品推荐
相关产品推荐

