---
title: Kirchhoff Network Analysis
module: Direct-Current Circuits
moduleNumber: 5
lessonNumber: 2
order: 502
summary: >
  Once a circuit has more than one loop, no amount of series-parallel folding will
  reduce it — you need the two conservation laws written as equations. Kirchhoff's
  junction law is charge conservation at a node; his loop law is energy conservation
  around a closed path. We turn a labelled network into a linear system in node
  voltages or mesh currents, fix the sign conventions so a negative answer just means
  a reversed arrow, and use power balance as an independent check that the algebra
  describes the circuit that was actually built.
topics: [Direct-Current Circuits]
draft: false
sources:
  - book: Tipler & Mosca
    ref: "Ch. 25 — Electric Current and Direct-Current Circuits; §§25-4–25-5 Combinations of Resistors; Kirchhoff's Rules"
---

Kirchhoff analysis represents a circuit as nodes connected by elements. An ideal wire
segment belongs to one node because its potential drop is negligible in the lumped
model. Voltage is therefore a difference between nodes, while current is assigned a
reference direction through each branch. A negative solved current reverses the
reference direction; the original equations remain valid.

The junction rule is charge conservation. In steady state, charge cannot accumulate
indefinitely at a node, so algebraic current entering equals algebraic current leaving.
The loop rule is energy conservation per unit charge. Traversing a resistor with its
assigned current gives a potential decrease; traversing an ideal source from negative
to positive terminal gives a potential increase. A complete closed traversal has zero
net potential change.

$$
% caption: Junction (node) rule. Charge cannot pile up at a node in steady state, so the inflows balance the outflows: $I_1+I_2=I_3+I_4$. Reference arrows are chosen freely; a branch current that solves negative simply runs opposite its arrow, leaving the equation intact.
\begin{tikzpicture}[>=stealth,font=\footnotesize,scale=1.0]
\definecolor{acc}{HTML}{4A6FA5}
\draw[black,thick] (-1.7,0)--(1.7,0);
\draw[black,thick] (0,-1.5)--(0,1.5);
\filldraw[draw=acc,fill=acc!12] (0,0) circle (0.10);
\draw[->,very thick] (-1.45,0)--(-0.62,0);
\node[above] at (-1.05,0.02) {$I_1$};
\draw[->,very thick] (0,1.40)--(0,0.62);
\node[right] at (0.06,1.05) {$I_2$};
\draw[->,very thick] (0.62,0)--(1.45,0);
\node[above] at (1.05,0.02) {$I_3$};
\draw[->,very thick] (0,-0.62)--(0,-1.40);
\node[right] at (0.06,-1.05) {$I_4$};
\node[black] at (0.52,0.52) {$V_n$};
\end{tikzpicture}
$$

A resistive branch between nodes a and b has current referenced from a to b. Ohm's law
then gives the branch equation as the node-potential difference divided by resistance.
Writing every branch in this one orientation turns the junction rule into a linear
node equation. One node potential is chosen as a reference; only potential
differences enter the circuit physics.

Mesh analysis instead uses loop currents. A resistor shared by two meshes carries
the algebraic difference of those mesh currents. In two loops with resistors R1 and
R2 and shared resistor Rs, the loop equations contain the shared drop proportional to
the difference of mesh currents. The equations are linear and can be solved together.

For example, two clockwise mesh currents with sources E1 and E2 obey equations whose
shared-resistor terms are proportional to I1 minus I2 and I2 minus I1. Solving the
pair fixes every branch current and then every resistor voltage. Substitution back
into each loop gives a direct energy-conservation check. The method is valid only
after the circuit model identifies independent loops and lumped elements; distributed
inductance or time-dependent fields require a broader electromagnetic treatment.

A disciplined sign convention prevents most network errors. Select a traversal
direction for each loop and retain it through every element. Across a resistor,
potential decreases by the assigned branch current times resistance when traversal is
with that current. Across an emf source, potential rises from its negative terminal to
its positive terminal. If a current later solves negative, the actual branch direction
is opposite the selected arrow, while all original equations remain valid.

Node and mesh analysis of the same lumped dc network must give the same branch
currents and voltages; the worked two-loop calculation below carries the numbers
through both a solve and a substitution check.

## Reference node and branch-current signs

Select one conductor as a reference and set its potential to zero. This choice does
not ground the physical circuit unless that conductor is
actually connected to Earth; it fixes the arbitrary additive constant in all node
potentials. Every other node voltage is measured relative to this selected node.
Changing the reference changes the reported numerical potentials but leaves every
voltage difference, branch current, and power unchanged.

Assign a branch-current direction before writing equations. For a resistor between
nodes a and b, current referenced from a to b is the voltage difference from a to b
divided by resistance. A negative result means the actual current flows from b to a.
This convention allows one junction equation to include all attached branches with
their algebraic signs. It avoids choosing current directions from visual intuition,
which can fail in networks with multiple sources.

The reference-node method assumes lumped dc elements. A time-varying circuit can
have induced electric fields whose loop integral is not zero, requiring a more
general electromagnetic description.

### Bridge networks and reduction limits

Series and parallel reduction follows node labels, not visual proximity. Two elements
are in parallel only when both terminals connect to the same two nodes. Two elements
are in series only when their shared node has no other branch, so the same current
must pass through both. A bridge network violates this simple series condition because
the central branch joins nodes that already connect to other elements. Combining its
outer resistors as though they were independent series pairs discards a possible
current path.

A Wheatstone bridge is a common example. Four resistors form two paths between source
terminals, while a fifth resistor joins the intermediate nodes. The bridge current is
zero only under a particular resistance ratio. Otherwise the intermediate node
potentials differ and current flows through the central branch. Treat both midpoint
potentials as unknowns, write one charge-conservation equation at each, and obtain
every branch current without requiring a series/parallel reduction.

