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

Python绘制含线性代数求解的二元函数3D图遇meshgrid问题求助

问题解决:meshgrid矩阵下的电磁学3D绘图适配

核心问题

你的CalcularTransformador函数仅支持标量输入,但meshgrid生成的是二维数组(矩阵形式),直接传入会导致阻抗矩阵Z的维度不匹配,无法完成线性方程组的求解,进而无法生成可绘图的结果。

修改后的完整代码

import numpy as np
import matplotlib.pyplot as plt

# 全局参数定义
R1 = 0.4 * 3.5
R2 = R1
L1 = 83e-6
L2 = L1
C1 = 0.47e-6
C2 = C1
Rc = 10
Vp = 2 / np.pi * 5  # 用numpy的pi适配数组运算

def CalcularTransformador(K, w):
    # 利用numpy广播计算电抗,支持二维数组输入
    XL1 = 1j * w * L1
    XL2 = 1j * w * L2
    XC1 = (-1j) / (w * C1)
    XC2 = (-1j) / (w * C2)
    
    M = K * np.sqrt(L1 * L2)
    XM = 1j * w * M
    
    # 计算负载支路的等效阻抗
    Z_load = (Rc * XC2) / (Rc + XC2)
    Z2 = XL2 + R2 + Z_load
    
    # 构造批量阻抗矩阵:形状为 (2,2,N,M),适配K和W的二维形状
    Z = np.array([
        [R1 + XL1 + XC1, -XM],
        [-XM, Z2]
    ])
    # 构造电压向量:形状为 (2,N,M)
    V = np.array([Vp * np.ones_like(K), np.zeros_like(K)])
    
    # 批量求解线性方程组 Ax = b,自动适配每个位置的2x2矩阵
    i = np.linalg.solve(Z, V)
    
    # 计算V2,形状为(N,M)
    V2 = i[1] * Z2
    return i[0], i[1], V2

# 生成网格数据
w_angular = np.linspace(150000, 260000, 100)  # 减少点数提升速度,可按需调回1000
k = np.linspace(0, 1, 100)
K, W = np.meshgrid(k, w_angular)

# 获取计算结果
i0, i1, V2 = CalcularTransformador(K, W)

# 绘图示例:绘制V2的幅值(复数需取模才能可视化)
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(K, W, np.abs(V2), cmap='RdBu', edgecolor='none')
ax.set_xlabel('耦合系数k')
ax.set_ylabel('角频率ω')
ax.set_zlabel('输出电压幅值|V2|')
ax.set_title('变压器输出电压随耦合系数和角频率的变化')
plt.colorbar(surf, shrink=0.5, aspect=5)
plt.show()

关键修改说明

  • 替换标量运算为numpy广播:所有电抗计算改用numpy函数,自动适配meshgrid生成的矩阵维度,无需手动循环处理每个元素。
  • 批量线性方程组求解:使用np.linalg.solve替代inv+dot,既高效稳定,又天然支持批量矩阵求解,适配二维网格的每个计算点。
  • 复数结果可视化处理:返回的电流、电压均为复数,绘图时必须取幅值(np.abs())、实部或虚部,因为plot_surface和imshow仅支持实数数组。
  • 优化模块导入:移除冗余的模块导入,避免命名冲突,统一使用numpy的数学函数适配数组运算。
  • 调整网格点数:默认将1000改为100以提升运行速度,若需要更高精度可改回原数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:50:13