如何用Lcapy计算并联RLC谐振回路的Iout/Iin传递函数
并联RLC谐振回路传递函数(Iout/Iin)的Lcapy正确实现
问题说明
尝试用Lcapy计算并联RLC谐振回路的传递函数H(s) = Iout/Iin,但原代码调用了Lcapy中不存在的current()和Iin()方法,导致无法运行。需要利用Lcapy提供的impedance()、节点电压或导纳相关方法来实现。
正确代码实现
import lcapy from lcapy import s from IPython.display import display, Math import sympy as sp # 定义并联RLC电路网表 netlist = """ Iin 1 0 Cp 1 0 C Rp 1 0 R Lp 1 0 L """ # 创建电路对象并生成s域模型 circuit = lcapy.Circuit(netlist) s_model = circuit.s_model() # 通过节点电压与阻抗推导传递函数 # 获取RLC并联总阻抗 Z_parallel = s_model.impedance(1, 0) # 输出电流Iout为流过Rp的电流:Iout = V1/R = (Iin * Z_parallel)/R # 传递函数H = Iout/Iin = Z_parallel / R H = Z_parallel / lcapy.R # 整理为标准二阶谐振系统形式 H_simplified = sp.simplify(H) H_standard = sp.collect(sp.expand(H_simplified), s) # 显示格式化后的结果 display(Math(sp.latex(H_standard)))
代码解释
- 网表定义:清晰描述电流源
Iin与电容Cp、电阻Rp、电感Lp的并联拓扑结构 - 阻抗计算:调用
impedance(1,0)直接获取节点1到地的并联总阻抗Z_parallel - 传递函数推导:根据欧姆定律,流过电阻的电流
Iout = V1/R,而节点电压V1 = Iin * Z_parallel,因此传递函数简化为Z_parallel / R - 表达式整理:借助SymPy的
simplify()和collect()方法,将结果整理为标准二阶系统形式,最终得到与预期一致的结果:
$$
H(s) = \frac{\frac{s}{RC}}{s^2 + \frac{s}{RC} + \frac{1}{LC}}
$$
内容的提问来源于stack exchange,提问作者coder
相关产品推荐
相关产品推荐

