Node-voltage method

Look at any resistive DC circuit with several sources and it can feel like a tangle of loops and branches. The node-voltage method cuts through that tangle with a single idea: pick one node as ground, call every other node's voltage an unknown, and write one Kirchhoff's-current-law equation per unknown node. Solve that small system of linear equations and every node voltage falls out — and from node voltages, every branch current follows immediately from Ohm's law. This article builds the method from Kirchhoff's current law and Ohm's law, works two circuits step by step (one node, then two nodes), and flags the sign and setup mistakes that lose the most marks. It is one of the two systematic network-reduction techniques prescribed in EE11001's DC-networks unit, alongside mesh-current analysis, and it is the technique of choice whenever a circuit has more nodes than independent loops.

The core insight

At every non-reference node, write "current leaving through resistors equals current injected by sources" in terms of unknown node voltages, then solve the resulting linear equations simultaneously.

The core idea

Pick a reference. Choose any one node of the circuit as the reference (ground) node and fix it at 0 V0\ \text{V}. Every other node's voltage is then measured relative to this reference — call them V1,V2,…,Vn−1V_1, V_2, \dots, V_{n-1} for an nn-node circuit. These are the unknowns the method solves for.

Turn resistor currents into voltage differences. A resistor does not care about "current" as a separate variable once you know the voltages at its two ends. For a resistor of value RR connecting node ii (voltage ViV_i) to node jj (voltage VjV_j), Ohm's law gives the current leaving node ii through that resistor directly in terms of node voltages:

Ii→j=Vi−VjRI_{i \to j} = \frac{V_i - V_j}{R}

where: ViV_i is the voltage at the node current is leaving, VjV_j is the voltage at the far end of the resistor, and RR is the resistor's resistance in ohms. This one expression is the entire engine of the method — every KCL equation is just a sum of terms of this shape.

Apply KCL at each unknown node. At every non-reference node, Kirchhoff's current law says the currents leaving through all resistive branches must sum to whatever current independent sources inject into that node. Summing the (Vi−Vj)/R(V_i-V_j)/R expression over every resistor touching node ii, and setting the sum equal to the injected source current, gives one linear equation per non-reference node — so an nn-node circuit yields exactly (n−1)(n-1) equations in (n−1)(n-1) unknowns.

Handle voltage sources directly. If a voltage source connects a node straight to the reference node, that node's voltage is already known — it equals the source value — and no KCL equation needs to be written there at all; it simply substitutes a known value into the system.

Solve and recover currents. The (n−1)(n-1) simultaneous equations are solved by substitution or matrix methods. Once every node voltage is known, Ohm's law applied to any two connected nodes gives the current in that branch — the method never needs branch currents as separate unknowns.

Figure
A two node resistive circuit with a current source feeding node A which connects to node B through a resistor and each node also connects to a ground reference through its own resistor
Two-node circuit: label unknowns, then write KCL at each node reference node, 0 V 6 A A, V_A 3 Ω 2 Ω B, V_B 6 Ω KCL at A: source current = current out through both resistors touching A
Derivation AThe node-voltage KCL equation from Ohm's law

The goal is to show, from nothing beyond Ohm's law and Kirchhoff's current law, that the single equation "sum of (Vi−Vj)/R(V_i - V_j)/R over every resistor at node ii equals the injected source current at node ii" is a fully general and mechanical way to write one linear equation per non-reference node, valid for any number of nodes and branches, which is the entire content of the node-voltage method.

Step 1. Start from KCL at a chosen non-reference node ii: the sum of all currents leaving node ii through its connected branches must equal the sum of all currents injected into node ii by independent current sources, because charge cannot accumulate at a node in steady state.

Step 2. Express each resistive branch current using Ohm's law and the node voltages alone. If node ii connects to some other node jj through resistance RijR_{ij}, the current leaving ii toward jj is Ii→j=(Vi−Vj)/RijI_{i\to j} = (V_i - V_j)/R_{ij}, exactly the expression derived above — no branch-current variable is needed because it is written entirely in terms of the two node voltages at its ends.

Step 3. Sum this expression over every resistive branch touching node ii. If node ii has resistive connections to nodes j=1,2,…,kj = 1, 2, \dots, k (some of which may be the reference node, where V=0V=0), the total current leaving node ii is ∑j(Vi−Vj)/Rij\sum_{j} (V_i - V_j)/R_{ij}. Set this sum equal to Iinj,iI_{\text{inj},i}, the net current any independent current sources inject at node ii:

∑jVi−VjRij=Iinj,i\sum_{j} \frac{V_i - V_j}{R_{ij}} = I_{\text{inj},i}

Step 4. This single equation is repeated once for every non-reference node, giving (n−1)(n-1) equations in the (n−1)(n-1) unknown node voltages for an nn-node circuit. Because each equation is linear in the VV's, the system can always be solved by substitution or by standard simultaneous-equation methods, which is exactly what the two worked examples below carry out for one-node and two-node circuits.

Worked example

Extend the two-node circuit from the syllabus: a 6 A6\ \text{A} current source injects into node A; node A connects to node B through a 2 Ω2\ \Omega resistor; node A connects to ground through a 3 Ω3\ \Omega resistor; node B connects to ground through a 6 Ω6\ \Omega resistor. Find VAV_A, VBV_B, and every branch current, then check the answer with KCL.

Step 1. Fix the reference. Ground =0 V= 0\ \text{V}; unknowns are VAV_A and VBV_B.

