如何用Python求解线性方程组计算电阻R3、R4?SymPy实现遇错
问题:SymPy求解电阻方程组结果异常
问题背景
我查阅了诸多类似场景的计算指南,选择使用SymPy库求解电阻R3和R4的方程组,但未能得到正确结果。
原始方程组
用于计算电阻R3和R4的方程组:
1/r3 + 1/r4 = 1/r_ref Vneg * r3/(r3+r4) = Vbias
转换后的表达式
我将方程组进一步转换为:
r4 = r3 * r_ref / (r3 - r_ref) r4 = (Vneg / Vbias) * r3 - r3
其中r_ref为可配置的已知电阻,Vneg和Vbias为已知电压。
错误代码及结果
我编写了如下代码,但无法得到正确结果:
from sympy import * Vbias = -717.39 Vneg = -5000 r_ref = 43 y1 = (Vneg/Vbias) * x - x y2 = x*r_ref / (x - r) solve((y1,y2))
得到的结果为:
{x: 0.0}
问题修正
错误点分析
- 未定义符号变量:代码中使用的
x和r没有通过SymPy的symbols()函数定义,SymPy无法识别这些变量为待求解的符号。 - 变量名拼写错误:第二个表达式中的
r应为r_ref,与转换后的式子和已知变量名保持一致。
修正后的代码
from sympy import symbols, solve # 定义待求解的符号变量r3 r3 = symbols('r3') Vbias = -717.39 Vneg = -5000 r_ref = 43 # 根据转换后的表达式构建等式 eq1 = (Vneg / Vbias) * r3 - r3 eq2 = (r3 * r_ref) / (r3 - r_ref) # 求解eq1等于eq2的方程 r3_solutions = solve(eq1 - eq2, r3) # 计算对应的r4值 r4_solutions = [(Vneg / Vbias) * val - val for val in r3_solutions] print("r3的解:", r3_solutions) print("r4的解:", r4_solutions)
结果说明
运行修正后的代码会得到符合物理意义的电阻值,解决了原代码返回{x:0.0}的错误问题。
内容的提问来源于stack exchange,提问作者yunfei
相关产品推荐
相关产品推荐

