~ / blog / Active, Reactive and Apparent Power
# Introduction to basic concepts
Let voltage be defined as the following:
Let us plot this and see what it looks like.
# <!-- collapse=True -->
f0 = 60 # Hz (frequency)
phi = -np.pi/2 # phase shift
Av = 155.563491861 # voltage peak
Ai = 7.07106781187 # current peak
fs = 4000 # steps
t = np.arange(0.000, 6/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, ax = plt.subplots(1,1,figsize = (16,10))
ax.plot(t, v, label = 'Voltage')
ax.plot(t, i, label = 'Current')
ax.axis([0, 2/f0, -200, 200])
ax.legend();
# <!-- collapse=True -->
f0 = 60 # Hz (frequency)
phi = -np.pi/2 # phase shift
Av = 155.563491861 # voltage peak
Ai = 7.07106781187 # current peak
fs = 4000 # steps
t = np.arange(0.000, 6/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, ax = plt.subplots(1,1,figsize = (16,10))
ax.plot(t, v, label = 'Voltage')
ax.plot(t, i, label = 'Current')
ax.axis([0, 2/f0, -200, 200])
ax.legend();

We can calculate the maximum, minimum and the RMS value as follows:
Maximum 155.563491861
Minimum -155.563491861
RMS 110.0
Ratio max/rms 1.41421356237
Maximum value = √2 x RMS value
The RMS value of
# Expression for power
Let voltage and current be expressed by:
Instantaneous power is calculated by
f0 = 60 # Hz (frequency)
phi = -np.pi/6 # phase shift
Av = 10*np.sqrt(2) # voltage peak
Ai = 5*np.sqrt(2) # current peak
fs = 4000 # steps
t = np.arange(0.000, 1/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, axs = plt.subplots(2,1,figsize = (16,10))
ax1 = axs[0]
ax1.axhline(linewidth=0.25, color='black')
ax1.axvline(linewidth=0.25, color='black')
ax1.plot(t, v, label = 'Voltage in phase A')
ax1.plot(t, i, label = 'Current in phase A')
ax1.set_ylabel('Voltage and Current')
ax1.axis([0, 1/f0, -20, 20]);
ax1.legend()
ax2 = axs[1]
ax2.axhline(linewidth=0.25, color='black')
ax2.axvline(linewidth=0.25, color='black')
ax2.plot(t, v*i, label = 'Power in phase A', color='g')
ax2.set_ylabel('Power')
# for tl in ax2.get_yticklabels():
# tl.set_color('g')
ax2.legend()
ax2.axis([0, 1/f0, -120, 120]);
f0 = 60 # Hz (frequency)
phi = -np.pi/6 # phase shift
Av = 10*np.sqrt(2) # voltage peak
Ai = 5*np.sqrt(2) # current peak
fs = 4000 # steps
t = np.arange(0.000, 1/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, axs = plt.subplots(2,1,figsize = (16,10))
ax1 = axs[0]
ax1.axhline(linewidth=0.25, color='black')
ax1.axvline(linewidth=0.25, color='black')
ax1.plot(t, v, label = 'Voltage in phase A')
ax1.plot(t, i, label = 'Current in phase A')
ax1.set_ylabel('Voltage and Current')
ax1.axis([0, 1/f0, -20, 20]);
ax1.legend()
ax2 = axs[1]
ax2.axhline(linewidth=0.25, color='black')
ax2.axvline(linewidth=0.25, color='black')
ax2.plot(t, v*i, label = 'Power in phase A', color='g')
ax2.set_ylabel('Power')
# for tl in ax2.get_yticklabels():
# tl.set_color('g')
ax2.legend()
ax2.axis([0, 1/f0, -120, 120]);

We can decompose the instantaneous power following the steps below.
We know that,
The second
Assuming
Hence,
We see that the sign of the first term remains unaffected by the sign
of
Let us plot the two parts of this equation.
# <!-- collapse=True -->
f0 = 60 # Hz (frequency)
phi = -np.pi/3 # phase shift
Av = 110*np.sqrt(2) # voltage peak
Ai = 5*np.sqrt(2) # current peak
fs = 4000 # steps
t = np.arange(0.000, 1/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, axs = plt.subplots(1,1,figsize = (16,5))
# ax1 = axs[0]
# ax1.axhline(linewidth=0.25, color='black')
# ax1.axvline(linewidth=0.25, color='black')
# ax1.plot(t, v, label = 'Voltage in phase A')
# ax1.plot(t, i, label = 'Current in phase A')
# ax1.set_ylabel('Voltage and Current')
# ax1.axis([0, 1/f0, -200, 200]);
# ax1.legend(loc='lower left')
ax2 = axs
ax2.axhline(linewidth=0.25, color='black')
ax2.axvline(linewidth=0.25, color='black')
#$p = \frac{V_{max}I_{max}}{2} \cos\theta (1 + \cos 2\omega t)
# + \frac{V_{max}I_{max}}{2} \sin 2\omega t \sin \theta $
p_R = Av*Ai/2*(np.cos(phi) * (1 + np.cos(2 * 2 * np.pi * f0 * t)))
p_X = Av*Ai/2*(np.sin(phi) * (np.sin(2 * 2 * np.pi * f0 * t)))
ax2.plot(t, p_R, label = 'Instantaneous Active Power in phase A', linestyle='--', color = 'b')
ax2.plot(t, p_X, label = 'Instantaneous Reactive Power in phase A', linestyle='-.', color = 'r')
#ax2.plot(t, v*i, label = 'Power in phase A', color='g')
ax2.plot(t, p_R+p_X, label = 'Instantaneous Power in phase A', color='g')
ax2.set_ylabel('Power')
ax2.legend(loc='lower left')
ax2.axis([0, 1/f0, -1500, 1500]);
# <!-- collapse=True -->
f0 = 60 # Hz (frequency)
phi = -np.pi/3 # phase shift
Av = 110*np.sqrt(2) # voltage peak
Ai = 5*np.sqrt(2) # current peak
fs = 4000 # steps
t = np.arange(0.000, 1/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, axs = plt.subplots(1,1,figsize = (16,5))
# ax1 = axs[0]
# ax1.axhline(linewidth=0.25, color='black')
# ax1.axvline(linewidth=0.25, color='black')
# ax1.plot(t, v, label = 'Voltage in phase A')
# ax1.plot(t, i, label = 'Current in phase A')
# ax1.set_ylabel('Voltage and Current')
# ax1.axis([0, 1/f0, -200, 200]);
# ax1.legend(loc='lower left')
ax2 = axs
ax2.axhline(linewidth=0.25, color='black')
ax2.axvline(linewidth=0.25, color='black')
#$p = \frac{V_{max}I_{max}}{2} \cos\theta (1 + \cos 2\omega t)
# + \frac{V_{max}I_{max}}{2} \sin 2\omega t \sin \theta $
p_R = Av*Ai/2*(np.cos(phi) * (1 + np.cos(2 * 2 * np.pi * f0 * t)))
p_X = Av*Ai/2*(np.sin(phi) * (np.sin(2 * 2 * np.pi * f0 * t)))
ax2.plot(t, p_R, label = 'Instantaneous Active Power in phase A', linestyle='--', color = 'b')
ax2.plot(t, p_X, label = 'Instantaneous Reactive Power in phase A', linestyle='-.', color = 'r')
#ax2.plot(t, v*i, label = 'Power in phase A', color='g')
ax2.plot(t, p_R+p_X, label = 'Instantaneous Power in phase A', color='g')
ax2.set_ylabel('Power')
ax2.legend(loc='lower left')
ax2.axis([0, 1/f0, -1500, 1500]);

The blue line (active power) is always positve and has an average
value of
The average value of the red line (reactive power) is equal to zero.
The maximum value of the instantaneous reactive power is
Or,
# So why is it called real power?
# <!-- collapse=True -->
import SchemDraw as schem
import SchemDraw.elements as e
d = schem.Drawing()
V1 = d.add( e.SOURCE_SIN, label='$V_{a}$' )
L1 = d.add( e.LINE, d='right', label='$I_{a}$')
d.push()
R = d.add( e.RES, d='down', botlabel='$R$' )
d.pop()
d.add( e.LINE, d='right' )
d.add( e.INDUCTOR2, d='down', botlabel='$L$' )
d.add( e.LINE, to=V1.start )
d.add( e.GND )
d.draw()
# <!-- collapse=True -->
import SchemDraw as schem
import SchemDraw.elements as e
d = schem.Drawing()
V1 = d.add( e.SOURCE_SIN, label='$V_{a}$' )
L1 = d.add( e.LINE, d='right', label='$I_{a}$')
d.push()
R = d.add( e.RES, d='down', botlabel='$R$' )
d.pop()
d.add( e.LINE, d='right' )
d.add( e.INDUCTOR2, d='down', botlabel='$L$' )
d.add( e.LINE, to=V1.start )
d.add( e.GND )
d.draw()
# <!-- collapse=True -->
fig, ax = plt.subplots(1,1,figsize = (4,4))
soa =np.array([[0,0,0,5],[0,0,0,10],[0,0,5,0],[0,0,5,5]])
X,Y,U,V = zip(*soa)
ax = plt.gca()
ax.quiver(X,Y,U,V,angles='xy',scale_units='xy',scale=1)
ax.set_xlim([-1,10])
ax.set_ylim([-1,10])
ax.text(5, 0, r'$I_{X}$')
ax.text(0, 5, r'$I_{R}$')
ax.text(5, 5, r'$I_{an}$')
ax.text(0, 10, r'$V_{an}$')
ax.text(0.25, 1, r'$\theta$')
ax.axis('off');
# <!-- collapse=True -->
fig, ax = plt.subplots(1,1,figsize = (4,4))
soa =np.array([[0,0,0,5],[0,0,0,10],[0,0,5,0],[0,0,5,5]])
X,Y,U,V = zip(*soa)
ax = plt.gca()
ax.quiver(X,Y,U,V,angles='xy',scale_units='xy',scale=1)
ax.set_xlim([-1,10])
ax.set_ylim([-1,10])
ax.text(5, 0, r'$I_{X}$')
ax.text(0, 5, r'$I_{R}$')
ax.text(5, 5, r'$I_{an}$')
ax.text(0, 10, r'$V_{an}$')
ax.text(0.25, 1, r'$\theta$')
ax.axis('off');
We know that
The first term can be rewritten as
Similarly the second term can be rewritten as
From the above figure we can see that power can be written as
# Special cases
Let’s look at three cases
### Case 1 : is zero
When we assume
# <!-- collapse=True -->
f0 = 60 # Hz (frequency)
phi = 0 # phase shift
Av = 110*np.sqrt(2) # voltage peak
Ai = 5*np.sqrt(2) # current peak
fs = 4000 # steps
t = np.arange(0.000, 1/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, axs = plt.subplots(2,1,figsize = (16,10))
ax1 = axs[0]
ax1.axhline(linewidth=0.25, color='black')
ax1.axvline(linewidth=0.25, color='black')
ax1.plot(t, v, label = 'Voltage in phase A')
ax1.plot(t, i, label = 'Current in phase A')
ax1.set_ylabel('Voltage and Current')
ax1.axis([0, 1/f0, -200, 200]);
ax1.legend(loc='lower left')
ax2 = axs[1]
ax2.axhline(linewidth=0.25, color='black')
ax2.axvline(linewidth=0.25, color='black')
#$p = \frac{V_{max}I_{max}}{2} \cos\theta (1 + \cos 2\omega t)
# + \frac{V_{max}I_{max}}{2} \sin 2\omega t \sin \theta $
p_R = Av*Ai/2*(np.cos(phi) * (1 + np.cos(2 * 2 * np.pi * f0 * t)))
p_X = Av*Ai/2*(np.sin(phi) * (np.sin(2 * 2 * np.pi * f0 * t)))
ax2.plot(t, p_R, label = 'Instantaneous Active Power in phase A', linestyle='--', color = 'b')
ax2.plot(t, p_X, label = 'Instantaneous Reactive Power in phase A', linestyle='-.', color = 'r')
#ax2.plot(t, v*i, label = 'Power in phase A', color='g')
ax2.plot(t, p_R+p_X, label = 'Instantaneous Power in phase A', color='g')
ax2.set_ylabel('Power')
ax2.legend(loc='lower left')
ax2.axis([0, 1/f0, -1500, 1500]);
# <!-- collapse=True -->
f0 = 60 # Hz (frequency)
phi = 0 # phase shift
Av = 110*np.sqrt(2) # voltage peak
Ai = 5*np.sqrt(2) # current peak
fs = 4000 # steps
t = np.arange(0.000, 1/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, axs = plt.subplots(2,1,figsize = (16,10))
ax1 = axs[0]
ax1.axhline(linewidth=0.25, color='black')
ax1.axvline(linewidth=0.25, color='black')
ax1.plot(t, v, label = 'Voltage in phase A')
ax1.plot(t, i, label = 'Current in phase A')
ax1.set_ylabel('Voltage and Current')
ax1.axis([0, 1/f0, -200, 200]);
ax1.legend(loc='lower left')
ax2 = axs[1]
ax2.axhline(linewidth=0.25, color='black')
ax2.axvline(linewidth=0.25, color='black')
#$p = \frac{V_{max}I_{max}}{2} \cos\theta (1 + \cos 2\omega t)
# + \frac{V_{max}I_{max}}{2} \sin 2\omega t \sin \theta $
p_R = Av*Ai/2*(np.cos(phi) * (1 + np.cos(2 * 2 * np.pi * f0 * t)))
p_X = Av*Ai/2*(np.sin(phi) * (np.sin(2 * 2 * np.pi * f0 * t)))
ax2.plot(t, p_R, label = 'Instantaneous Active Power in phase A', linestyle='--', color = 'b')
ax2.plot(t, p_X, label = 'Instantaneous Reactive Power in phase A', linestyle='-.', color = 'r')
#ax2.plot(t, v*i, label = 'Power in phase A', color='g')
ax2.plot(t, p_R+p_X, label = 'Instantaneous Power in phase A', color='g')
ax2.set_ylabel('Power')
ax2.legend(loc='lower left')
ax2.axis([0, 1/f0, -1500, 1500]);

The Instantaneous power in the phase is equal to the active power.
### Case 2 : is 90
When
# <!-- collapse=True -->
f0 = 60 # Hz (frequency)
phi = np.pi/2 # phase shift
Av = 110*np.sqrt(2) # voltage peak
Ai = 5*np.sqrt(2) # current peak
fs = 4000 # steps
t = np.arange(0.000, 1/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, axs = plt.subplots(2,1,figsize = (16,10))
ax1 = axs[0]
ax1.axhline(linewidth=0.25, color='black')
ax1.axvline(linewidth=0.25, color='black')
ax1.plot(t, v, label = 'Voltage in phase A')
ax1.plot(t, i, label = 'Current in phase A')
ax1.set_ylabel('Voltage and Current')
ax1.axis([0, 1/f0, -200, 200]);
ax1.legend(loc='upper left')
ax2 = axs[1]
ax2.axhline(linewidth=0.25, color='black')
ax2.axvline(linewidth=0.25, color='black')
#$p = \frac{V_{max}I_{max}}{2} \cos\theta (1 + \cos 2\omega t)
# + \frac{V_{max}I_{max}}{2} \sin 2\omega t \sin \theta$
p_R = Av*Ai/2*(np.cos(phi) * (1 + np.cos(2 * 2 * np.pi * f0 * t)))
p_X = Av*Ai/2*(np.sin(phi) * (np.sin(2 * 2 * np.pi * f0 * t)))
ax2.plot(t, p_R, label = 'Instantaneous Active Power in phase A', linestyle='--', color = 'b')
ax2.plot(t, p_X, label = 'Instantaneous Reactive Power in phase A', linestyle='-.', color = 'r')
#ax2.plot(t, v*i, label = 'Power in phase A', color='g')
ax2.plot(t, p_R+p_X, label = 'Instantaneous Power in phase A', color='g')
ax2.set_ylabel('Power')
ax2.legend(loc='upper left')
ax2.axis([0, 1/f0, -1500, 1500]);
# <!-- collapse=True -->
f0 = 60 # Hz (frequency)
phi = np.pi/2 # phase shift
Av = 110*np.sqrt(2) # voltage peak
Ai = 5*np.sqrt(2) # current peak
fs = 4000 # steps
t = np.arange(0.000, 1/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, axs = plt.subplots(2,1,figsize = (16,10))
ax1 = axs[0]
ax1.axhline(linewidth=0.25, color='black')
ax1.axvline(linewidth=0.25, color='black')
ax1.plot(t, v, label = 'Voltage in phase A')
ax1.plot(t, i, label = 'Current in phase A')
ax1.set_ylabel('Voltage and Current')
ax1.axis([0, 1/f0, -200, 200]);
ax1.legend(loc='upper left')
ax2 = axs[1]
ax2.axhline(linewidth=0.25, color='black')
ax2.axvline(linewidth=0.25, color='black')
#$p = \frac{V_{max}I_{max}}{2} \cos\theta (1 + \cos 2\omega t)
# + \frac{V_{max}I_{max}}{2} \sin 2\omega t \sin \theta$
p_R = Av*Ai/2*(np.cos(phi) * (1 + np.cos(2 * 2 * np.pi * f0 * t)))
p_X = Av*Ai/2*(np.sin(phi) * (np.sin(2 * 2 * np.pi * f0 * t)))
ax2.plot(t, p_R, label = 'Instantaneous Active Power in phase A', linestyle='--', color = 'b')
ax2.plot(t, p_X, label = 'Instantaneous Reactive Power in phase A', linestyle='-.', color = 'r')
#ax2.plot(t, v*i, label = 'Power in phase A', color='g')
ax2.plot(t, p_R+p_X, label = 'Instantaneous Power in phase A', color='g')
ax2.set_ylabel('Power')
ax2.legend(loc='upper left')
ax2.axis([0, 1/f0, -1500, 1500]);

The Instantaneous power in the phase is equal to the reactive power. The power oscillates between the source and the inductive circuit.
### Case 3 : is -90
When
# <!-- collapse=True -->
f0 = 60 # Hz (frequency)
phi = -np.pi/2 # phase shift
Av = 110*np.sqrt(2) # voltage peak
Ai = 5*np.sqrt(2) # current peak
fs = 4000 # steps
t = np.arange(0.000, 1/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, axs = plt.subplots(2,1,figsize = (16,10))
ax1 = axs[0]
ax1.axhline(linewidth=0.25, color='black')
ax1.axvline(linewidth=0.25, color='black')
ax1.plot(t, v, label = 'Voltage in phase A')
ax1.plot(t, i, label = 'Current in phase A')
ax1.set_ylabel('Voltage and Current')
ax1.axis([0, 1/f0, -200, 200]);
ax1.legend(loc='upper left')
ax2 = axs[1]
ax2.axhline(linewidth=0.25, color='black')
ax2.axvline(linewidth=0.25, color='black')
#$p = \frac{V_{max}I_{max}}{2} \cos\theta (1 + \cos 2\omega t)
# + \frac{V_{max}I_{max}}{2} \sin 2\omega t \sin \theta$
p_R = Av*Ai/2*(np.cos(phi) * (1 + np.cos(2 * 2 * np.pi * f0 * t)))
p_X = Av*Ai/2*(np.sin(phi) * (np.sin(2 * 2 * np.pi * f0 * t)))
ax2.plot(t, p_R, label = 'Instantaneous Active Power in phase A', linestyle='--', color = 'b')
ax2.plot(t, p_X, label = 'Instantaneous Reactive Power in phase A', linestyle='-.', color = 'r')
#ax2.plot(t, v*i, label = 'Power in phase A', color='g')
ax2.plot(t, p_R+p_X, label = 'Instantaneous Power in phase A', color='g')
ax2.set_ylabel('Power')
ax2.legend(loc='upper left')
ax2.axis([0, 1/f0, -1500, 1500]);
# <!-- collapse=True -->
f0 = 60 # Hz (frequency)
phi = -np.pi/2 # phase shift
Av = 110*np.sqrt(2) # voltage peak
Ai = 5*np.sqrt(2) # current peak
fs = 4000 # steps
t = np.arange(0.000, 1/f0, 1.0/fs) # plot from 0 to .02 secs
v = Av * np.cos(2 * np.pi * f0 * t + phi)
i = Ai * np.cos(2 * np.pi * f0 * t )
fig, axs = plt.subplots(2,1,figsize = (16,10))
ax1 = axs[0]
ax1.axhline(linewidth=0.25, color='black')
ax1.axvline(linewidth=0.25, color='black')
ax1.plot(t, v, label = 'Voltage in phase A')
ax1.plot(t, i, label = 'Current in phase A')
ax1.set_ylabel('Voltage and Current')
ax1.axis([0, 1/f0, -200, 200]);
ax1.legend(loc='upper left')
ax2 = axs[1]
ax2.axhline(linewidth=0.25, color='black')
ax2.axvline(linewidth=0.25, color='black')
#$p = \frac{V_{max}I_{max}}{2} \cos\theta (1 + \cos 2\omega t)
# + \frac{V_{max}I_{max}}{2} \sin 2\omega t \sin \theta$
p_R = Av*Ai/2*(np.cos(phi) * (1 + np.cos(2 * 2 * np.pi * f0 * t)))
p_X = Av*Ai/2*(np.sin(phi) * (np.sin(2 * 2 * np.pi * f0 * t)))
ax2.plot(t, p_R, label = 'Instantaneous Active Power in phase A', linestyle='--', color = 'b')
ax2.plot(t, p_X, label = 'Instantaneous Reactive Power in phase A', linestyle='-.', color = 'r')
#ax2.plot(t, v*i, label = 'Power in phase A', color='g')
ax2.plot(t, p_R+p_X, label = 'Instantaneous Power in phase A', color='g')
ax2.set_ylabel('Power')
ax2.legend(loc='upper left')
ax2.axis([0, 1/f0, -1500, 1500]);

In a purely capacitive circuit, power oscillates between the source and electric field associated with the capacitor.
# Expression for complex power
We know from Euler’s identity that, for any real number x
This means, we can write the above equations as :
Similarly,
Hence