The bridge becomes reducible only after a justified condition makes its central branch
current zero or after an equivalent transformation has been applied. Node equations
remain valid whether or not such a simplification exists, making them the reliable
method for arbitrary resistive networks.

## Node-voltage equations in conductance form

Node-voltage analysis writes every branch current as a voltage difference divided by
its resistance. For an unknown node $a$ connected through resistors to nodes
$b,c,\ldots$, the algebraic current sum at $a$ is

$$
\sum_j\frac{V_a-V_j}{R_{aj}}=I_{\rm inj},
$$

where $I_{\rm inj}$ is a specified current injected into the node by independent
current sources under the selected sign convention. Conductance notation,
$G_{aj}=1/R_{aj}$, gives

$$
\left(\sum_jG_{aj}\right)V_a-\sum_jG_{aj}V_j=I_{\rm inj}.
$$

The coefficient multiplying $V_a$ is the sum of conductances connected to node
$a$. Each neighboring node appears with a negative conductance. This pattern turns a
large resistive network into a linear system. It also exposes a drawing error: two
components drawn close together but separated by an ideal wire belong to the same
node, while components sharing no pair of nodes are not a parallel pair.

$$
% caption: Node equation in conductance form. Node $a$ connects to known-potential nodes $b,c,d$ through conductances $G_1,G_2,G_3$. Each outward branch current is $(V_a-V_j)G_j$, and their signed sum equals the injected current $I_{\rm inj}$: $\left(\sum_j G_j\right)V_a-\sum_j G_jV_j=I_{\rm inj}$.
\begin{tikzpicture}[>=stealth,font=\footnotesize,scale=1.0]
\definecolor{acc}{HTML}{4A6FA5}
\filldraw[draw=black,fill=black!8] (0.55,2.75) circle (2pt); \node[left] at (0.42,2.78) {$b$};
\filldraw[draw=black,fill=black!8] (0.55,0.35) circle (2pt); \node[left] at (0.42,0.32) {$c$};
\filldraw[draw=black,fill=black!8] (5.05,1.55) circle (2pt); \node[right] at (5.18,1.55) {$d$};
\draw[thick] (2.70,1.55)--(0.55,2.75) node[midway,above] {$G_1$};
\draw[thick] (2.70,1.55)--(0.55,0.35) node[midway,below] {$G_2$};
\draw[thick] (2.70,1.55)--(5.05,1.55) node[midway,above] {$G_3$};
\filldraw[draw=acc,fill=acc!12] (2.70,1.55) circle (2.6pt); \node[above right] at (2.78,1.60) {$a$};
\draw[->,black,very thick] (2.70,0.35)--(2.70,1.30);
\node[black,right] at (2.80,0.75) {$I_{\rm inj}$};
\end{tikzpicture}
$$

In a numerical three-node network, retain source values and resistances in base SI
units until the equations have been assembled. A kilo-ohm resistance may be written
as $10^3\ \mathrm\Omega$ during substitution; a milliampere source is
$10^{-3}\ \mathrm A$. Conductance coefficients then have siemens, and every row of
the node system has units of amperes. Unit consistency catches an omitted resistance
or a current-source sign selected opposite to the equation convention.

## Voltage sources and supernodes

An ideal voltage source fixes a difference between its terminals but does not give a
resistance through which its branch current can be written immediately. If one source
terminal is the reference node, its other node voltage is known directly. If a source
lies between two unknown nodes $a$ and $b$, write the constraint

$$
V_a-V_b=V_s
$$

with polarity stated by the source symbol. Then apply the junction rule to a
supernode enclosing both nodes and the source. Currents through every resistor
connecting that enclosure to the rest of the circuit appear in the supernode
equation; current internal to the source branch does not need to be introduced as a
separate unknown.

$$
% caption: Supernode around an ideal voltage source between two unknown nodes. The dashed boundary encloses nodes $a$, $b$ and the source $V_s$. One junction equation collects every resistive branch that crosses the boundary ($R_1$, $R_2$ here); the source fixes the internal constraint $V_a-V_b=V_s$ without adding a branch-current unknown.
\begin{tikzpicture}[>=stealth,font=\footnotesize,scale=1.0]
\definecolor{acc}{HTML}{4A6FA5}
\draw[acc,dashed,thick] (1.20,0.50) rectangle (4.40,2.50);
% nodes a,b
\filldraw[draw=acc,fill=acc!12] (1.90,1.50) circle (2.4pt); \node[above] at (1.90,1.62) {$a$};
\filldraw[draw=acc,fill=acc!12] (3.70,1.50) circle (2.4pt); \node[above] at (3.70,1.62) {$b$};
% source between a and b
\draw[black,thick] (1.90,1.50)--(2.70,1.50);
\draw[thick] (2.70,1.10)--(2.70,1.90);
\draw[thick] (2.95,1.30)--(2.95,1.70);
\draw[black,thick] (2.95,1.50)--(3.70,1.50);
\node[black,below] at (2.82,1.05) {$V_s$};
% R1 exits left
\draw[black,thick] (1.90,1.50)--(0.75,1.50);
\draw[black,thick] (0.15,1.20) rectangle (0.75,1.80);
\node at (0.45,1.50) {$R_1$};
\draw[black,thick] (0.15,1.50)--(-0.25,1.50);
% R2 exits right
\draw[black,thick] (3.70,1.50)--(4.85,1.50);
\draw[black,thick] (4.85,1.20) rectangle (5.45,1.80);
\node at (5.15,1.50) {$R_2$};
\draw[black,thick] (5.45,1.50)--(5.85,1.50);
\end{tikzpicture}
$$

Dependent sources use the same structure, with an additional equation defining the
controlled voltage or current. A numerical solver must receive that control relation
explicitly. Omitting it creates an underdetermined system even when each drawn loop
appears to have an equation.

