"""Original solution illustration; output the matching PNG into the cwd.""" from pathlib import Path import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt import numpy as np from matplotlib import patches plt.rcParams.update({"font.size":12,"figure.facecolor":"white"}) fig=plt.figure(figsize=(10.5,9.3),layout="constrained") grid=fig.add_gridspec(4,2) w=np.logspace(-2,2,600) ax=fig.add_subplot(grid[0,0]);ax.semilogx(w,1/np.sqrt(1+w*w),lw=2,color="#286d88") ax.scatter([1],[1/np.sqrt(2)],s=20,color="#a3304c") ax.set(xlabel=r"$\omega RC$",ylabel="Amplitude ratio",title="Low-pass frequency response",ylim=(0,1.1));ax.grid(alpha=.2) ax=fig.add_subplot(grid[0,1]);ax.semilogx(w,-np.arctan(w)*180/np.pi,lw=2,color="#286d88") ax.set(xlabel=r"$\omega RC$",ylabel="Phase (degrees)",yticks=[-90,-45,0],ylim=(-95,5));ax.grid(alpha=.2) phase=np.linspace(0,3,1801) for row,value in enumerate([.1,10,1],1): T=2*np.pi/value;t=phase*T;local=t%T;M=np.tanh(T/4) vi=np.where(local