%% Teorema del Valor Final en Transformada de Laplace
% © 2023,  Antonio Sala Piqueras, Universitat Politècnica de València. Todos los derechos reservados.
% Este código funcionó sin errores en Matlab R2022b (Linux)
% Objetivo: enunciar y demostrar el teorema del valor final en el dominio de Laplace. Relacionarlo con el concepto de "ganancia estática" y de "punto de equilibrio constante". Discutir ejemplos del mismo.
% Presentaciones en vídeo:
% http://personales.upv.es/asala/YT/V/tvf1.html (enunciado y ejemplo sencillo)
% http://personales.upv.es/asala/YT/V/tvf2.html (demostración opcional)
% http://personales.upv.es/asala/YT/V/tvf3.html (ganancia y equilibrio)
% http://personales.upv.es/asala/YT/V/tvf4.html (ejemplos y generalización a entrada polinomial)
%
% Tabla de Contenidos
% Teorema del Valor Final: enunciado
% Teorema del Valor Final: ¿para qué se usa?
% Demostración del Teorema (esbozo)
%     Prueba TVF por "fracciones simples"
%     Prueba TVF a partir de las propiedades de la Transformada de Laplace
% Caso particular: ganancia estática de una FdT
%     Caso particular del caso particular: entrada constante a sistema realizable, EQUILIBRIO
%         Representación interna
%         EDO lineal
%         Discusión: Tma. Valor Final versus "ganancia estática" versus "equilibrio"
% Ejemplos de aplicación
%     Ejemplo 1: Entrada acotada
%     Ejemplo 2: sistema inestable (no aplica, resultado incorrecto si se hiciese)
%     Ejemplo 3: entrada no acotada, pero salida sí, con valor final
%
%
%% Teorema del Valor Final: enunciado
%
% Teorema Valor Final: y(\infty):=\lim_{t\to\infty}y(t)=\lim_{s\to 0}sY(s), siendo Y(s)=\mathcal L(y(t)).
% Aplica si Y(s) no tiene polos inestables y como mucho uno de ellos está en el origen.
% O sea, el valor final es el "resíduo en cero", si Y(s) tuviera un polo simple en s=0.
%
%
%
%
%
%
%
%% Teorema del Valor Final: ¿para qué se usa?
% Se usa para poder obtener el valor final constante M al que tienda Y(s) sin necesidad de hacer fracciones simples para obtener Y(s)=\frac{M}{s}+\dots, en problemas de análisis de sistemas o en diseño de sistemas de control.
% Al usarlo, todo es muy sencillo... se trata de hacer la variable de Laplace igual a cero en ciertas expresiones.
% Justificación intuitiva: el "valor final" está relacionado con el "equilibrio" al que un sistema estable debería tender... las ecuaciones en equilibrio de un sistema se obtenían con "derivadas a cero"... y la letra "s" salía en la "transformada de Laplace de la derivada sY(s)-y(0)", "derivar en el tiempo" es "multiplicar por s en Laplace"... con lo cual, hacer "derivadas a cero" es primo hermano de "hacer s=0".
% El detalle de la relación del teorema del valor final con las "ecuaciones en equilibrio" se verá más abajo en este material.
%
%% Demostración del Teorema (esbozo)
%%
%% Prueba TVF por "fracciones simples"
% Supongamos que tengo una variable Y(s) tal que  Y(s)=\frac{N(s)}{sQ(s)}=\frac{M}{s}+\frac{P(s)}{Q(s)}  con Q(0)\neq 0 (o sea, como máximo un polo en cero), entonces y(t)=M+suma exponenciales de los polos originados por Q(s)=0... ninguna exponencial de los polos de Q es e^{0t}. Si son estables, el valor final es M. Pero sY(s)=M+\frac{sP(s)}{Q(s)}, con lo que M=\lim_{s\to 0} sY(s).
%
%
%
%
%
%
%% Prueba TVF a partir de las propiedades de la Transformada de Laplace
% Definamos v:=\frac{dy}{dt}. Entonces, por la propiedad de Transf. de Laplace de la derivada, V(s)=sY(s)-y(0) .
% Escribiendo literalmente V(s) a la izquierda tenemos:
% \lim_{T\to\infty}\int_0^T e^{st}v(t)\,dt=sY(s)-y(0)
% Hacemos s\to 0
% \lim_{T\to\infty}\int_0^T v(t)\,dt=\lim_{s\to 0}sY(s)-y(0)
% Si el límite de la izquierda existe (si la abscisa de convergencia de V(s) es \geq 0, si todos los polos de V(s) están a la izquierda de cero ), entonces
% \lim_{T\to\infty}y(T) \ -y(0)=\lim_{s\to 0}sY(s)\ -y(0)
% y(\infty)=\lim_{s\to 0}sY(s)
%
%
%% Caso particular: ganancia estática de una FdT
% Si Y(s)=G(s)u(s), siendo G(s) estable, sin polos en el origen (G(0) es finito) , y siendo u(s) escalón + exponenciales estables, u(s)=\frac{A}{s}+\frac{P(s)}{Q(s)}, entonces el valor final de u(t) es A, por el propio tma. valor final (o la discusión de arriba), y el valor final de y es:
% y(\infty)=\lim_{s\to 0} sY(s)=\lim_{s\to 0} s\left(G(s)u(s)\right)=\lim_{s\to 0} s\cdot \left(\frac{G(s)A}{s}+\frac{G(s)P(s)}{Q(s)}\right) \\
% \qquad =\lim_{s\to 0} \left(G(s)\cdot A+s\frac{G(s)P(s)}{Q(s)}\right)= G(0)\cdot A
% El número G(0) es la "ganancia estática" de la Función de Transferencia G(s), es la "constante de proporcionalidad" que multiplica a la amplitud A del valor final de la entrada.
%
%
%
%
%% Caso particular del caso particular: entrada constante a sistema realizable, EQUILIBRIO
% Arriba, la entrada u(t) no tiene por qué ser constante, la fórmula es más general... Pero la "intuición física" y los conceptos de equilibrio que se suelen revisar en los temas de linealización también nos permite llegar a algo parecido...
%
%% Representación interna
% Un sistema \dot x=Ax+Bu, y=Cx+Du tiene una solución particular constante ante entrada constante (punto de equilibrio constante) dada por la solución con derivadas cero: 0=Ax_{eq}+Bu_{eq}, y_{eq}=Cx_{eq}+Du_{eq}, esto es,
%   y_{eq}=C(-A)^{-1}Bu_{eq}+Du_{eq} = G(0)u_{eq}
% *en la segunda igualdad hemos gastado el hecho de que la FdT de un sistema en representación interna es G(s)=C(sI-A)^{-1}B+D, con lo que sustituyendo s\to 0 obtenemos las ecuaciones en equilibrio, coincidiendo con todas las fórmulas anteriores del TVF.
% Esto no garantiza que el valor final de la salida ante u\neq u_{eq} o condiciones iniciales fuera de equilibrio sea realmente y_{eq}, eso sólo ocurrirá si ese equilibrio es estable y u tiende a u_{eq} cuando t\to\infty, tal y como se ha explicitado arriba.
%% EDO lineal
% Sin usar la representación interna, si un sistema lineal tiene una FdT realizable
% G(s)=\frac{b_{n}s^{n}+b_{n-1}s^{n-1}+b_{n-2}s^{n-2}+\dots b_1s+b_0}{s^n+a_{n-1}s^{n-1}+a_{n-2}s^{n-2}+\dots a_1s+a_0}
% Entonces la EDO lineal asociada a G(s) es:
% \frac{d^{n}y}{dt^{n}}+a_{n-1}\frac{d^{n-1}y}{dt^{n-1}}+\dots a_1\frac{dy}{dt}+a_0y(t)=b_{n}\frac{d^{n}u}{dt^{n}}+b_{n-1}\frac{d^{n-1}u}{dt^{n-1}}+b_{n-2}\frac{d^{n-2}u}{dt^{n-2}}+\dots b_1\frac{du}{dt}+b_0u(t)
% y su u(t)=u_{eq} es constante, tiene una solución particular y(t)=y_{eq} constante que verifica:
% a_0\cdot y_{eq}=b_0\cdot u_{eq}
% o sea, y_{eq}=\frac{b_0}{a_0}u_{eq}=G(0)u_{eq}
%% Discusión: Tma. Valor Final versus "ganancia estática" versus "equilibrio"
% El concepto de "ganancia estática" parece un caso particular del teorema del valor final cuando las entradas tienen valor final, y en particular cuando las entradas son ellas mismas constantes.
% Pero el concepto de ganancia también aplica a un sistema inestable: el punto de equilibrio constante existe "físicamente", aunque sea inestable. Para mantenerlo se necesitará "estabilizar" con algún tipo de "sistema de control realimentado", pero ese punto de equilibrio sí existe aunque la salida no tienda a él.
% También el concepto de "ecuaciones en equilibrio" puede aplicar a un sistema no lineal, de modo que \dot x=f(x,u), y=h(x,u) puede tener un punto de equilibrio constante solución de 0=f(x_{eq},u_{eq}), y_{eq}=h(x_{eq},u_{eq}).
% Por contra, el teorema del valor final puede obtener un valor final de una salida incluso cuando la entrada no sea constante ni esté acotada: un sistema que tenga un "derivador" en sus ecuaciones responderá con una "constante" ante una entrada "rampa no acotada", como veremos en el Ejemplo 3 abajo.
%
%% Ejemplos de aplicación
%% Ejemplo 1: Entrada acotada