## Two-loop mesh network

> **Worked example (two-loop mesh network).** Two clockwise mesh currents $I_1$
> and $I_2$ share a central resistor. The left loop contains
> $R_1=4.0\ \mathrm\Omega$ and source $\mathcal E_1=12\ \mathrm V$; the right loop
> contains $R_2=6.0\ \mathrm\Omega$ and source $\mathcal E_2=3.0\ \mathrm V$; both
> share $R_s=2.0\ \mathrm\Omega$. Find the branch currents and the shared-resistor
> drop.
>
> With both traversals clockwise and each source polarity a voltage rise in its
> traversal, the mesh equations are
>
> $$
> \begin{aligned}
> (R_1+R_s)I_1-R_sI_2&=\mathcal E_1,\\
> -R_sI_1+(R_2+R_s)I_2&=\mathcal E_2.
> \end{aligned}
> $$
>
> Substituting the values,
>
> $$
> 6I_1-2I_2=12,\qquad -2I_1+8I_2=3.
> $$
>
> Solving the pair gives $I_1=2.32\ \mathrm A$ and $I_2=0.955\ \mathrm A$. The
> shared resistor carries $I_s=I_1-I_2=1.36\ \mathrm A$ in the direction of mesh 1,
> so its drop is $I_sR_s=2.73\ \mathrm V$.

$$
% caption: The worked two-loop network. Sources $E_1$ and $E_2$ drive clockwise mesh currents $I_1$ and $I_2$; the shared resistor $R_s$ carries their difference $I_s=I_1-I_2$. Substituting the solved currents back into either loop confirms the signed resistor drops and source rises sum to zero.
\begin{tikzpicture}[>=stealth,font=\footnotesize,scale=1.0]
\definecolor{acc}{HTML}{4A6FA5}
% frame and middle branch
\draw[black,thick] (0,0)--(5.20,0);
\draw[black,thick] (0,0)--(0,1.05);
\draw[black,thick] (0,1.45)--(0,2.50);
\draw[black,thick] (5.20,0)--(5.20,1.05);
\draw[black,thick] (5.20,1.45)--(5.20,2.50);
% top-left with R1
\draw[black,thick] (0,2.50)--(1.00,2.50);
\draw[black,thick] (1.00,2.32) rectangle (1.60,2.68);
\node[above] at (1.30,2.72) {$R_1$};
\draw[black,thick] (1.60,2.50)--(2.60,2.50);
% top-right with R2
\draw[black,thick] (2.60,2.50)--(3.60,2.50);
\draw[black,thick] (3.60,2.32) rectangle (4.20,2.68);
\node[above] at (3.90,2.72) {$R_2$};
\draw[black,thick] (4.20,2.50)--(5.20,2.50);
% left source E1
\draw[thick] (-0.28,1.05)--(0.28,1.05);
\draw[thick] (-0.16,1.30)--(0.16,1.30);
\node[black,left] at (-0.34,1.18) {$E_1$};
% right source E2
\draw[thick] (4.92,1.05)--(5.48,1.05);
\draw[thick] (5.04,1.30)--(5.36,1.30);
\node[black,right] at (5.54,1.18) {$E_2$};
% middle branch with Rs
\draw[black,thick] (2.60,0)--(2.60,0.90);
\draw[black,thick] (2.60,1.50)--(2.60,2.50);
\draw[black,thick] (2.42,1.00) rectangle (2.78,1.50);
\node[right] at (2.86,1.25) {$R_s$};
% shared-branch current
\draw[->,black,very thick] (2.60,0.85)--(2.60,0.35);
\node[black,left] at (2.52,0.60) {$I_s$};
% mesh currents
\draw[->,acc,very thick] ([shift=(120:0.60)]1.30,1.25) arc (120:-190:0.60);
\node[acc] at (1.30,1.25) {$I_1$};
\draw[->,acc,very thick] ([shift=(60:0.60)]3.90,1.25) arc (60:-230:0.60);
\node[acc] at (3.90,1.25) {$I_2$};
\end{tikzpicture}
$$

Power gives an independent check. Each resistor absorbs $I^2R$ using the current in
that resistor. A source supplies or absorbs power according to whether current enters
its labeled positive terminal. The algebraic sum of powers over all elements must be
zero within rounding. This check catches a loop equation that has the correct current
magnitude but an incorrect source polarity or shared-branch sign.

## Independent equations and network topology

A circuit diagram contains more loops than the number of independent loop equations
when loops share branches. For a connected network with $B$ branches and $N$ nodes,
the number of independent junction equations is $N-1$ after one reference node is
chosen. The number of independent loop equations is

$$
L=B-N+1.
$$

The count prevents redundant equations from being mistaken for new information. A
third loop obtained by adding two previously written loop traversals has an equation
that is the corresponding sum of their equations. It can check arithmetic, but it
cannot determine an additional unknown. A network analysis begins by labeling nodes
and branches, counting unknown branch currents or node voltages, then selecting an
independent equation set of matching size.

Node-voltage equations are compact for networks with many branches meeting at a few
nodes. Mesh equations are compact for planar networks with a small number of loops.
The choice is computational, not physical: both encode charge conservation at nodes
and energy conservation along closed paths. A nonplanar circuit still has loop
equations, but a simple drawn mesh assignment may not provide an independent set.

