电学实验模拟器 — 设计文档

← 返回模拟器   |   ← 返回首页

1. 概述

电学实验模拟器面向中小学电学教学,在虚拟画布上搭建电路、运行实验、观察现象。支持常见的电学元器件——电源、开关、灯泡、电阻、滑动变阻器、电压表和电流表。元器件参数可自定义,实验过程中可随时调节开关和变阻器,实时观察灯泡亮度、电表读数等变化。

模拟器在底层使用改进节点分析法(Modified Nodal Analysis, MNA)对电路进行精确求解。MNA 是 SPICE 等工业级电路仿真器的核心算法,能够处理任意拓扑的线性电路。


2. 核心物理定律

2.1 欧姆定律

电路中,流过导体的电流与导体两端的电压成正比,与导体的电阻成反比:

\[ I = \frac{V}{R} \]

其中 \(I\) 为电流(安培 A),\(V\) 为电压(伏特 V),\(R\) 为电阻(欧姆 Ω)。

2.2 基尔霍夫电流定律(KCL)

在电路的任一节点上,流入节点的电流之和等于流出节点的电流之和:

\[ \sum_{k} I_k = 0 \]

2.3 基尔霍夫电压定律(KVL)

沿任一闭合回路绕行一周,各元件电压降的代数和为零:

\[ \sum_{k} V_k = 0 \]

3. 改进节点分析法(MNA)

3.1 基本原理

改进节点分析法将 KCL 和 KVL 统一为一个矩阵方程。选择电路中所有非参考节点(排除地节点),对每个节点写出 KCL 方程;对每个独立电压源补充一个方程以确保其两端电压差等于源电压。

3.2 矩阵结构

\[ \begin{bmatrix} \mathbf{G} & \mathbf{B} \\ \mathbf{C} & \mathbf{D} \end{bmatrix} \begin{bmatrix} \mathbf{v} \\ \mathbf{i} \end{bmatrix} = \begin{bmatrix} \mathbf{s} \\ \mathbf{e} \end{bmatrix} \]

其中各块的含义:

维度含义
\(\mathbf{G}\)\(n \times n\)电导矩阵——每个电阻性元件向其两端节点贡献电导 \(g = 1/R\)
\(\mathbf{B}\)\(n \times m\)电压源关联矩阵——标记每个电压源连接在哪个节点对上
\(\mathbf{C}\)\(m \times n\)\(\mathbf{B}^T\),确保对称性
\(\mathbf{D}\)\(m \times m\)零矩阵(纯电压源无内阻时)
\(\mathbf{v}\)\(n \times 1\)未知量——各节点电压
\(\mathbf{i}\)\(m \times 1\)未知量——流过各电压源的电流
\(\mathbf{s}\)\(n \times 1\)注入节点的已知电流源(本模拟器中全为零)
\(\mathbf{e}\)\(m \times 1\)已知——各电压源的电压值

3.3 矩阵组装规则

对于连接在节点 \(i\) 和 \(j\) 之间的电阻 \(R\)(电导 \(g = 1/R\)):

\[ \begin{aligned} G_{ii} &+= g, \quad G_{jj} += g \\ G_{ij} &-= g, \quad G_{ji} -= g \end{aligned} \]

对于连接在节点 \(i\) (+) 和 \(j\) (−) 之间的电压源 \(V_s\)(第 \(k\) 个电压源):

\[ B_{ik} = 1, \quad B_{jk} = -1, \quad C_{ki} = 1, \quad C_{kj} = -1, \quad e_k = V_s \]

3.4 求解

组装好矩阵后,使用高斯消元法(部分选主元)求解线性方程组 \(\mathbf{A}\mathbf{x}=\mathbf{b}\)。从解向量中提取各节点电压和各元件电流,计算功率 \(P = VI\)。

3.5 特殊元件处理

元件处理方式
闭合开关等效为 0.001Ω 小电阻,近似短路
断开开关电导为 0,从矩阵中排除
电压表内阻 1MΩ,并联在被测元件两端——高内阻确保测量时不显著分流
电流表内阻 0.001Ω,串联在电路支路中——低内阻确保测量时不显著分压
滑动变阻器电阻值由滑块位置在 minR 和 maxR 之间线性插值
灯泡非欧姆元件,两遍求解——电阻随电压变化(冷态为热态 1/10),详见第 5 节

4. 使用指南

4.1 元器件列表

