Aquí hay dos problemas diferentes.
1.) Si no pasas un vector de tiempo a la función paso, Matlab no puede saber cuánto tiempo debe simular. Por lo tanto, hace una conjetura, basada en la heurística con el objetivo de simular el tiempo suficiente para capturar todo lo que es "interesante".
Esta suposición puede ser errónea: Tomemos la función de transferencia de tu pregunta:
num = [0 0 0.009210621525 10.575457566675 55.965845822955 -82.768514420115 -774.08274312 -871.78464 0];
den = [7.65625e-07 0.00175 1.009189490275 10.527157566675 28.36599162858 -82.435244420115 -583.64274312 -871.78464 0];
G = tf(num, den);
step(G);
Este código reproduce tu problema. Ahora, en lugar de step(G);
uso:
t = linspace(0, 10, 10000);
step(t, G);
Y verás que la salida diverge, es decir, que la función de transferencia no es estable.
Sin embargo, también hay problemas numéricos (especialmente cuando se trata de polinomios de alto orden), lo que lleva a tu segundo problema.
2.) Cancelación numérica polo-cero. Usted sabe que algo está mal aquí porque el cierre del bucle no debe aumentar el orden del sistema. Su función de transferencia en lazo abierto es de orden $4$ así debería ser su función de transferencia de bucle cerrado. Pero en realidad es de orden $8$ .
Puede resolverlo numéricamente utilizando G = minreal(G);
. Esto reducirá el pedido a $4$ y esta función de transferencia también será estable.
Para garantizar que con minreal
no se anulan los polos inestables reales, siempre es bueno utilizar cálculos simbólicos como doble comprobación (por ejemplo, la caja de herramientas simbólica, si se tiene acceso a ella):
syms s complex;
plant = -2.568/(s^2 - 13.8);
controller = -21.8 + (-24.6)*(1/s) + (-4.08)*(s/(0.000875*s + 1));
Gs = controller*plant/(1 + controller*plant);
Gs = simplify(Gs);
pretty(Gs)
Esto mostrará
2
52632123 s + 280188381 s + 315864000
------------------------------------------------------------
4 3 2
4375 s + 5000000 s + 52571748 s + 211188381 s + 315864000
Comprueba las raíces:
>> roots([4375, 5000000, 52571748, 211188381, 315864000])
ans =
1.0e+03 *
-1.132282196310660 + 0.000000000000000i
-0.003405221445958 + 0.002311356979519i
-0.003405221445958 - 0.002311356979519i
-0.003764503654566 + 0.000000000000000i
Estable.