$$
% caption: Counting independent equations. Four nodes joined by six branches (the square sides plus both diagonals) give $N-1=3$ independent junction equations after a reference node is chosen and $L=B-N+1=3$ independent loop equations. Any further drawn loop is a combination of these.
\begin{tikzpicture}[>=stealth,font=\footnotesize,scale=1.0]
\definecolor{acc}{HTML}{4A6FA5}
\draw[black,thick] (0.55,0.45)--(0.55,2.55)--(3.45,2.55)--(3.45,0.45)--cycle;
\draw[black,thick] (0.55,0.45)--(3.45,2.55);
\draw[black,thick] (0.55,2.55)--(3.45,0.45);
\filldraw[draw=black,fill=black!8] (0.55,0.45) circle (2.6pt); \node[below left] at (0.55,0.45) {$a$};
\filldraw[draw=black,fill=black!8] (0.55,2.55) circle (2.6pt); \node[above left] at (0.55,2.55) {$b$};
\filldraw[draw=black,fill=black!8] (3.45,0.45) circle (2.6pt); \node[below right] at (3.45,0.45) {$c$};
\filldraw[draw=black,fill=black!8] (3.45,2.55) circle (2.6pt); \node[above right] at (3.45,2.55) {$d$};
\node[black,right] at (4.30,2.05) {$B=6$};
\node[black,right] at (4.30,1.50) {$N=4$};
\node[black,right] at (4.30,0.95) {$L=3$};
\end{tikzpicture}
$$

The graph count assumes every branch is an element or ideal connection included in
the model. An ideal voltage source counts as a branch even though its current cannot
be obtained from a conductance relation. A wire that joins points with no element
between them collapses those points into one node before the count is made.

## Matrix form and numerical solution

For unknown node potentials collected in vector $\mathbf v$, node equations have
the matrix form

$$
\mathbf G\mathbf v=\mathbf i.
$$

Each diagonal entry of $\mathbf G$ is the sum of conductances incident on one
unknown node. Each off-diagonal entry is the negative conductance directly joining
the corresponding pair of unknown nodes. The right-hand vector contains independent
current injections and terms associated with known-voltage nodes. This structure is
sparse: a node connects only to a small fraction of all nodes in most physical
networks.

For example, two unknown nodes connected to each other by $R_{12}$ and connected to
known nodes through $R_1$ and $R_2$ give

$$
\begin{bmatrix}
G_1+G_{12} & -G_{12}\\
-G_{12} & G_2+G_{12}
\end{bmatrix}
\begin{bmatrix}V_1\\V_2\end{bmatrix}
=
\begin{bmatrix}I_1\\I_2\end{bmatrix}.
$$

Solving the matrix produces node potentials. Every branch current then follows from
one voltage difference divided by one resistance. Substitution into every original
junction equation checks conservation independently of the linear solver. A nearly
singular matrix often signals a floating portion of circuit with no reference path,
a missing component value, or two equations that describe the same constraint.

Numerical conditioning depends on resistance range and units. A network combining
micro-ohm shunts with mega-ohm input resistances spans twelve orders of magnitude in
conductance. Double precision can still solve many such systems, but rounded input
data and meter loading can dominate the physical uncertainty. Scaling units and
retaining source impedance in the model reduce avoidable numerical loss of
significance.

## Power, polarity, and measurement checks

Power signs give a final conservation test. Under the passive sign convention, an
element absorbs power $P=VI$ when the assigned current enters its labeled positive
terminal. A resistor has positive absorbed power $I^2R$. An ideal voltage source can
have negative absorbed power, identifying delivery to the rest of the network. The
signed sum over all elements satisfies

$$
\sum_kP_k=0.
$$

Verify $\sum_kP_k=0$ with signed power: resistors absorb $I^2R$, while sources may
deliver power. Record branch-current arrows and voltage polarities before
substituting values.

$$
% caption: Passive sign convention. The reference current $I$ enters the $+$ terminal (the short bar marks the other terminal), so $P=VI$ is the power the element absorbs. A resistor always absorbs, $P=I^2R>0$. A source driving the circuit has current leaving its $+$ terminal, so its $P<0$ and it delivers power. The signed powers of all elements sum to zero.
\begin{tikzpicture}[>=stealth,font=\footnotesize,scale=1.0]
\definecolor{acc}{HTML}{4A6FA5}
\draw[black,thick] (1.15,1.05) rectangle (2.75,1.95);
\node at (1.95,1.50) {element};
\draw[black,thick] (0.25,1.50)--(1.15,1.50);
\draw[black,thick] (2.75,1.50)--(3.65,1.50);
\draw[->,acc,very thick] (0.30,1.50)--(0.92,1.50);
\node[acc,above] at (0.60,1.55) {$I$};
\node[black] at (1.00,1.80) {$+$};
\draw[black,thick] (2.86,1.80)--(3.06,1.80);
\end{tikzpicture}
$$

Ammeters and voltmeters change the network they measure. An ammeter's finite series
resistance changes branch current; a voltmeter's finite input resistance adds a
parallel branch. Meter loading is negligible only when instrument resistance is well
separated from the relevant circuit resistance. A complete measurement report states
the meter connection, range, input or burden resistance, and whether the reported
network equations include that instrument.

### Sign conventions, meters, and diagnostic checks

An ammeter belongs in the branch whose current is required. It is therefore inserted
in series, with its positive terminal facing the direction from which conventional
current is expected to enter. An ideal ammeter has zero resistance, but a real meter
has a small burden resistance and removes a measurable fraction of the voltage
available to the rest of a low-resistance branch. Placing an ammeter directly across
an ideal voltage source instead creates an almost zero-resistance path. The resulting
large current can damage the meter, source, or leads and yields no meaningful branch
measurement.

A voltmeter is placed across the two points whose potential difference is wanted. Its
input resistance should be large compared with the resistance already connecting
those points, so that the added parallel path has little effect. The indicated value
is the potential at the red terminal minus the potential at the black terminal.
Reversing the leads reverses the displayed sign without changing the physical
circuit. That signed reading is often more informative than an absolute value: a
negative result can show that an assumed node order or source polarity was opposite
to the actual one.

