netlist = """
V0 1 0 V_in
R_s 1 2 100
D1 2 0
"""
# make notation consistent with text
d1geq, g_eq, d1ieq, ieq = symbols("d1.geq, g_eq, d1.ieq, I_eq")
assumptions = {d1geq: g_eq, d1ieq: ieq}
rules, (A, x, b) = run_MNA(
netlist, "ExplicitDiode", force_solve_all=True, assumptions=assumptions
)
display(Eq(MatMul(A, x), b))
display(Eq(Mul(A, x), b))
for sol in rules.solutions:
display(Eq(sol.lhs, simplify(sol.rhs)))\(\displaystyle \left[\begin{matrix}\frac{1}{R_{s}} & - \frac{1}{R_{s}} & 1\\- \frac{1}{R_{s}} & g_{eq} + \frac{1}{R_{s}} & 0\\1 & 0 & 0\end{matrix}\right] \left[\begin{matrix}v_{1}\\v_{2}\\i_{v1}\end{matrix}\right] = \left[\begin{matrix}0\\- I_{eq}\\V_{in}\end{matrix}\right]\)
\(\displaystyle \left[\begin{matrix}i_{v1} + \frac{v_{1}}{R_{s}} - \frac{v_{2}}{R_{s}}\\v_{2} \left(g_{eq} + \frac{1}{R_{s}}\right) - \frac{v_{1}}{R_{s}}\\v_{1}\end{matrix}\right] = \left[\begin{matrix}0\\- I_{eq}\\V_{in}\end{matrix}\right]\)
\(\displaystyle v_{0} = 0\)
\(\displaystyle v_{1} = V_{in}\)
\(\displaystyle v_{2} = \frac{- I_{eq} R_{s} + V_{in}}{R_{s} g_{eq} + 1}\)
\(\displaystyle i_{v1} = \frac{- I_{eq} - V_{in} g_{eq}}{R_{s} g_{eq} + 1}\)