Step 2. Write KCL at node A. Current leaving A flows through the 2 Ω2\ \Omega resistor toward B and through the 3 Ω3\ \Omega resistor to ground; this must equal the 6 A6\ \text{A} injected:

6=VA−VB2+VA−036 = \frac{V_A - V_B}{2} + \frac{V_A - 0}{3}

Multiplying through by 6 clears denominators: 36=3(VA−VB)+2VA=5VA−3VB36 = 3(V_A - V_B) + 2V_A = 5V_A - 3V_B.

Step 3. Write KCL at node B. No source injects here, so current arriving from A through the 2 Ω2\ \Omega resistor must equal current leaving to ground through the 6 Ω6\ \Omega resistor:

VA−VB2=VB−06\frac{V_A - V_B}{2} = \frac{V_B - 0}{6}

Multiplying by 6: 3(VA−VB)=VB3(V_A - V_B) = V_B, so 3VA=4VB3V_A = 4V_B.

Step 4. Solve the pair. From Step 3, VA=4VB/3V_A = 4V_B/3. Substituting into 5VA−3VB=365V_A - 3V_B = 36 gives 5(4VB/3)−3VB=365(4V_B/3) - 3V_B = 36, i.e. (20VB−9VB)/3=36(20V_B - 9V_B)/3 = 36, so 11VB/3=3611V_B/3 = 36 and VB=108/11≈9.82 VV_B = 108/11 \approx 9.82\ \text{V}. Then VA=(4/3)(9.82)≈13.09 VV_A = (4/3)(9.82) \approx 13.09\ \text{V}.

Step 5. Recover every branch current from Ohm's law. Through the 2 Ω2\ \Omega resistor (A to B): (VA−VB)/2≈(13.09−9.82)/2≈1.64 A(V_A - V_B)/2 \approx (13.09 - 9.82)/2 \approx 1.64\ \text{A}. Through the 3 Ω3\ \Omega resistor (A to ground): VA/3≈13.09/3≈4.36 AV_A/3 \approx 13.09/3 \approx 4.36\ \text{A}. Through the 6 Ω6\ \Omega resistor (B to ground): VB/6≈9.82/6≈1.64 AV_B/6 \approx 9.82/6 \approx 1.64\ \text{A}.

Step 6. Check with KCL at node A: current in from the source is 6 A6\ \text{A}; current out is 4.36+1.64=6.00 A4.36 + 1.64 = 6.00\ \text{A}. Answer: VA≈13.09 VV_A \approx 13.09\ \text{V}, VB≈9.82 VV_B \approx 9.82\ \text{V}, with branch currents 1.64 A1.64\ \text{A} (A to B), 4.36 A4.36\ \text{A} (A to ground) and 1.64 A1.64\ \text{A} (B to ground), and the KCL check confirms the solution.

Competitive stretch

Compare this against the simpler single-node case from the same syllabus: a 10 A10\ \text{A} source into one node A, with a 5 Ω5\ \Omega and a 20 Ω20\ \Omega resistor both to ground, gave VA=40 VV_A = 40\ \text{V} and branch currents 8 A8\ \text{A} and 2 A2\ \text{A} that summed exactly to the injected 10 A10\ \text{A}. Notice the pattern: every worked example, no matter how many nodes, ends with the same KCL check — currents in equal currents out at every node — because that check is not extra work, it is the very equation that was solved.

Common traps

  • Forgetting to fix a reference node before writing any equation — node voltages are only meaningful relative to a chosen ground, so skipping this step makes every later number ambiguous.
  • Sign errors in (Vi−Vj)/R(V_i - V_j)/R: always write the node whose current is "leaving" first, and keep that convention consistent across every term of a given node's equation — mixing conventions mid-equation silently flips a sign and breaks the algebra.
  • Writing a redundant KCL equation at a node whose voltage a voltage source already fixes directly to the reference — that voltage is known immediately and does not need to be solved for.
  • Treating a current source like a resistor inside the KCL sum: a current source contributes a fixed, known number to the equation, not a term that depends on node voltage.

Ask the tutor: if you would like to practice a three-node circuit, mix in a voltage source tied to ground, or check your own node equations against the AI tutor, ask about this topic.

How is the node-voltage method different from just applying Kirchhoff's laws branch by branch?

Branch-by-branch KVL and KCL work, but for a circuit with many branches you end up with as many unknown currents as branches, which is unwieldy. The node-voltage method instead makes node voltages the only unknowns — there are far fewer nodes than branches in most circuits — and every branch current is recovered afterward from Ohm's law once the node voltages are known. It is a systematic shortcut to the same physics, not a different law.

What if a resistor connects two non-reference nodes, neither of which is ground?

That is exactly the case in the two-node worked example above: the 2 Ω2\ \Omega resistor between A and B touches no ground node. It still contributes the same (VA−VB)/2(V_A - V_B)/2 term to node A's equation, and the corresponding (VB−VA)/2(V_B - V_A)/2 term (equal in magnitude, opposite in direction of flow) to node B's equation. Nothing special is needed — the method handles inter-node resistors automatically as long as every term is written consistently as (this node's voltage minus the other node's voltage) over R.

Do I always get exactly (n-1) equations for an n-node circuit?

Yes, provided you count correctly: pick one reference node, and every remaining node gets exactly one KCL equation, giving (n-1) equations in (n-1) unknowns. If a voltage source ties some node directly to the reference, that node's voltage is known outright and you simply substitute it in wherever it appears, rather than solving an extra equation for it — so the effective number of equations you actually need to solve can be smaller.

Before this

Where this leads