Skip to content
kd
29 Apr 2015
Back to blog

Active, reactive and apparent power

5 min read (948 words)

Table of contents

Introduction to basic concepts

VV and II are used to indicate phasor representations of sinusoidal voltages and currents. EE is used to represent generated voltage or electromotive force (emf). VV is often used to measure a potential difference between two points. vv is used to represent the instantaneous voltage between two points.

Let voltage be defined as the following:

v=155.563491861cos(ωt+ϕ)v = 155.563491861 \cos(\omega t + \phi)

i=7.07106781187cosωti = 7.07106781187 \cos\omega t

Let us plot this and see what it looks like.

Code
import matplotlib.pyplot as plt
import numpy as np
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();
plt.savefig("./power_3_0.png", transparent=True, dpi=300)

We can calculate the maximum, minimum and the RMS value as follows:

def rms(x):
return np.sqrt(np.mean(x**2))
print('Maximum', max(v))
print('Minimum', min(v))
print('RMS', rms(v))
print('Ratio max/rms', max(v)/rms(v))
try:
np.testing.assert_approx_equal(np.sqrt(2), max(v)/rms(v))
except:
print 'Numbers not equal'
else:
print 'Maximum value = √2 x RMS value'
Maximum 155.563491861
Minimum -155.563491861
RMS 110.0
Ratio max/rms 1.41421356237
Maximum value = √2 x RMS value

V|V| is used to represent magnitude of the phasors.

V=110=155.56342|V| = 110 = \frac{155.5634}{\sqrt{2}}

The RMS value of vv is what is read by a voltmeter.

Expression for power

Let voltage and current be expressed by:

van=Vmaxcos(ωt+θ)v_{an} = V_{max} \cos(\omega t + \theta)

ian=Imaxcosωti_{an} = I_{max} \cos\omega t

Instantaneous power is calculated by pa=van×ianp_{a} = v_{an} \times i_{an}. If we plot the above equations, assuming θ=π6\theta = -\frac{\pi}{6}, we get the following.

Code
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]);
plt.savefig("./power_11_0.png", transparent=True, dpi=300)

We can decompose the instantaneous power following the steps below.

van=Vmaxcos(ωt+θ)v_{an} = V_{max} \cos(\omega t + \theta)

ian=Imaxcosωti_{an} = I_{max} \cos\omega t

p=van×ianp = v_{an} \times i_{an}

p=Vmaxcos(ωt+θ)×Imaxcosωtp = V_{max} \cos(\omega t + \theta) \times I_{max} \cos\omega t

p=VmaxImaxcos(ωt+θ)×cosωtp = V_{max}I_{max} \cos(\omega t + \theta) \times \cos\omega t

We know that,

2cosθcosφ=cos(θφ)+cos(θ+φ)2\cos \theta \cos \varphi = {{\cos(\theta - \varphi) + \cos(\theta + \varphi)}}

p=VmaxImaxcos(ωt+θ)cosωtp = V_{max}I_{max} \cos(\omega t + \theta) \cos\omega t

p=VmaxImax2(cos(ωt+θωt)+cos(ωt+θ+ωt))p = \frac{V_{max}I_{max}}{2}({{\cos(\omega t + \theta - \omega t) + \cos(\omega t + \theta + \omega t)}})

p=VmaxImax2(cosθ+cos(2ωt+θ))p = \frac{V_{max}I_{max}}{2}({{\cos\theta + \cos(2\omega t + \theta )}})

The second cos\cos term is of the following form,

cos(α±β)=cosαcosβsinαsinβ\cos(\alpha \pm \beta) = \cos \alpha \cos \beta \mp \sin \alpha \sin \beta\,

p=VmaxImax2(cosθ+cos2ωtcosθsin2ωtsinθ)p = \frac{V_{max}I_{max}}{2}({{\cos\theta + \cos 2\omega t \cos \theta - \sin 2\omega t \sin \theta}})

p=VmaxImax2(cosθ(1+cos2ωt)sin2ωtsinθ)p = \frac{V_{max}I_{max}}{2}({{\cos\theta (1 + \cos 2\omega t) - \sin 2\omega t \sin \theta}})

p=VmaxImax2cosθ(1+cos2ωt)VmaxImax2sin2ωtsinθ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

θ\theta is the phase angle of one of the phasors. In our case, θ\theta is the phase angle of Voltage, when the angle of Current is 0

Assuming θ=θ\theta = -\theta,

cos(θ)=cos(θ)\cos(\theta) = \cos(-\theta)

sin(θ)=sin(θ)\sin(\theta) = - \sin(-\theta)

Hence,

p=VmaxImax2cosθ(1+cos2ωt)+VmaxImax2sin2ωtsinθ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

We see that the sign of the first term remains unaffected by the sign of θ\theta