Current arrows and voltage labels are reference choices, not forecasts. A solved
negative branch current means that the physical current is opposite the arrow used in
the equations. Likewise, a negative value for a labeled voltage means its marked
minus terminal is at the higher potential. There is no need to restart a network
calculation merely because one quantity is negative. The error lies only in changing
the sign convention halfway through a loop equation, in an Ohm-law substitution, or
in the power calculation.

Power balance is a concise diagnostic after all branch currents have been found. For
each element, use the voltage polarity and current arrow already recorded. If current
enters the marked positive terminal, the product $VI$ is absorbed power; if it
enters the negative terminal, the same signed product is negative and the element
delivers power. Resistors should give non-negative $I^2R$ values. Adding source and
resistor powers must give zero within rounding error. A substantial nonzero remainder
usually exposes a missed branch, an incorrect source sign, or a loop equation that
used a voltage rise where traversal required a drop. It can locate an error even when
the linear equations appeared to yield plausible numerical currents.

$$
% caption: Meter connections in a loaded branch. The ammeter (A) sits in series and reads the branch current $I$; the voltmeter (V) spans the resistor terminals in parallel. The $+$ mark and the short bar fix the sensed polarity, so the voltage reading and each element's power sign are unambiguous.
\begin{tikzpicture}[>=stealth,font=\footnotesize,scale=1.0]
\definecolor{acc}{HTML}{4A6FA5}
\draw[black,thick] (0,0)--(0.55,0);
\draw[black,thick] (0.90,0) circle (0.30);
\node at (0.90,0) {A};
\draw[black,thick] (1.20,0)--(1.75,0);
\draw[black,thick] (1.75,-0.28) rectangle (2.45,0.28);
\node at (2.10,0) {R};
\draw[black,thick] (2.45,0)--(3.60,0);
\draw[->,acc,very thick] (0.15,0.58)--(0.85,0.58);
\node[acc,above] at (0.50,0.58) {$I$};
\node[black] at (1.60,0.44) {$+$};
\draw[black,thick] (2.50,0.44)--(2.68,0.44);
% voltmeter in parallel across R
\draw[black,thick] (1.75,-0.28)--(1.75,-1.05)--(1.82,-1.05);
\draw[black,thick] (2.45,-0.28)--(2.45,-1.05)--(2.38,-1.05);
\draw[black,thick] (2.10,-1.05) circle (0.30);
\node at (2.10,-1.05) {V};
\node[black,below] at (0.90,-0.42) {series};
\node[black,below] at (2.10,-1.50) {parallel};
\end{tikzpicture}
$$

## Dependent sources and controlled measurements

A dependent source has an output set by another voltage or current in the same
network. Its diamond symbol distinguishes it from an independent source. A
voltage-controlled voltage source has an output voltage proportional to a sensed
voltage, commonly written $v_o=\mu v_x$. A current-controlled voltage source uses
the controlling branch current instead. Current sources have analogous forms:
their output can be proportional to a control voltage or a control current. The
proportionality constant carries the units needed to make the output a voltage or
current; a voltage gain is dimensionless, while a transconductance has units of
siemens.

The controlling quantity is an ordinary circuit variable within the network. Include
it in the node or loop equations with its stated polarity and reference arrow. For
example, a voltage-controlled source between two nodes creates
the constraint that their voltage difference equals its gain times the sensed branch
voltage. If neither terminal is the reference node, the two nodes form a supernode:
write one current-balance equation around its boundary and one source-constraint
equation inside it. A current-controlled source similarly couples a branch-current
expression into a different junction equation. Dependent-source networks generally
require explicit control equations instead of resistor-only reductions.

Source laws can be identified by measurement when the network is operated in a safe,
linear range. First label the controlling voltage or current with an unambiguous
meter polarity or arrow. Vary that controlling quantity through several known values
while holding the load and independent sources fixed. At every setting, measure the
dependent-source output and record both signed values. A straight-line graph through
the origin supports a proportional law; its slope is the candidate gain. A nonzero
intercept may indicate an offset source, incorrect lead polarity, or loading by the
measurement instrument.

The test must not confuse correlation with the source law. Changing a control current
by changing the load can also change the output through ordinary resistor drops. A
better protocol uses a separate adjustable test source in the control branch and
checks the output under at least two different loads. If the extracted slope remains
the same, the proposed control law is consistent. Substituting that law into the
Kirchhoff equations should then predict the extra measurements. Disagreement points
to a wrong controlling variable, a sign reversal, or a source model outside its
linear operating region.

## Network theorems as equation checks

Thevenin and Norton forms provide compact terminal summaries and checks on a Kirchhoff
solution. They describe the effect of the original equations on a load later
connected at the chosen terminals. For a linear two-terminal network,
the Thevenin form is an ideal voltage $V_{\rm th}$ in series with resistance
$R_{\rm th}$. The Norton form is an ideal current $I_{\rm N}$ in parallel with the
same resistance. Their source parameters must satisfy $V_{\rm th}=I_{\rm N}R_{\rm th}$.
If independently calculated values violate that relation, at least one source or
resistance has been assigned with the wrong sign or terminal reference.

Kirchhoff analysis determines the parameters directly. Remove the load and solve the
terminal node-voltage difference; that open-circuit value is $V_{\rm th}$. For a
resistive network with only independent sources, deactivate ideal voltage sources by
shorting them and ideal current sources by opening them, then find the resistance
seen from the terminals. That resistance is $R_{\rm th}$. With dependent sources
present, they remain active because their values are tied to circuit variables; apply
a test voltage or test current at the terminals and use the resulting ratio instead.
This condition is essential: turning off a dependent source destroys the equation
coupling that defines the original network.

