I am looking for the transfer function of three cascaded RC filters: schematic of the circuit

I have found the solution for two RC cascades (components differently labeled): second order solution

I need an analytical expression like this one for three cascaded RC stages, because I need to fit such a function to experimentally measured data from a network with unknown components Ri and Ci.

I tried to find the function myself using KCL and KVL but expressions tend to get awfully long and so far I didn't manage to find a transfer function that is in agreement with simulations of such networks.

Maybe one of you guys has the transfer function for three cascaded RC filters at hand? Or is there probably a different way to find the components Ri and Ci for a system like that from measured data Vout/Vi(frequency)?

  • Personally I don't know, but IIRC, the transfer function of cascaded networks is the product of each network's transfer function (i.e. \$H(\omega) = H1(\omega) \cdot H2(\omega)\$). So maybe you should find each RC network's transfer function and multiply them. Be careful with re-arranging them, btw. – Rohat Kılıç Oct 11 '17 at 21:35
  • Unfortunately, I cannot measure the frequency responses of the single RC stages independently, only from the complete network in total. – Matt Witt Oct 11 '17 at 21:39
  • 3
    @RohatKılıç No, it's not a simple product because of the output impedance of the first section leading into the input impedance of the second, etc. – jonk Oct 11 '17 at 21:53
  • @MattWitt I don't, off-hand. I'd probably set this up using KCL/KVL in the usual fashion (one node at a time) and then just go solve the results with Sage. Yeah. I think it starts getting messy. I think it must be in some old, ancient book (I just checked Sallen and Key's stuff from '54 and '55, not there.) But not many these days will care about a 3rd order RC passive. I probably should be able to do this in my head using nothing more than obvious symmetries. But... – jonk Oct 11 '17 at 22:11
  • Can you just use a SPICE program like LTspice? Or MATLAB/Octave? Or any other type of computer-based computation (e.g. Python)? This equation is going to get ugly fast, and there's so much room for (inevitable) human error. – calcium3000 Oct 11 '17 at 22:15
up vote 2 down vote accepted

From the following schematic:


simulate this circuit – Schematic created using CircuitLab

I get the following set of expressions:

$$\begin{align*} \frac{V_O}{R_3} + s\: C_3\: V_O &= \frac{V_Y}{R_3}\tag{$V_O$}\\\\ \frac{V_Y}{R_2} + \frac{V_Y}{R_3} + s\: C_2\:V_Y &= \frac{V_X}{R_2} + \frac{V_O}{R_3}\tag{$V_Y$}\\\\ \frac{V_X}{R_1} + \frac{V_X}{R_2} + s\: C_1\:V_X &=\frac{V_I}{R_1} + \frac{V_Y}{R_2}\tag{$V_X$} \end{align*}$$

Solving, I get this gnarly mess:

$$\begin{align*} \tfrac{V_O}{V_I}=\tfrac{1}{\frac{R_1}{R_2 R_3}\left[R_2^2 R_3^2\left(C_1 s+\frac{1}{R_1}+\frac{1}{R_2}\right)\left(C_2 s+\frac{1}{R_2}+\frac{1}{R_3}\right)\left(C_3 s+\frac{1}{R_3}\right)-R_2^2\left(C_1 s+\frac{1}{R_1}+\frac{1}{R_2}\right)-R_3^2\left(C_3 s+\frac{1}{R_3}\right)\right]} \end{align*}$$

Moving towards a characteristic form:

$$\begin{align*} \tfrac{V_O}{V_I} &=\frac{K}{s^3+A\cdot s^2+B\cdot s + C}, \quad where,\\\\ K&=\frac{1}{C_3 C_2 C_1 R_3 R_2 R_1}\\\\ A &= \frac{1}{C_1 R_1} + \frac{1}{C_1 R_2} + \frac{1}{C_2 R_2} + \frac{1}{C_2 R_3} + \frac{1}{C_3 R_3} \\\\ B &= \frac{1}{C_2 C_1 R_2 R_1} + \frac{1}{C_2 C_1 R_3 R_1} + \frac{1}{C_2 C_1 R_3 R_2} \\&\quad\quad + \frac{1}{C_3 C_1 R_3 R_1} + \frac{1}{C_3 C_1 R_3 R_2} + \frac{1}{C_3 C_2 R_3 R_2} \\\\ C&=\frac{1}{C_3 C_2 C_1 R_3 R_2 R_1} \end{align*}$$

At this point I think it moves on to a substitution to get the denominator into the form of \$x^3+p\cdot x + q\$ with \$x=s-\frac{A}{3}\$, \$p=B-\frac{A^2}{3}\$ and \$q=\frac{2 A^3}{27}-\frac{A B}{3}+C\$, then variable replacement using \$x=\sigma+j\omega\$, then sorting into real and imaginary parts. And so on. Enjoy.

  • Thank you very much. Although I didn't derive a clean form of the TF, your "gnarly mess" was all I needed. – Matt Witt Oct 15 '17 at 21:57
  • Gave you a +1 -- I think you could use it!! Glad the results helped. I hope you followed okay. – jonk Oct 16 '17 at 1:52

You can determine this transfer function without writing a single line of algebra by using the fast analytical circuits techniques or FACTs. What you need to do is determine the natural time constants of this circuit when the excitation (\$V_{in}\$) is reduced to 0 V or replaced by a short circuit in the schematic. Then, you "look" at the resistance offered by each of the energy-storing elements (the capacitors in this example) in dc or in high-frequency. Look at the below sketch:

enter image description here

First, you look at the transfer function \$H_0\$ for \$s=0\$: open all the caps and find that \$H_0=1\$. Then, determine by inspection - meaning, just observe the schematic - the resistance offered by each capacitor's connecting terminals when the other caps are set to their dc state (infinite impedance or removed from the circuit). In this mode, the excitation source is reduced to 0 V and replaced by a wire in the schematic. For \$C_1\$, the resistance you "see" is the series connection of \$R_1\$ and \$R_2\$ so the first time constant is \$\tau_1=C_1(R_1+R_2)\$. For \$\tau_2\$, the resistance is \$R_2\$ then \$\tau_2=C_2R_2\$. And for \$\tau_3\$, the resistance is \$R_1+R_2+R_0\$ then \$\tau_3=C_0(R_1+R_2+R_0)\$. Adding these time constants forms the first denominator coefficient \$b_1=\tau_1+\tau_2+\tau_3\$. 1 mn to obtain this result without a calculation, just inspection.

For the second term, \$b_2\$, we will look at \$\tau_{12}\$, \$\tau_{13}\$ and \$\tau_{23}\$. This notation simply means that for \$\tau_{12}\$, you "look" at the resistance driving \$C_2\$ while \$C_1\$ is set in its high-frequency state (a short circuit). For instance, looking at the above sketch, you see that \$\tau_{12}=C_2(R_1||R_2)\$. Continue and form \$b_2=\tau_1\tau_{12}+\tau_1\tau_{13}+\tau_2\tau_{23}\$.

For the final term, \$b_3\$, determine \$\tau_{123}\$: look at the resistance from \$C_0\$ terminals while \$C_1\$ and \$C_2\$ are set in their high-frequency state (a short circuit). Then, assemble \$b_3=\tau_1\tau_{12}\tau_{123}\$. This is it, you have your denominator \$D(s)=1+sb_1+s^2b_2+s^3b_3\$ and the transfer function is immediate and equal to



\$b_1=R_1C_1+R_2(C_1+C_2)+C_0(R_1+R_2+R_0)\$ \$b_2=C_1(R_1+R_2)(C_2(R_1||R_2)+R_0C_0)+R_2C_2C_0(R_1+R_0)\$ \$b_3=C_1C_2C_0R_1R_2R_0\$

Now, this 3rd-order polynomial form can be rearranged under different expressions, depending on how the poles are organized. If they are well spread, you can factor \$D(s)\$ as \$D(s)\approx (1+b_1s)(1+\frac{b_2}{b_1}s)(1+\frac{b_3}{b_2}s)\$. If two poles are close to each other, then one pole dominates while a second-order polynomial form appears for the two coincident poles. I have captured all these expressions as well as the raw reference expression obtained using Thévenin (to compare the derived results to) and they all match perfectly. See the below Mathcad shots:

enter image description here

enter image description here

As you can see with the FACTs, I did not write a single line of algebra and chopped the original schematic in a series of small sketches individually observed. That means that if I spot an error between the raw expression and my canonical form, I can go back to the small sketch and correct the guilty one immediately. Should you use KVL/KCL and find a mistake, good luck to correct it without restarting from scratch. FACTs are truly the way to go and I encourage students to acquire this skill.

Your Answer


By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.