Get a low cost access to TINACloud to edit the examples or create your own circuits
The complete set of Kirchhoff’s equations can be significantly simplified by the node potential methoddescribed in this chapter. Using this method, Kirchhoff’s voltage law is satisfied automatically, and we need only write node equations to satisfyKirchhoff’s current law, too. Satisfying Kirchhoff’s voltage law is achieved by using node potentials (also called node or nodal voltages)with respect to a particular node called the reference node. In other words, all the voltages in the circuit are relative to the reference node, which is normally considered to have 0 potential. It is easy to see that with these voltage definitions Kirchhoff’s voltage law is satisfied automatically, since writing loop equations with these potentials leads to identity. Note that for a circuit having N nodes you should write only N – 1 equations. Normally, the node equation for the reference node is left out.
The sum of all currents in the circuit is zero since each current is flowing in and out of a node. Therefore, the Nth node equation is not independent from the previous N1 equations. If we included all the N equations, we would have an unsolvable system of equations.
The node potential method (also called nodal analysis) is the method best suited to computer applications. Most circuit analysis programs–including TINA–are based on this method.
The steps of the nodal analysis:
1. Pick a reference node with 0 node potential and label each remaining node with V_{1}, V_{2} or j_{1}, j_{2}and so on.
2. Apply Kirchhoff’s current law at each node except the reference node. Use Ohm’s law to express unknown currents from node potentials and voltage source voltages when necessary. For all unknown currents, assume the same reference direction (e.g. pointing out of the node) for each application of Kirchhoff’s current law.
3. Solve the resulting node equations for the node voltages.
4. Determine any requested current or voltage in the circuit using the node voltages.
Let us illustrate step 2 by writing the node equation for node V_{1 }of the following circuit fragment:
First, find the current from node V1 to node V2. We will use Ohm’s Law at R1. The voltage across R1 is V_{1} – V_{2 } – V_{S1}
And the current through R1 (and from node V1 to node V2) is
Note that this current has a reference direction pointing out of the V_{1} node. Using the convention for currents pointing out of a node, it should be taken into account in the node equation with a positive sign.
The current expression of the branch between V_{1} and V_{3 }will be similar, but since V_{S2} is in the opposite direction from V_{S1} (which means the potential of the node between V_{S2} and R_{2} is V_{3}V_{S2}), the current is
Finally, because of the indicated reference direction, I_{S2} should have a positive sign and I_{S1} a negative sign in the node equation.
The node equation:
Now let’s see a complete example to demonstrate the use of the node potential method.
Find the voltage V and the currents through the resistors in the circuit below
Since we have only two nodes in this circuit, we can reduce the solution to the determination of one unknown quantity.By choosing the lower node as a reference node, the unknown node voltage is the voltage we’re solving for, V.
The nodal equation for the upper node:
Numerically:
Multiply by 30: 7.5+3V – 30 + 1.5 V + 7.5.+ V – 40 = 0 5.5 V –55 = 0
Hence: V = 10 V
Sys V
I+(VVs1)/R1+(V+Vs2)/R2+(VVs3)/R3=0
end;
V=[10]
import numpy as n, sympy as s
#I+(VVs1)/R1+(V+Vs2)/R2+(VVs3)/R3=0
#Write up the matrix of the coefficients:
A=n.array([[1/R1+1/R2+1/R3]])
#Write up the matrix of the constants:
b=n.array([I+Vs1/R1Vs2/R2+Vs3/R3])
V= n.linalg.solve(A,b)[0]
print(“%.3f”%V)
#Symbolic solution with sympy solve
V= s.symbols(‘V’)
sol = s.solve([I+(VVs1)/R1+(V+Vs2)/R2+(VVs3)/R3],[V])
print(sol)
Now let’s determine the currents through the resistors. This is easy, since the same currents are used in the nodal equation above.
{Use node potential method !}
Sys V
I+(VVs1)/R1+(V+Vs2)/R2+(VVs3)/R3=0
end;
V=[10]
{The currents of the resistors}
IR1:=(VVs1)/R1;
IR2:=(V+Vs2)/R2;
IR3:=(VVs3)/R3;
IR1=[0]
IR2=[750.0001m]
IR3=[1000m]
We can check the result with TINA by simply turning on TINA’s DC interactive mode or using the Analysis / DC Analysis / Nodal Voltages command.
Next, let’s solve the problem which was already used as the last example of the Kirchhoff’s laws chapter
Find the voltages and currents of each element of the circuit.
Choosing the lower node as a reference node of 0 potential, the nodal voltage of N_{2} will be equal to V_{S3}, : j_{2} = therefore we have only one unknown nodal voltage. You may remember that previously, using the full set of Kirchhoff’s equations, even after some simplifications, we had a linear system of equations of 4 unknowns.
Writing the node equations for node N_{1}, let us denote the nodal voltage of N_{1} by j_{1}
The simple equation to solve is:
Numerically:
Multiply by 330, we get:
3j_{1}360 – 660 + 11j_{1} – 2970 = 0 ® j_{1}= 285 V
After calculating j_{1, }it is easy to calculate the other quantities in the circuit.
The currents:
I_{S3} = I_{R1} – I_{R2} = 0.5 – 5.25 = – 4.75 A
And the voltages:
V_{Is} = j_{1} = 285 V
V_{R1}= (j_{1} – V_{S3}) = 285 – 270 = 15 V
V_{R2} = (V_{S3} – V_{S2}) = 270 – 60 =210 V
V_{L} = (j_{1}V_{S1}V_{R3}) = 285 +120 +135 = – 30 V
You may note that with the node potential method you still need some extra calculation to determine the currents and voltages of the circuit. However these calculations are very simple, much simpler than solving linear equations systems for all circuit quantities simultaneously.
We can check the result with TINA by simply turning on TINA’s DC interactive mode or using Analysis / DC Analysis / Nodal Voltages command.