A load change offers a stronger check than one isolated calculation. After solving
the full network for $R_L$, predict the load voltage again from the equivalent
form, $V_L=V_{\rm th}R_L/(R_{\rm th}+R_L)$. Repeat with a distinctly different
load, including an open circuit or a low resistance when the source rating permits.
Both predictions should match the corresponding Kirchhoff node voltages. Agreement at
two loads tests the terminal relation across more than one operating point.

Equivalent resistance is meaningful only at the stated terminals and under the stated
source conditions. Moving either terminal, retaining an attached sensor branch, or
changing a dependent-source control connection defines a different network. A failed
load comparison usually comes from one of these boundary mistakes, a sign error in
the open-circuit voltage, or an omission of a branch while writing the node equations.
Using the equivalent as a second calculation route exposes those boundary mistakes.

$$
% caption: Thevenin reduction at a port. A linear network is replaced, at its terminals $a,b$, by an ideal source $V_{\rm th}$ in series with $R_{\rm th}$. The load voltage predicted by $V_L=V_{\rm th}R_L/(R_{\rm th}+R_L)$ must match the original Kirchhoff solution — and agree for two different loads $R_L$.
\begin{tikzpicture}[>=stealth,font=\footnotesize,scale=1.0]
\definecolor{acc}{HTML}{4A6FA5}
% left network box
\draw[black,thick] (0.20,-0.60) rectangle (1.70,0.60);
\node at (0.95,0) {network};
\draw[black,thick] (1.70,0.30)--(2.15,0.30);
\draw[black,thick] (1.70,-0.30)--(2.15,-0.30);
\filldraw[draw=acc,fill=acc!12] (2.15,0.30) circle (1.8pt);
\filldraw[draw=acc,fill=acc!12] (2.15,-0.30) circle (1.8pt);
\node[acc,right] at (2.24,0.30) {$a$};
\node[acc,right] at (2.24,-0.30) {$b$};
\draw[->,black,very thick] (2.75,0)--(3.35,0);
% right Thevenin loop
\draw[black,thick] (3.70,-0.60)--(5.50,-0.60);
\draw[black,thick] (3.70,-0.60)--(3.70,-0.12);
\draw[thick] (3.56,-0.12)--(3.84,-0.12);
\draw[thick] (3.46,0.12)--(3.94,0.12);
\draw[black,thick] (3.70,0.12)--(3.70,0.60);
\node[black,left] at (3.58,-0.34) {$V_{\rm th}$};
% top wire with Rth
\draw[black,thick] (3.70,0.60)--(4.25,0.60);
\draw[black,thick] (4.25,0.42) rectangle (4.85,0.78);
\node[above] at (4.55,0.82) {$R_{\rm th}$};
\draw[black,thick] (4.85,0.60)--(5.50,0.60);
% right branch load
\draw[black,thick] (5.50,0.60)--(5.50,0.30);
\draw[black,thick] (5.25,-0.30) rectangle (5.75,0.30);
\node[right] at (5.85,0) {$R_L$};
\draw[black,thick] (5.50,-0.30)--(5.50,-0.60);
\filldraw[draw=acc,fill=acc!12] (5.50,0.60) circle (1.8pt);
\filldraw[draw=acc,fill=acc!12] (5.50,-0.60) circle (1.8pt);
\node[acc,above] at (5.42,0.66) {$a$};
\node[acc,below] at (5.42,-0.66) {$b$};
\end{tikzpicture}
$$

### Matrix conditioning and physical scaling

Nodal equations are often solved as a conductance matrix, but the numerical answer
is only as trustworthy as the scale of the entries and the measurements supplied to
it. A circuit containing milliohm shunts beside megohm sensor inputs spans twelve
orders of magnitude in resistance. Its conductance matrix contains correspondingly
large and small coefficients. Subtraction of nearly equal branch currents can then
discard significant digits, so a solver may report node voltages that satisfy rounded
equations while being sensitive to tiny changes in one component value.

Normalization makes the arithmetic easier to inspect. Select a characteristic
resistance or conductance close to the main part of the network, express all
resistances relative to it, and scale node voltages by a representative source
voltage. A matrix row then contains dimensionless quantities of comparable size when
the physical network permits it. The physical values are restored only after the
solution. This change of units does not improve the circuit itself, but it reduces
avoidable roundoff and makes an unusually large coefficient immediately visible.

Ill-conditioning has a physical interpretation as well as a numerical one. Nearly
identical paths that oppose at a bridge node can make that node voltage depend on a
very small difference between large currents. A floating subnetwork or a missing
reference connection can make the matrix singular rather than merely poorly
conditioned. In either case, adding decimal places to an answer is not a remedy.
Check whether the required voltage would exceed the available source voltage, whether
a resistor current exceeds its source-limited maximum, and whether a low-resistance
branch would dissipate implausible power. These bounds use the original circuit and
therefore remain valid diagnostics even when the matrix has been normalized.

After solving, form the residual of every original junction equation using unrounded
currents. Each should be small compared with the characteristic branch current, not
merely small in absolute amperes. Then compute signed element powers using the stated
polarities. Their sum must vanish to the uncertainty expected from rounding and input
tolerances. A small residual with a large power imbalance often means that a current
was reconstructed with the wrong reference direction. A good residual and balanced
power together are stronger evidence than a solver's success message, especially for
networks whose component values make the equations physically delicate.

### Transient network initialization

At a switching instant, Kirchhoff equations still govern the connected circuit, but
stored-energy elements contribute conditions inherited from the preceding state. A
capacitor voltage cannot jump in an ordinary finite-current circuit: the voltage at
$t=0^+$ equals its value at $t=0^-$. An inductor current likewise cannot jump
when its voltage is finite, so its current immediately after switching equals the
current immediately before. These continuity statements are not extra loop rules;
they provide the initial element variables needed to close the post-switch Kirchhoff
equations.

