import numpy as np

import matplotlib.pyplot as plt



# 设置中文字体

plt.rcParams["font.family"] = ["SimHei"]

plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题



# 创建极坐标系网格

r = np.linspace(0.1, 2, 1000)  # 径向距离,避免r=0的奇点

theta = np.linspace(0, 2*np.pi, 1000)  # 角度范围

R, Theta = np.meshgrid(r, theta)



# 电流参数设置

t = 0  # 观察时间点

omega = 1  # 角频率

I0 = 1  # 基频电流振幅

I3 = 0.2  # 三倍频电流振幅,设置为基频的50%以体现增强效果



# 磁场计算

# 基频磁场(各向同性,仅与距离成反比)

B_base = (I0 * np.sin(omega * t) / R)

# 含三倍频增强的磁场(角度相关调制)

B_harmonic = (I0 * np.sin(omega * t) / R)  + (I3/I0) * np.cos(3 * Theta)



# 创建对比图形

fig, (ax1, ax2) = plt.subplots(1, 2, subplot_kw={'projection': 'polar'}, figsize=(16, 8))



# 设置统一的颜色范围,便于对比

vmin, vmax = np.min(B_harmonic), np.max(B_harmonic)



# 绘制纯基频磁场分布

c1 = ax1.pcolormesh(Theta, R, B_base, cmap='viridis', shading='auto', vmin=vmin, vmax=vmax)

fig.colorbar(c1, ax=ax1, label='磁场强度 (相对值)')

ax1.set_title('纯基频电流的磁场分布', fontsize=14)

ax1.set_rlabel_position(22.5)  # 调整径向标签位置



# 绘制含三倍频增强的磁场分布

c2 = ax2.pcolormesh(Theta, R, B_harmonic, cmap='viridis', shading='auto', vmin=vmin, vmax=vmax)

fig.colorbar(c2, ax=ax2, label='磁场强度 (相对值)')

ax2.set_title('含3倍频增强效果的磁场分布', fontsize=14)

ax2.set_rlabel_position(22.5)



# 添加整体标题

plt.suptitle('线电流磁场极坐标分布对比: 基频 vs 三倍频增强', fontsize=16, y=1.05)

plt.tight_layout()

plt.show()3