Spectral factorization of polynomial x(s)
9 views (last 30 days)
Show older comments
As a part of the algorithm that is used for Optimal robust stabilization I have to find stable polynomial such that:
Where and are numerator and denominator of a transfer function , and .
I have managed to find and by using:
s = tf('s');
% input of transfer function
transfer_function = input("Input the transfer function: ")
%ex: 1/s^3
[b,a] = tfdata(transfer_function);
arrayB = cell2mat(b);
arrayA = cell2mat(a);
syms s;
b = poly2sym(arrayB,s);
a = poly2sym(arrayA,s);
% b(-s) and a(-s)
minus_b = subs(b,s,-s);
minus_a = subs(a,s,-s);
expression = a*minus_a+b*minus_b;
But I am having trouble finding and .
I have tried using spectral factorization with the function spectralfact(), but it does not seem to work. Can you give me any tips on how to procede from here?
0 Comments
Accepted Answer
Torsten
on 15 May 2022
Edited: Torsten
on 15 May 2022
Let
a(s)*a(-s)+b(s)*b(-s) = p0 + p1*s + ... + p2n*s^(2*n)
Determine the roots of
a(s)*a(-s) + b(s)*b(-s)
The 2*n roots appear in pairs
s1,-s1,s2,-s2,...,sn,-sn
Take
s1,s2,...,sn
and build the polynomial
d(s)=a*(s-s1)*(s-s2)*...*(s-sn)
with a constant "a" to be determined.
Then
d(s)*d(-s) = a^2*(-1)^n*(s+s1)*(s+s2)*...*(s+sn)*(s-s1)*(s-s2)*...*(s-sn)
This means that
a(s)*a(-s) + b(s)*b(-s) = d(s)*d(-s)
if
p2n = a^2*(-1)^n
thus
a = sqrt(p2n/(-1)^n)
I leave it to you to implement this in MATLAB.
More Answers (0)
See Also
Categories
Find more on Stability Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!