syms s t
G(s)=5/(s+2)^2; %FdT de cierto sistema
u(t)=4+sin(t)*exp(-2*t);
U(s)=laplace(u(t))
Y(s)=simplifyFraction(G(s)*U(s))

% \bulletTeorema Valor Final:

limit(s*Y(s),0)

% \bulletComprobamos calculando la respuesta temporal completa:

partfrac(Y(s),FactorMode="real")
y(t)=ilaplace(Y(s))
limit(y(t),inf)

% \bulletComprobamos el concepto de ganancia:

gan=G(0)
ValorFinEntrada=limit(u(t),inf)
gan*ValorFinEntrada

%% Ejemplo 2: sistema inestable (no aplica, resultado incorrecto si se hiciese)

G(s)=0.5/(s-1);
u(t)=0.1;
U(s)=laplace(u(t))
Y(s)=G(s)*U(s)
limit(s*Y(s),0) %Tma valor final MAL APLICADO
y(t)=ilaplace(Y(s))
limit(y(t),inf) %el valor final no es "-1/2"

% Pero el concepto de "ganancia" sí que aplica de cierta forma: el sistema sí tiene una solución particular constante...

gan=G(0)

% La FdT \frac{0.5}{s-1} podría asociarse a una EDO \frac{dy}{dt}-y(t)=0.5u(t), que tiene un punto de equilibrio (inestable) y_{eq}=-\frac{1}{2}u_{eq}. Con los adecuados "sistemas de control" podríamos "estabilizar" dicho punto de equilibrio.
%
%
%% Ejemplo 3: entrada no acotada, pero salida sí, con valor final