元件符号默认参数可调参数
电源(电池) 9V电压 1.5–24V
开关 闭合开/关
灯泡 额定 3V, 1W额定电压 1–24V, 额定功率 0.1–10W
电阻 100Ω电阻 1–1000Ω
滑动变阻器 0–200Ω, 中点最大电阻 1–1000Ω, 滑块位置 0–100%
电压表 V 内阻 1MΩ只读
电流表 A 内阻 0.001Ω只读

4.2 基本操作

操作方式
放置元件左侧面板点击元件 → 画布上点击放置
旋转元件选中元件后点击"旋转"按钮(或按 R 键)
移动元件拖拽选中元件
连线点击元件端子(蓝色圆点)→ 点击另一个端子完成连线
切换开关先点击选中,再点击切换开/关
调节变阻器拖拽画布上变阻器的红色箭头,或在参数面板调节滑块
修改参数选中元件后在右侧参数面板调节
缩放画布删除元件/导线选中后点击"删除"按钮(或按 Delete 键)
撤销操作Ctrl+Z 撤销最近改动
导出/导入左侧"导出电路"/"导入电路"按钮(Ctrl+S 快捷保存为 JSON 文件)
缩放画布鼠标滚轮
平移画布右键拖拽(或 Ctrl+拖拽 / 中键拖拽)
取消操作Esc 键(或右键点击)退出放置/连线模式

4.3 实验探索


5. 灯泡模型(非欧姆特性)

5.1 真实灯丝特性

白炽灯泡的钨丝在通电后急剧升温(可达 2500K),金属电阻率随温度升高而增大。因此灯泡是典型的非欧姆元件——其 I-V 曲线并非直线,电阻随两端电压升高而增大。

5.2 两遍求解法

参考 PhET 交互式模拟的做法,灯泡电阻通过两遍求解确定:

  1. 第一遍:将灯泡设为热态电阻 \(R_{\text{hot}} = V_{\text{rated}}^2 / P_{\text{rated}}\),求解电路得到灯泡两端电压 \(V\)
  2. 计算实际电阻:\(R = R_{\text{cold}} + (R_{\text{hot}} - R_{\text{cold}}) \cdot \left(\frac{V}{V_{\text{rated}}}\right)^2\),其中 \(R_{\text{cold}} = R_{\text{hot}} / 10\)
  3. 第二遍:使用计算出的电阻重新求解电路

该方法避免了迭代收敛问题,同时保持了物理合理性:低电压时电阻接近冷态,额定电压时达到热态设计值,过压时电阻进一步升高。

5.3 亮度渲染

\[ \text{brightness} = \frac{P}{P_{\text{rated}}} \]

亮度在 0 到 1 之间,通过径向渐变模拟灯丝发光——低功率暗红,满功率亮白。


6. 电路文件的导出与导入

电路可保存为 JSON 文件,方便学生提交作业或教师分发示例。文件结构:

{
  "version": 1,
  "comps": [
    { "id": 0, "type": "battery", "col": -1, "row": 0, "orientation": "horizontal",
      "params": { "voltage": 9 } },
    ...
  ],
  "wires": [
    { "compA": 0, "termA": 0, "compB": 2, "termB": 1 },
    ...
  ]
}

每个元件保留完整参数(含额定电压、额定功率、变阻器位置等),导入时自动还原完整电路状态。Ctrl+S 可快速保存。


7. 教学要点

  1. 电路是模型:模拟器的导线理想无阻,电源无内阻——这是简化模型。实际电路中导线有微小电阻、电池有内阻
  2. 电表不是被动元件:电压表的高内阻确保它不影响被测电路(并联时几乎不分流);电流表的低内阻确保它不影响被测支路(串联时几乎不分压)
  3. 短路危险:导线直接连接电池两端时,电阻接近零导致电流极大——真实场景中会烧毁电源或导线
  4. 串联 vs 并联:串联电流相同、电压分配;并联电压相同、电流分配——这是电路分析的两大基石
  5. 变阻器的分压/限流:滑动变阻器可作分压器或限流器,两种接法功能不同
  6. 灯泡的非欧姆特性:灯泡电阻随电压/功率变化——低电压时电阻小(冷态),高电压时电阻大(热态),可引导学生对比欧姆定律的适用条件
  7. 额定值与实际值:灯泡标有额定电压和额定功率,只有工作在额定电压下才达到额定功率;画布上显示实时电压、功率和电阻,方便对比