sfact
fatoração espectral em tempo discreto
Seqüência de Chamamento
F = sfact(P)
Parâmetros
- P
matriz quadradade polinômios reais.
Descrição
Acha F
, um fator espectral de
P
. P
é uma matriz de polinômios tal
que cada raiz de P
possui uma imagem simétrica em
relação ao círculo unitário. O problema é singular se uma raiz estiver no
círculo unitário.
sfact(P)
retorna uma matriz de polinômios
F(z)
que é anti-estável e tal que
P = F(z)* F(1/z) *z^n
Para polinômios escalares um algorimto específico é implementado. Os algoritmos são implementados do livro de Kucera.
Exemplos
//exemplo polinomial p = (%z -1/2) * (2 - %z) w = sfact(p); w*(horner(w, 1/%z)).num
//exemplo matricial z = %z; F1 = [z-1/2, z+1/2, z^2+2; 1, z, -z; z^3+2*z, z, 1/2-z]; P = F1*gtild(F1,'d'); F = sfact(P) roots(det(P)) roots(det(gtild(F,'d'))) // as raízes estáveis roots(det(F)) // as raízes anti-estáveis clean(P-F*gtild(F,'d'))
// exemplo de uso de tempo contínuo s = %s; p = -3*(s+(1+%i))*(s+(1-%i))*(s+0.5)*(s-0.5)*(s-(1+%i))*(s-(1-%i)); p = real(p); // p(s) = polinômio em s^2 , procura por f estável tal que p=f(s)*f(-s) w = horner(p,(1-s)/(1+s)); // transformação bilinear w=p((1-s)/(1+s)) wn = w.num; // tomando o numerador fn = sfact(wn); // fator e .. f = horner(fn,(1-s)/(s+1)).num; // transformação de volta f = f/sqrt(horner(f*gtild(f,'c'),0)); f = f*sqrt(horner(p,0)); // normalização roots(f) //f é estável clean(f*gtild(f,'c')-p) // f(s)*f(-s) é p(s)
Report an issue | ||
<< rowcompr | Polinômios | simp >> |