Start by drawing separate circuits for the interval before and after the switch
changes position. Solve the pre-switch circuit if its long-time state or prior
history determines the stored capacitor voltage or inductor current. Transfer those
signed values into the post-switch diagram with the same marked polarities and
current arrows. At the instant after switching, represent a capacitor by a voltage
constraint equal to its inherited voltage. Represent an inductor by a current
constraint equal to its inherited current. The remaining resistor currents and node
voltages then follow from junction and loop equations at $t=0^+$.

The ideal dc shortcuts apply only after sufficient time in a fixed configuration. A
capacitor behaves as an open branch at long-time dc, while an ideal inductor behaves
as a short branch. Neither shortcut may be imposed automatically at the switching
instant. Treating a previously charged capacitor as a wire erases its stored energy;
treating an inductor carrying current as an open branch violates current continuity.
Such substitutions frequently produce a Kirchhoff system that looks solvable but
predicts an impossible voltage or current jump.

In a first-order circuit, the initial Kirchhoff solution and the final dc solution
also establish bounds for the later differential equation. The capacitor
voltage must begin at its inherited value and approach the value found from the
post-switch open-branch circuit. The inductor current must begin at its inherited
value and approach the current found from the post-switch short-branch circuit.
Check the initial resistor powers and source powers using the same passive-sign
convention used in steady networks. A mismatch in their signed sum often indicates
that a transferred capacitor polarity or inductor current arrow was reversed. Continuity
data keep the transient step within the same disciplined Kirchhoff calculation.

### Solving a measured bridge network

An unbalanced bridge tests a Kirchhoff model because the middle branch cannot usually
be removed by series-parallel reduction. Begin with the physical
network unpowered. Measure each arm resistance with the branch isolated if possible,
record the meter range and uncertainty, and label the four arms before reconnecting
them. Then apply the source and measure its terminal voltage under load, rather than
assuming that a nominal battery label is its operating emf. A voltmeter across the
bridge diagonal should have sufficiently high input resistance; otherwise its input
resistance belongs in the model as a parallel branch.

Take the negative source terminal as the reference node. The positive terminal has
the measured source voltage, while the two midpoint potentials are unknowns. At the
upper midpoint, write a junction equation with one current through each adjacent arm
and one through the diagonal branch. Write the corresponding equation at the lower
midpoint. Every branch current is a difference of endpoint potentials divided by its
measured resistance. The diagonal-voltmeter reading is then the upper midpoint
voltage minus the lower midpoint voltage in the meter's lead order. A nonzero result
is the definition of an unbalanced bridge, not evidence that either junction rule has
failed.

Before comparing numbers, retain signs and units. If the upper meter lead is on the
lower-potential midpoint, the recorded diagonal voltage is negative. The calculated
value should have the same sign and agree within the uncertainty introduced by arm
resistances, source sag, and meter loading. Reversing both meter leads is a quick
instrument check: the magnitude should remain the same and the sign should reverse.
Comparing this one measured branch voltage with a model is more discriminating than
checking only the total source current.

Use the solved node voltages to reconstruct all five branch currents, then substitute
them back into both original midpoint equations. Each residual should be small
relative to the largest current at that node. Finally calculate resistor powers from
$I^2R$ and source power from its signed terminal voltage and current. The total
must balance within measurement uncertainty. A satisfactory diagonal-voltage match
with failed power balance often exposes a current-arrow error in one arm; small
residuals with a poor voltage match point instead to an omitted meter branch or an
incorrect resistance measurement. The sequence turns a bridge reading into an
auditable Kirchhoff calculation rather than an isolated instrument observation.

$$
% caption: Wheatstone bridge. Four arms $R_1$–$R_4$ meet the source across the left-right diagonal; the voltmeter $V$ spans the two midpoint nodes. The diagonal reading is zero only when $R_1/R_3=R_2/R_4$. Off balance the midpoints differ and the central branch carries current, so no series-parallel folding reduces the network — the two midpoint node equations do.
\begin{tikzpicture}[>=stealth,font=\footnotesize,scale=1.0]
\definecolor{acc}{HTML}{4A6FA5}
% diamond nodes
\filldraw[draw=black,fill=black!8] (0,1.40) circle (2.5pt);
\filldraw[draw=black,fill=black!8] (4.20,1.40) circle (2.5pt);
\filldraw[draw=black,fill=black!8] (2.10,2.55) circle (2.3pt);
\filldraw[draw=black,fill=black!8] (2.10,0.25) circle (2.3pt);
% arms
\draw[black,thick] (0,1.40)--(2.10,2.55);
\draw[black,thick] (2.10,2.55)--(4.20,1.40);
\draw[black,thick] (0,1.40)--(2.10,0.25);
\draw[black,thick] (2.10,0.25)--(4.20,1.40);
\node[black] at (0.80,2.18) {$R_1$};
\node[black] at (3.40,2.18) {$R_2$};
\node[black] at (0.80,0.58) {$R_3$};
\node[black] at (3.40,0.58) {$R_4$};
% bridge voltmeter
\draw[acc,thick] (2.10,2.55)--(2.10,1.72);
\draw[acc,thick] (2.10,1.08)--(2.10,0.25);
\draw[acc,thick] (2.10,1.40) circle (0.32);
\node[acc] at (2.10,1.40) {V};
% source across left-right diagonal via bottom loop
\draw[black,thick] (0,1.40)--(0,-0.55);
\draw[black,thick] (4.20,1.40)--(4.20,-0.55);
\draw[black,thick] (0,-0.55)--(1.90,-0.55);
\draw[black,thick] (2.30,-0.55)--(4.20,-0.55);
\draw[thick] (1.90,-0.80)--(1.90,-0.30);
\draw[thick] (2.30,-0.68)--(2.30,-0.42);
\node[black,below] at (2.10,-0.90) {source};
\end{tikzpicture}
$$

