In [1]:
from lcapy import Circuit, j, omega, s
cct = Circuit("""
Vi 1 0_1 step; down
C 1 2; right, size=1.5
R 2 0; down
W 0_1 0; right
W 0 0_2; right, size=0.5
P1 2_2 0_2; down
W 2 2_2;right, size=0.5""")

In [2]:
cct.draw()



In [3]:
H = (cct.R.V(s) / cct.Vi.V(s)).simplify(); H


Out[3]:
$$\frac{C R s}{C R s + 1}$$

In [4]:
H(j * omega)


Out[4]:
$$\frac{\mathrm{j} C R \omega}{\mathrm{j} C R \omega + 1}$$

In [5]:
H(j * omega).rationalize_denominator()


Out[5]:
$$\frac{C^{2} R^{2} \omega^{2} + \mathrm{j} C R \omega}{C^{2} R^{2} \omega^{2} + 1}$$

In [6]:
H(j * omega).real_imag


Out[6]:
$$\frac{C^{2} R^{2} \omega^{2}}{C^{2} R^{2} \omega^{2} + 1} + \frac{\mathrm{j} C R \omega}{C^{2} R^{2} \omega^{2} + 1}$$

In [7]:
H(j * omega).magnitude


Out[7]:
$$\frac{\sqrt{C^{4} R^{4} \omega^{4} + C^{2} R^{2} \omega^{2}}}{C^{2} R^{2} \omega^{2} + 1}$$

In [8]:
H(j * omega).phase_degrees


Out[8]:
$$\frac{180 \operatorname{atan_{2}}{\left(1,C R \omega \right)}}{\pi}$$

In [9]:
H1 = H.subs('C', 1e-6).subs('R', 1e3)
H1(j * omega)


Out[9]:
$$\frac{\mathrm{j} \omega}{1000 \left(\frac{\mathrm{j} \omega}{1000} + 1\right)}$$

In [10]:
from numpy import logspace
w = logspace(1, 6, 500)
%matplotlib inline
ax = H1(j * omega).dB.plot(w, log_frequency=True)



In [11]:
ax = H1(j * omega).phase_degrees.plot(w, log_frequency=True)



In [12]:
H1


Out[12]:
$$\frac{s}{1000 \left(\frac{s}{1000} + 1\right)}$$