Let’s see further examples.
Example 1
Find the current I.
In this circuit there are four nodes, but since we have an ideal voltage source that determines the node voltage at its positive pole, we should chose its negative pole as the reference node. Therefore, we really have only two unknown node potentials: j_{1} and j_{2} .
The equations for the nodes of potentials j_{1} and j_{2}:
Numerically:
To solve this, multiply the first equation by 3 and the second by 2, then add the two equations:
11j_{1 }=220
and hence j_{1}= 20V, j_{2 }=_{ }(50 + 5j_{1}) / 6= 25 V_{ }
Finally the unknown current:
The solution of a system of linear equations can be also calculated using Cramer’s rule.
Let’s illustrate the use of Cramer’s rule by solving the system above again..
1. Fill in the matrix of the coefficients of unknowns:
2. Calculate the value of the determinant of the D matrix.
 D = 7*6 – (5)*(4) = 22
3. Place the values of the right hand side in the column of the coefficients of the unknown variable then calculate the value of the determinant:
4.Divide the newly found determinants by the original determinant, to find the following ratios:
Hence j_{1} = 20 V and j_{2} = 25 V
To check the result with TINA, simply turn on TINA’s DC interactive mode or use Analysis / DC Analysis / Nodal Voltages command. Note that using the Voltage Pin component of TINA, you can directly show the node potentials assuming that the Ground component is connected to the reference node.
Sys fi1,fi2
(fi1fi2)/R2+(fi1VS1)/R3+fi1/R4=0
(fi2fi1)/R2+(fi2VS1)/R1Is=0
end;
fi1=[20]
fi2=[25]
I:=(fi2VS1)/R1;
I=[500m]
import numpy as n
#We have a system of
#llinear equations that
#we want to solve for fi1, fi2:
#(fi1fi2)/R2+(fi1VS1)/R3+fi1/R4=0
#(fi2fi1)/R2+(fi2VS1)/R1Is=0
#Write up the matrix of the coefficients:
A=n.array([[1/R2+1/R3+1/R4,1/R2],[1/R2,1/R2+1/R1]])
#Write up the matrix of the constants:
b=n.array([[VS1/R3],[VS1/R1+Is]])
x=n.linalg.solve(A,b)
fi1,fi2=x[0],x[1]
print(“fi1= %.3f”%fi1)
print(“fi2= %.3f”%fi2)
I=(fi2VS1)/R1
print(“I= %.3f”%I)
Example 2.
Find the voltage of the resistor R_{4}.
R_{1} = R_{3} = 100 ohm, R_{2} = R_{4} = 50 ohm, R_{5} = 20 ohm, R_{6} = 40 ohm, R_{7} = 75 ohm
In this case, it is practical to choose the negative pole of the voltage source V_{S2} as the reference node because then the positive pole of the V_{S2} voltage source will have V_{S2} = 150 node potential. Because of this choice, however, the required V voltage is opposite to the node voltage of the node N_{4; }therefore V_{4} = – V.
The equations:
We do not present the hand calculations here, since the equations can be easily solved by TINA’s interpreter.
{Use node potential method !}
Sys V,V1,V2,V3
V1/R2+(V1Vs2)/R1Is=0
(V2+V)/R6+(V2V3+Vs1)/R5+Is=0
(V3+V)/R7+(V3Vs2)/R3+(V3Vs1V2)/R5=0
(VV2)/R6V/R4+(VV3)/R7=0
end;
V1=[116.6667]
V2=[91.8182]
V3=[19.697]
V=[34.8485]
import numpy as n
#Use node potential method !
#We have a system of linear equations that we want to solve
#for V,V1,V2,V3:
#V1/R2+(V1Vs2)/R1Is=0
#(V2+V)/R6+(V2V3+Vs1)/R5+Is=0
#(V3+V)/R7+(V3Vs2)/R3+(V3Vs1V2)/R5=0
#(VV2)/R6V/R4+(VV3)/R7=0
#Write up the matrix of the coefficients:
A= n.array([[0,1/R2+1/R1,0,0],[1/R6,0,1/R6+1/R5,(1)/R5],[1/R7,0,(1)/R5,1/R7+1/R5+1/R3],[(1)/R61/R41/R7,0,1/R6,1/R7]])
#Write up the matrix of the constants:
b=n.array([(Vs2/R1)+Is,(Vs1/R5)Is,(Vs2/R3)+(Vs1/R5),0])
x= n.linalg.solve(A,b)
V=x[0]
print(“V= %.4f”%V)
To check the result with, TINA simply turn on TINA’s DC interactive mode or use Analysis / DC Analysis / Nodal Voltages command. Note that we have to place a few voltage pins on the nodes to show the node voltages.