### Uncertainty propagation and auditable reporting

The reported uncertainty belongs to a specified output, such as a branch current,
bridge diagonal voltage, or efficiency. Let $y$ denote that output and let
$x_i$ denote the recorded component, source, and meter inputs. Near the solved
operating point,

$$
\delta y\simeq\sum_i\frac{\partial y}{\partial x_i}\,\delta x_i,
\qquad
\sigma_y^2\simeq\mathbf J\,\boldsymbol\Sigma_x\,\mathbf J^{\mathsf T},
$$

where $\mathbf J$ is the sensitivity row and $\boldsymbol\Sigma_x$ contains
the input variances and covariances. The relation identifies the quantity whose
uncertainty is being reported; it does not assign one generic percentage to an
entire circuit.

- **Input record.** Record resistor values, source terminal voltage, meter input
  resistance, shunt calibration, and temperature coefficients with units and
  measurement conditions. A resistor tolerance changes branch current directly and
  can also move every node attached through finite source resistance. A diagram with
  unstated component conditions cannot be recalculated.
- **Sensitivity calculation.** Change one significant input within its stated
  uncertainty, resolve the original equations, and record the corresponding change
  in $y$. A near-zero bridge diagonal voltage can be highly sensitive to a small
  arm mismatch because it subtracts two larger midpoint voltages, even when total
  source current remains stable.
- **Shared errors.** Four resistors in one temperature-controlled array can drift
  together; a ratio from the same bridge can be more stable than either absolute
  value; a source calibration shift moves several node voltages together. Enter
  those shared references in $\boldsymbol\Sigma_x$. Treating them as independent
  changes the reported uncertainty in either direction.
- **Nonlinear cases.** For controlled-source parameters, tolerance distributions,
  or derived quantities such as efficiency, draw inputs from their stated
  distributions, solve the network for each draw, and inspect the output
  distribution. Flag draws with negative resistance, source compliance failure, or
  saturation outside the linear model. Sampling tests the stated model range; it
  cannot compensate for a missing branch or an incorrect polarity.

Keep the sign convention in the calculation record.

- **Reference and arrows.** State the reference node, branch-current arrow, voltage
  polarity, independent equations, loop traversals, and idealized elements. A
  negative current means that physical current is opposite the chosen arrow. Its
  sign must remain through the power calculation.
- **Measured versus calculated quantities.** List measured terminal voltage,
  component values, and meter configuration separately from calculated node voltages
  and branch currents. Compare a shunt drop or bridge diagonal directly with the
  matching model output. Quote each residual with its uncertainty and scale.
- **Power closure.** Under the passive sign convention, a resistor with current
  entering its marked positive terminal has positive absorbed power; a delivering
  source has negative absorbed power. Sum all element powers using the same signs
  and retain guard digits. A discrepancy larger than rounding uncertainty points to
  a polarity label, omitted source branch, or unmodelled meter current.
- **Operating condition.** Record source type, temperature, switching state,
  reference connection, and measurement bandwidth with the topology. A regulated
  supply, a battery with internal resistance, and a current-limited source can share
  one schematic while producing different loaded node voltages.

Consider one divider arm with upper resistance $R_1$, lower resistance $R_2$,
and source voltage $V_s$. Its midpoint is

$$
V_m=V_s\frac{R_2}{R_1+R_2},
\qquad
\frac{\partial V_m}{\partial R_1}
=-V_s\frac{R_2}{(R_1+R_2)^2},
\qquad
\frac{\partial V_m}{\partial R_2}
=V_s\frac{R_1}{(R_1+R_2)^2}.
$$

The derivatives show why a bridge difference can be more fragile than either
midpoint voltage. Evaluate them at measured, loaded values rather than nominal
marks. Then perturb the resistance pair together when they share a temperature
history, and separately when their tolerances are independent. The resulting
midpoint and diagonal changes provide an explicit check on the covariance treatment
before a full network calculation is reported.

At a bridge null, report the diagonal residual in volts as well as relative to each
midpoint voltage. A percentage normalized by the nearly zero diagonal alone can
inflate an inconsequential offset and hide the scale of the two cancelling branches.

### Failure modes in network analysis

An apparently consistent set of equations can still describe the wrong circuit.
Combining components in series across a node with an unrecognized measurement branch
changes the topology before any arithmetic begins. Treat a voltmeter, oscilloscope
probe, source current limit, and sensor shunt as circuit elements whenever their
input or output impedance is comparable with the surrounding branches. A diagnostic
measurement has no privileged status outside the model; it draws current or imposes
a constraint according to its physical connection.

Reference-node mistakes have a distinct signature. Shifting the reference label
changes every reported node voltage by a constant but leaves branch voltage
differences and currents unchanged. A floating subnetwork has no defined absolute
node voltage until a reference or capacitance-to-environment model is supplied.
Forcing a numerical reference onto that subnetwork may produce a matrix answer while
hiding the fact that a physical measurement depends on an omitted return path.

Source models also set bounds. An ideal voltage source fixes a voltage difference;
an ideal current source fixes a branch current; neither rule determines the other
quantity without the rest of the network. A real bench supply can enter current
limit, changing from one model to another during a sweep. Record that transition,
then solve the corresponding network separately. Extending a voltage-source solution
past its compliance current predicts voltages that the physical supply cannot
deliver.

Sign and scale checks complete the diagnosis. A resistor current much larger than
the source current can be valid in a circulating branch, but its associated power
must be supplied by a source or released by stored energy. A negative solved current
is valid with the stated arrow convention. A negative resistor power under the
passive sign convention identifies a polarity assignment error or an active element
that has been mislabeled as a resistor. These checks keep the algebra tied to the
network that was actually built.
