Estoy diseñando una función en Python similar al comando 'feedback (T)' de MATLAB. Sé que los módulos ya existen, pero es algo que quiero hacer por mí mismo para divertirme. Sin embargo, estoy teniendo problemas. Digamos que tengo la función de transferencia de alguna planta arbitraria. $$ T (s) = {s + 5 \ sobre s ^ 2 + 4s + 7} $$ Digamos también que tengo un controlador PID / PI / PD arbitrario (no significa que este controlador sea realmente bueno, es más que demostrar el concepto, ¡así que tenlo en cuenta!)
$$ C (s) = {2.3802s + 7.7309 \ over s} $$
Sabemos que la función de transferencia de retroalimentación de bucle cerrado tiene la forma de $$ CLTF = {T (s) C (s) \ sobre 1 + T (s) C (s)} $$
Cuando CLTF se calcula arriba en Matlab, obtenemos ... $$ CLTF = {2.38 s ^ 5 + 29.15 s ^ 4 + 133.8 s ^ 3 + 292 s ^ 2 + 270.6 s \ sobre s ^ 6 + 10.38 s ^ 5 + 59.15 s ^ 4 + 189.8 s ^ 3 + 341 s ^ 2 + 270.6 s} $$
Sin embargo, utilizando MATLAB y comentarios (T * C, 1), obtenemos el resultado de ... $$ 2.38 s ^ 2 + 19.63 s + 38.65 \ sobre s ^ 3 + 6.38 s ^ 2 + 26.63 s + 38.65 $$
Ya me doy cuenta de que puedo tomar mi CLTF en MATLAB, ponerlo en pole / zero (zpk) y las cosas se cancelarán para obtener el mismo resultado que el comando de comentarios de MATLAB. Sin embargo, ningún programa simbólico parece ser capaz de factorizar estos polinomios. MATLAB está claramente haciendo algo que no sé entonces. ¿Alguien tiene una pista de cómo funciona el algoritmo de matlab? ¿O cómo podría codificar esta misma función?