Sometimes when I use KCL for nodes in a circuit I cannot correctly determine the direction of the currents. My book also says that according to KCL the algebraic sum of currents entering a node is zero. In order to avoid further mistakes, can I always write i1+i2+.. +in=0 for each node of the circuit despite the direction of each current? If not what's the general rule/idea so that I dont mess up the direction of a current?


3 Answers 3


When I was tutoring students, a common confusion seemed to be just about what you wrote in your question. Very close, to my eye, anyway. This turned out to be because the textbooks they were using (consistently, by the way) did a rather poor job about the concept itself, leaving much to be legitimately confused about. The textbooks weren't wrong (correction: some were grossly wrong in places) as a rule. But just did poorly in helping a student find and keep a good mental balance about each new situation they faced. They weren't provided consistent tools. Instead, each situation seemed like the current directions were supplied ad-hoc, through some mysterious process the student was never told fully about.

So I had to develop a different approach.

Let's look at this snippet from Andrei Vladimirescu's "The SPICE Book" (top of page 15):

enter image description here

(Note that Andrew doesn't include a nodal equation for node 1. That's because it's an unknown voltage and there's a voltage source serving to maintain it. But the node is still labeled as \$V_1\$ for the purposes of the remaining nodal equations. He did it this way, rather than just use \$+12\:\text{V}\$, because it is better practice to use a symbolic approach even when you know the value for the symbol.)

If you re-arrange those two equations so that everything is unsigned, then you get this:

$$\begin{align*} &\text{Node 2:}& V_2\cdot G_1 + V_2\cdot G_2 + V_2\cdot G_3 &=V_1\cdot G_1 + V_3\cdot G_3\tag*{(1.1)} \\\\ &\text{Node 3:}& V_3\cdot G_3+V_3\cdot G_4 &=V_1\cdot G_4+V_2\cdot G_3\tag*{(1.2)} \\\\ \rlap{\text{I'd like to insert a hidden piece, now:}} \\\\ &\text{Node 2:}& V_2\cdot G_1 + V_2\cdot G_2 + V_2\cdot G_3 &=V_1\cdot G_1 + \underset{GND = 0\:\text{V}}{0\:\text{V}\cdot G_2} +V_3\cdot G_3\tag*{(1.1)} \\\\ &\text{Node 3:}& V_3\cdot G_3+V_3\cdot G_4 &=V_1\cdot G_4+V_2\cdot G_3\tag*{(1.2)} \\\\ \rlap{\text{Finally, to put this back into a form using the resistor values:}} \\\\ &\text{Node 2:}& \frac{V_2}{R_1} + \frac{V_2}{R_2} + \frac{V_2}{R_3} &=\frac{V_1}{R_1} + \frac{0\:\text{V}}{R_2} +\frac{V_3}{R_3}\tag*{(1.1)} \\\\ &\text{Node 3:}& \frac{V_3}{R_3}+\frac{V_3}{R_4} &=\frac{V_1}{R_4}+\frac{V_2}{R_3}\tag*{(1.2)} \end{align*}$$

(Per the above note about keeping values symbolic, the one exception to this is ground or \$0\:\text{V}\$. In this particular case, keeping it symbolic would probably serve to confuse just a little more than using its value. And it is always zero, too. So may as well just say so. Keeping \$V_1\$ symbolic allows you to ask questions about what happens if that voltage source has a different value. But you never need to ask about "What happens if ground isn't zero?" so there's no need to use a symbol for it. You could, and assign it later. But no point to it.)

You can now more easily see that every term on the left side is balanced by a term on the right side. Every resistor has two ends. That's why. So when you write these out, just keep all the terms that involve the node voltage under consideration on the left and toss all the terms that involve some other node voltage over onto the right. Each end of a resistor has a term with one of those terms on the left and one on the right.

If you wish to explain this to yourself, just imagine that a node voltage causes currents to flow outward from itself through the available paths. These outward pseudo-currents are countered by inward going pseudo-currents from the nearby nodes. You place the outward pseudo-currents on the left and the inward pseudo-currents on the right. The pseudo-currents will always be unsigned and will always sum to the correct current (without you worrying about what that is) and the nodal equations will solve correctly (as they must because they are the same equations, just slightly re-arranged.)

Note that you will never have to worry about signs again! Not ever. This will save you from all confusion over signs and net-sum current directions, since you didn't care about those and instead focused only on the unsigned pseudo-currents. Experienced readers will be able to follow you, just fine. And feel free to later re-arrange in any form you want. The signs will then always be correct.

This is nothing more than a re-arrangement to avoid worrying over signs. It's still based entirely on all the same, existing theory behind the nodal approach. Nothing has changed. Only how you initially compose it has changed. That's it.

P.S: A current source has an impedance of \$\infty\$ (ideally.) They also have two ends. But in this case, the \$\infty\$ impedance means you can break them into two parts, with one part pointing into a node (and coming out of nowhere) and one pointing away from a node (and going nowhere.) There's a special case, though. Since KCL is never performed for a known-voltage (or ground) node, if one end points into or out of the ground node, or any other node with a known voltage where KCL isn't being applied, you can just leave it out and not worry about it. But this is the only exception. If the node voltage is an unknown, then it must be kept and not removed from analysis. (The reasoning has to do with graph theory and the Rank-Nullity Theorem and goes way beyond what I want to say here.)

  • \$\begingroup\$ You made a slip of a pen, and you wrote V3/R3 (V3* G3) in node 2 equations on the left side instead of V2/R3 (V2 * G3). \$\endgroup\$
    – G36
    Commented Sep 19, 2023 at 10:39
  • \$\begingroup\$ @G36 Thanks for that! I've corrected my writing. \$\endgroup\$ Commented Sep 19, 2023 at 11:00

In order to avoid further mistakes, can I always write i1+i2+.. +in=0 for each node of the circuit despite the direction of each current?

If you have chosen that \$i_1\$, \$i_2\$, etc., are all positive when they are going in to that node, then yes, you just write that the sum of the currents is 0.

But if (for example) \$i_1\$ is positive going into a node at one end of branch 1, then it will be negative going into the node at the other end of branch 1. So for that node you'll have to use \$-i_1\$ in your KCL equation.

If not what's the general rule/idea so that I dont mess up the direction of a current?

The rule is before you start writing equations, you choose a reference direction for the current in each branch. Draw an arrow on your schematic indicating which direction will be considered "positive" current for that branch.

Now for each node, you write the equation with a + sign for each branch with its arrow pointing in to that node and a - sign for each branch with its arrow pointing out of the node.

You can choose the direction of the reference arrow completely arbitrarily. If the current happens to be going the other direction, you'll just end of with a negative value for the current in your solution.


The basic idea behind KCL is that what goes in must come out. saying that that the sum of all currents crossing a closed surface is zero.

KCL can also be expressed as the sum of all the currents pointing into a node is equal to the sum of all the currents pointing out of the same node.

This form is longer and the language is perhaps slightly less precise but it makes specific allowance for current arrows drawn going in different directions.

Accepting that a current flowing out is the same as the negative version of a current flowing in you get the canonical version of KCL.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.