Spectral factorization of polynomial x(s)

11 visualizaciones (últimos 30 días)
Omar Decevic
Omar Decevic el 15 de Mayo de 2022
Comentada: Omar Decevic el 15 de Mayo de 2022
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?

Respuesta aceptada

Torsten
Torsten el 15 de Mayo de 2022
Editada: Torsten el 15 de Mayo de 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.

Más respuestas (0)

Categorías

Más información sobre Stability Analysis en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by