Spectral factorization of polynomial x(s)
11 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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?
0 comentarios
Respuesta aceptada
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)
Ver también
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!