You might start to notice the repetition with imports. We will again import numpy
and matplotlib.pyplot
so we can deal with arrays of numbers and plotting. Shift-Enter the code cell below before getting started.
import matplotlib.pyplot as plt
import numpy as np
Part 1 - Multistage RC Circuits¶
We want to plot the gain and the phase, as functions of the signal frequency, . You will plot your experimental resutls and overlay the theoretical model. We will not do any fitting of the model to the data. In the code cell below
- is calculated to be an array from 0 to 100 000 in steps of 1 rad/s.
- Constants for the resistors and capacitors are entered, but you may need to change the values if you used different resistor and capacitor values.
- The theoretical gain and phase are calculated for you.
- Enter your measured angular frequencies, .
- Enter your measured gain.
- Enter your measured phase, .
The code will plot your data and the theoretical model. A figure image will be saved for you.
# theoretical data
omega = np.linspace(0,100000, 100001)
#experimental constants
R1 = 1000
R2 = 10000
C1 = 1e-7 #100 nF
C2 = 1e-8 #1nF
print(1/R1/C1, 1/R2/C2) #print the 1/RC values
#theoretical functions
gain_theory = omega*R1*C1/np.sqrt(1+(omega*R1*C1)**2) * omega*R2*C2/np.sqrt(1+(omega*R2*C2)**2)
phase_theory = np.atan(1/(omega*R1*C1)) + np.atan(1/(omega*R2*C2))
# experimental data
omega_exp = np.array([])
gain_exp = np.array([])
phase_exp = np.array([])
#Plotting the functions and measurements
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
ax1.semilogx(omega, gain_theory, '-k', label='Theoretical Gain')
ax1.semilogx(omega_exp, gain_exp, 'ob', label='Experimental Gain')
ax1.set_ylabel('Theoretical Gain')
ax1.legend()
ax2.semilogx(omega, phase_theory, '-k', label='Theoretical Phase')
ax2.semilogx(omega_exp, phase_exp, 'ob', label='Experimental Phase')
ax2.set_ylabel(r'Phase, $\phi$ (rad)')
ax2.legend()
plt.xlabel(r'log($\omega$)')
plt.savefig('multiRC.png')
plt.show()
Part 2 - RLC Circuits¶
- Copy the code above and paste it in the code cell below.
- Delete the second resistor and capacitor values.
- Add a constant for your inductor value.
- Delete the
print
statement. - Change the theoretical
gain_theory
tocurrent_theory
, and enter the math for the theoretical function - Edit the theoretical phase
phase_theory
with the RLC phase function. - Add your experimental frequencies (rad/s) to
omega_exp
. - Change the experimental
gain_exp
tocurrent_exp
and enter your measurements. - Add your experimental phase measurements to
phase_exp
. - Change the array names in the plotting section to match your new names.
- Change the filename that is saved.
Run the code to get a graph of your data with the theoretical models overlaid.