Transfer function with transfer function numerator greater than denominator

How can I make a linearized transfer functions with the numerator greater than denominator as below

Answers (1)

Not sure how to answer this. Evaluating from the mathematical perspective, you can probably understand the following and implement that in your work. I'll start with a general improper rational function:
which can be rewritten as follow:
.
I'll go with first and perform the long division to obtain
.
Next, perform the same procedure on
.
Now, they can summed up and simplified as
where
Example:
a = 7;
b = 5;
c = 3;
p = 2;
q = 1;
s = tf('s');
G1 = (7*s^2 + 5*s + 3)/(2*s + 1)
G1 = 7 s^2 + 5 s + 3 --------------- 2 s + 1 Continuous-time transfer function.
kp = b/p - a*q/p^2; % p-gain
kf = (a*q^2)/p^2 - b*q/p + c; % f-gain
kd = a/p; % d-gain
G2 = kp + kf/(p*s + q) + kd*s
G2 = 7 s^2 + 5 s + 3 --------------- 2 s + 1 Continuous-time transfer function.
In this form, , you isolate them and know what each term does.
Edit: If you want to implement this improper transfer function in Simulink, then this is one of the ways to do it.
a = 7;
b = 5;
c = 3;
p = 2;
q = 1;
kp = b/p - a*q/p^2; % p-gain
kf = (a*q^2)/p^2 - b*q/p + c; % f-gain
kd = a/p; % d-gain

8 Comments

@Sam Chak Thank you, It's great suggestion. And do you know how to put the m.file to Simulink. For exmaple, how to put the continous time transfer function as your example to the simulink?
Simulink's transfer function block can never have a higher numerator degree than denominator degree.
I just experimented, and seem to have been successful in using MATLAB to build an "improper" transfer function (with numerator degree higher than denominator degree); I then used ss() on the transfer function to created a state-space model. I then extracted the A, B, C, D matrices from the state space representation, and entered them into a Simulink State Space block. The resulting code ran (I don't know if the result is "right" )
@Walter Roberson can you share your simulation so I can learn from it. Thank you
I don't think it is "right." With an improper tf, the state space model is in descriptor form, i.e., the E matrix is not an identity
sys = ss(tf([7 5 3],[2 1]));
sys.E
ans = 3×3
0 1 0 0 0 1 0 0 1
The State Space block doesn't operate with descriptor form (neither does the LTI System block).
Thanks for pointing that out; I had not encounted that before.
That model is technically correct, which is the best kind of correct, but using a derivative block for simulation is not recommended. Typically, it's replaced with a tf of the form s/(as + 1) with a small enough so that the tf has the same response as the derivative at the low frequencies of interest.
I have edited the Answer to demo how to implement the improper transfer function in Simulink using basic blocks. By the way, if you find the mini tutorial and Simulink model are helpful, please consider accepting ✔ and voting 👍 the Answer. Thanks!
Walter is right that Simulink cannot accept improper transfer function where the degree of the numerator is greater than the degree of the denominator.
Paul is right that another way to implement the improper transfer function in Simulink is to use the Descriptor State-Space. In fact, the improper transfer function is also similar to the ideal PID Controller. But I think it maybe a little advanced to explain that at this stage, if you haven't grasped the basic theory about state-space modeling.
Edit: Paul is also correct about replacing the ideal Derivative block with the Filtered Derivative for practical reasons.
I did not know about that Descriptor State Space block, thanks for pointing it out. For singular E it looks like it implements a differential-algebraic equation (DAE). I've used Simulink in the past for DAE systems and it worked fine, albeit a bit more slowly, Having said that, I would avoid it if possible: Algebraic Loop Concepts.
There are other strategies for dealing with an improper transfer function in Simulink that may be applicable depending on the model. I'm pretty sure that there is a doc page that discusses this issue, but as usual can't find it when I need to, or maybe I'm imagining it.

Sign in to comment.

Categories

Find more on Simulink in Help Center and File Exchange

Asked:

on 23 Jun 2022

Commented:

on 24 Jun 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!