Let us plot the two parts of this equation.

Code
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]);
plt.savefig("power_16_0.png", transparent=True, dpi=300)

The blue line (active power) is always positve and has an average value of VmaxImax2cosθ\frac{V_{max}I_{max}}{2}\cos\theta. If we use RMS values, we get

P=Vmax2Imax2cosθP = \frac{V_{max}}{\sqrt{2}} \frac{I_{max}}{\sqrt{2}} \cos\theta

P=VIcosθP = |V||I|\cos\theta

The average value of the red line (reactive power) is equal to zero.

The maximum value of the instantaneous reactive power is VmaxImax2sinθ\frac{V_{max}I_{max}}{2} \sin \theta

Or,

Q=VIsinθQ = |V||I|\sin\theta

So why is it called real power?

Code
plt.rc("font", size=20)
fig, ax = plt.subplots(1,1,figsize = (16,10))
ax.axis('off');
import schemdraw as schem
import schemdraw.elements as e
# schem.use('svg')
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(ax=ax, show=False)
plt.savefig("./schemdraw.png", dpi=300, transparent=True)

Code
plt.rc("font", size=20)
fig, ax = plt.subplots(1,1,figsize = (16,10))
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');
plt.savefig("./power_20_0.png", transparent=True, dpi=300)

We know that θ\theta is the phase difference between the Voltage and Current.

p=VmaxImax2cosθ(1+cos2ωt)+VmaxImax2sin2ωtsinθ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

The first term can be rewritten as

VmaxImax2cosθ(1+cos2ωt)\frac{V_{max}I_{max}}{2} \cos\theta (1 + \cos 2\omega t)

VmaxImaxcosθcos2ωtV_{max}I_{max} \cos\theta \cos^2 \omega t

Vmaxcosωt×ImaxcosθcosωtV_{max}\cos \omega t \times I_{max}\cos\theta\cos \omega t

Similarly the second term can be rewritten as

Vmaxcosωt×ImaxsinωtsinθV_{max}\cos \omega t \times I_{max}\sin \omega t \sin\theta

From the above figure we can see that power can be written as

pactive=va×iRp_{active} = v_{a} \times i_{R}

preactive=va×iXp_{reactive} = v_{a} \times i_{X}

Special cases

PP or active power or real power is the power that is dissipated in the resistor, in the form of heat energy. QQ or reactive power is the power that oscillates between the source and inductor or the capacitor. And θ\theta is determined by the nature of the impedance.

Let's look at three cases

Case 1 : θ\theta is zero

When we assume θ\theta is zero, the load is purely resistive

Code
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]);
plt.savefig("./power_26_0.png", dpi=300, transparent=True)

The Instantaneous power in the phase is equal to the active power.

Case 2 : θ\theta is 90

When θ\theta is 90, the load is purely inductive

Code
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]);
plt.savefig("./power_30_0.png", dpi=300, transparent=True)

The Instantaneous power in the phase is equal to the reactive power. The power oscillates between the source and the inductive circuit.

Case 3 : θ\theta is -90

When θ\theta is -90, the load is purely capacitive

Code
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]);
plt.savefig("./power_34_0.png", dpi=300, transparent=True)

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

ejx=cosx+jsinxe^{jx} = \cos x + j\sin x

This means, we can write the above equations as :

cosθ=Re{ejθ}\cos\theta = \operatorname{Re}\{ e^{j \theta} \}

v=155.563491861cos(ωt+θ)v = 155.563491861 \cos(\omega t + \theta)

v=110Re{2ej(ωt+θ)}v = 110 \operatorname{Re}\{ \sqrt{2} e^{j (\omega t + \theta)}\}

v=110Re{2ejθejωt}v = 110 \operatorname{Re}\{ \sqrt{2} e^{ j\theta} e^{j \omega t} \}

Similarly,

i=5Re{2ejωt}i = 5 \operatorname{Re}\{ \sqrt{2} e^{j \omega t} \}

Hence VV can be written as,

V=VθvV = |V| \angle \theta_{v}

I=IθiI = |I| \angle \theta_{i}

VI=VIθvθiVI^* = |V||I|\angle \theta_{v} - \theta_{i}


Citation

@online{krishnamurthy2015activereactiveandapparentpower,
  author = {Dheepak Krishnamurthy},
  title = {Active, reactive and apparent power},
  year = {2015},
  date = {2015-04-29},
  url = {https://kdheepak.com/blog/active-reactive-and-apparent-power/},
  langid = {en},
}

For attribution, please cite this work as:

Dheepak Krishnamurthy, "Active, reactive and apparent power", April 29, 2015 https://kdheepak.com/blog/active-reactive-and-apparent-power/


Fast track to being productive in Vim
Mac OSX productivity apps