电路微分方程RLC电路Matlab建模simulink仿真绘图我桌上那台老示波器又闪了两下八成是里面的滤波电容又该换了。这玩意儿折腾了我大半个月正好趁着研究RLC电路的机会把之前积累的建模经验整理整理。咱们今天就用Matlab和Simulink来玩转这个经典电路顺便看看微分方程怎么在仿真里活过来。先看这个简单的RLC串联电路电压源、电阻、电感、电容四个家伙串成一串。根据基尔霍夫定律咱能写出它的微分方程Ld²i/dt² Rdi/dt (1/C)*i dVs/dt。不过实际操作时我更喜欢用状态方程的形式来处理毕竟好往代码里怼。打开Matlab脚本咱们先定义参数。假设R10ΩL0.5HC0.01F这参数组合会呈现过阻尼特性R 10; % 别用0.1这种坑爹值仿真容易爆炸 L 0.5; C 0.01;接下来是核心的微分方程函数这里用向量形式表示状态变量function dx rlc_ode(t, x, R, L, C) Vs 5; % 直流电源突然接入 dx zeros(2,1); dx(1) x(2); % x(1)是电容电压Vc dx(2) (Vs - x(1) - R*x(2)) / (L*C); % 二阶导数项 end注意这里把电容电压作为状态变量而不是电流。这样做的好处是在Simulink里搭建模型时会比较直观毕竟电压是看得见摸得着的量。接上ODE45求解器跑仿真[t, x] ode45((t,x) rlc_ode(t,x,R,L,C), [0 2], [0; 0]); plot(t, x(:,1)); % 画出电容电压波形 grid on; title(过阻尼响应曲线);这时候应该能看到典型的指数衰减曲线没有振荡的那种。如果把电阻调小到2Ω立马就能看到振荡出现——这就是参数调整的魔力。电路微分方程RLC电路Matlab建模simulink仿真绘图不过总写代码也不是个事咱们切到Simulink搞点可视化操作。新建模型从库里拖出这些宝贝电压源Step模块改下起始时间串联的RLC元件电压测量模块Scope显示重点说下电感的处理Simulink里的电感模块需要初始电流设定。如果是零状态响应直接留空就行。但要是想模拟带电感的突然断电这个初始值就派上用场了。连好线后按CtrlT跑仿真这时候可能会遇到代数环报错——别慌八成是测量模块和电源形成了闭环。在Configuration Parameters里把Solver改成ode23tb基本上能解决大部分诡异问题。最后来个对比实验同时观察理论解和仿真结果% 理论解计算 alpha R/(2*L); omega0 1/sqrt(L*C); t 0:0.01:2; Vc_theory 5*(1 - exp(-alpha*t).*(cosh(sqrt(alpha^2-omega0^2)*t) alpha/sqrt(alpha^2-omega0^2)*sinh(sqrt(alpha^2-omega0^2)*t)))); % 画对比图 hold on plot(t, Vc_theory, r--) legend(仿真结果,理论解)两条曲线应该基本重合要是有明显偏差记得检查是不是步长设太大了。仿真嘛本来就是近似但误差超过5%就得找原因了。折腾完这一套总算明白当年老师为啥总拿RLC电路说事了——这玩意儿就像个微缩版的电子世界微分方程、数值计算、实际应用全打包在一个电路里。下次再修示波器至少知道该测哪的波形了。