How do I find a controller for non-minimum phase systems? Assume that we have a transer function $G(s) = \frac{B}{A}$ which has stable poles, but unstable zeros. We use the controller $Q(s) = \frac{A}{B} = G^{-1}(s)$ and we want that the loop transfer function $L(s) = QG = 1$ due to the feedback transfer function:
$$G_f(s) = \frac{QG}{1 + QG} = \frac{1}{2}$$
But the problem here is that $G^{-1}(s)$ is unstable! 
Question:
How can I form the $Q(s)$ controller so $L(s) = c$, where $c$ is a constant for all $G(s)$ and $Q(s)$?
 A: The only option would be $c=0$, but for any other value your system will be unstable. To see this you can use the Nyquist stability criterion. Namely since $L(s)$ is constant it can't make any encirclements around the minus one point, therefore the same number of unstable poles in $L(s)$ will also be present in the closed loop system.
A: I think I got an answer to my own question.
We have our transfer function $$G(s) = \frac{B(s)}{A(s)}$$
The best way to find the controller $Q(s)$ is to take the inverse of $G(s)$, but in this case, the zeros of $G(s)$ is positive. That means $G^{-1}(s)$ will be unstable. 
The goal of this answer is to find the approximation $G^*(s)$ of $G^{-1}(s)$.
A good choice is to have this:
$$ |G(j\omega)G^*(j\omega)| = |G^+(j\omega)G^+(-j\omega)| =1 \forall \omega$$
Where $G^+(s)$ is the positive zero polynomial and $G^-(s)$ is the rest of the zero polynomial.
Example:
$$G(s) = \frac{(s+2)(s-3)}{s^2 + 1}$$
Then $B^+(s) = (s-3)$ and $B^-(s) = (s+2)$
Then we can write $G^*(s)$ as:
$$G^*(s) = \frac{A(s)}{B^+(-s)B^-(s)}$$
But we still have a problem if $deg(A) > deg(B)$, which is very common!
I will then introduce you to this correction transfer function:
$$G^*(s, m, \tau) =  \frac{A(s)}{B^+(-s)B^-(s)A_m(s, \tau)}$$
Where 
$$A_m(s, \tau) = (1+\tau s)(1+ \alpha \tau s)...(1+\alpha ^{m-1}\tau s)$$
Where $\alpha = 0.5-1$ is a tuning factor and $\tau$ is the time constant, not from $G(s)$. It's a tuning factor as well.
The choice of $\alpha = 1$ gives a multiple pole in $s = -\frac{1}{\tau}$ for degree $m >= deg(A) - deg(B)$.
Now to an example!
Let's say that we have a transfer function of a LTI system: 
$$G(s) = \frac{b_0s - b_1}{as^2 + a_0s + a_1} = \frac{3s - 2}{s^2 + 3s + 1}$$
Where $B^+(s) = 3s-2$ and $B^-(s) = 1$
The inverse $G^{-1}$ looks like this:

And the $G(s)$ looks like this:

My working frequency is very low, because I want to deal with self tuning controllers, that means I will set say that
$$|G(j\omega)G^*(j\omega)| = 1 , [0 <= \omega <= 10]$$
That's my goal!
Now we need to focus on cutting frequency. We want to cut at $10$ rad/s , that means there is going to be a some dB difference between $|G^{-1}(j10)|$ and $|G^*(j10)|$.
Too choose $m$ and $\alpha$ and $\tau$ we say that: 
$m = 2$, because $deg(A) - deg(B) = 1$ and $deg(A) > deg(B)$. The zeros need to be at least many as the poles, or else, our transfer function won't be proper!
That means we need to have an extra pole in $s = -\frac{1}{\tau}$ so $deg(A) = deg(B)$. The solution is $\alpha = 1$
Now we need to select $\tau$. Then we using the bandwidth formula:
$$\omega _b \tau = \sqrt{2^{1/m} - 1}$$
We know $\omega _b = 10$ rad/s and $m = 2$. Then we can find out that 
$$\tau = \frac{\sqrt{2^{1/m} - 1}}{\omega _b} = \frac{\sqrt{2^{1/2} - 1}}{10}
 = 0.0643594$$
Now we can choos $A_m(s,\tau)$ as
$$A_2(s, \tau) = (1+ \alpha^{1-1}\tau s)(1+\alpha ^{2-1} \tau s) = (1+\tau s)^2$$
beacuse $m = 2$ and $\alpha = 1$. Remember: $1^0 = 1^1$.
Anyway 
$$A_2(s, 0.0643594) = (1+0.0643594s)^2$$
And now $G^*(s)$ is:
$$G^*(s) = \frac{A(s)}{B^+(-s)B^-(s)(A_m(s,\tau)}= \frac{s^2 + 3s + 1}{(-3s - 2)1(1+0.0643594s)^2}$$
Simulating $G^*(s)$ will show us the blue line:

Now it's time for bode plotting
$$|G(j\omega)G^*(j\omega)|$$

Very good!

If you don't want to compute to much, you can set:


*

*$\alpha = 1$

*$m = 2$

*$\tau$ = 0.00000001 or a very low number


if you dealing with a second order non-minimum phase system. 
The result will be:

So let's go controll engineers and control theorists, create invertible controllers like never before! 