G(s)=s/(s+0.5)^2; %tiene un "derivador" en el numerador
pendiente_u=2;
u(t)=pendiente_u*t; %rampa
U(s)=laplace(u(t))

% \bulletTma Valor Final:

limit(s*G(s)*U(s),0) %como derivada de la rampa es una constante, existe el valor final

% \bulletComprobamos calculando la respuesta temporal completa:

y(t)=ilaplace(G(s)*U(s))
limit(y(t),inf)

% \bulletAquí el concepto de ganancia no aplica, al no tener la entrada "valor final" propiamente dicho...

gan=G(0) %nonsense in ramp response

% Un "truco": La respuesta ante "rampa de pendiente A" de G(s) es G(s)\cdot \frac{A}{s^2}=\left(G(s)\cdot\frac{1}{s}\right)\cdot \frac{A}{s}, esto es, la respuesta ante escalón "ficticio" de amplitud "A" de la Función de Transferencia "ficticia" \tilde G(s):=\frac{G(s)}{s}. Por lo tanto la "ganancia" a utilizar es la de \tilde G(s), o sea \tilde G(0), si \lim_{s\to 0} \tilde G(s) existe, aunque no "exista" físicamente la FdT G(s)/s.

tildeG(s)=simplify(G(s)/s)
fictitious_gain=tildeG(0)
fictitious_gain*pendiente_u %sí que nos da el valor final.

% Este "truco" es un mero "artificio" para hablar de ganancia, pero no es realmente necesario si aplicamos "a pies juntillas" el teorema del valor final.
%
%
% Generalización: para que un sistema ante una entrada t^m, con transformada de Laplace \frac{m!}{s^{m+1}}, tenga una salida con valor final constante, deberá tener al menos m "derivadores puros" en su FdT, o sea que dicha FdT debe ser s^m\cdot \tilde G(s). En efecto, TVF dirá \lim_{s\to 0}s\cdot \left(s^m\tilde G(s)\cdot \frac{m!}{s^{m+1}}\right)=m!\cdot \tilde G(0).
% En la práctica, sólo suele ser de interés m=0 (escalón), o m=1 (rampa).
%
% Si mi sistema tiene "m" derivadores en su FdT:
% los polinomios en la entrada de grado MENOR a "m" dan valor final CERO
% los polinomios de grado IGUAL a "m" dan valor final CONSTANTE FINITO
% los polinomios de grado MAYOR a "m" en la entrada dan valor final INFINITO
%
%
%
%