Skip to content

Instantly share code, notes, and snippets.

@emms-garcia
Created November 13, 2012 16:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emms-garcia/4066983 to your computer and use it in GitHub Desktop.
Save emms-garcia/4066983 to your computer and use it in GitHub Desktop.
Reporte de Automatización
\documentclass[12pt]{article}
\usepackage{pst-sigsys}
\usepackage[spanish]{babel}
\usepackage{amsmath, amsthm, amsfonts}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\title{Reporte Grupal sobre Propiedades Estructurales}
\author{Adán Silva \and Emmanuel García \and Maximiliano Hernandez}
\DeclareGraphicsExtensions{.pdf,.png,.jpg}
\pagestyle{empty}
\begin{document}
\maketitle
\section{Introducción}
\noindent El sistema que controlaremos consiste en un ventilador, que al recibir la temperatura ambiental por medio de un sensor analógico ajusta la velocidad del ventilador a mayor temperatura mayor velocidad a menor temperatura menor velocidad.\\\\
Materiales tentativos:
\begin{itemize}
\item Sensor analógico de temperatura LM35
\item Amplificador Operacional
\item Resistencias
\item Ventilador(VN4-012P)
\item Fuente de Poder de 12V
\item Cable para conexiones.
\item Entre otros.
\end{itemize}
\newpage
\section{Función de Transferencia}\label{ft}
\noindent Para construir la función de transferencia para nuestro sistema, necesitamos las funciones de transferencia de cada uno de los componentes que actuarán en el sistema, dichas funciones de transferencia de los componentes son:\\\\
Función de transferencia sensor de temperatura:\\
\[
\displaystyle\frac{V(s)}{T(s)}= \displaystyle\frac{0.01}{s}
\]\\
Funcion de transferencia amplificador operacional\\
\[
\displaystyle\frac{V_{out}} {V_{in}}=\displaystyle\frac{R_{2}+R_{1}}{R_{2}}
\]\\
Comparador 1\\
\[
A=\displaystyle\frac{V_{0}} {\left(V_{ref}-V{i}\right)}
\]\\
Comparador2\\
\[
A=\displaystyle\frac{V_{0}}{\left ( V_{i}-V{ref} \right )}
\]\\
Relay de estado sólido\\
\[
\displaystyle\frac{V_{0}\left ( s \right )}{V_{i}\left ( s \right )}=\frac{R_{2}CS+1}{R_{1}CS}
\]\\
Ventilador con motor DC\\
\[
\displaystyle\frac{1}{s}
\]\\
Al manejar cada una de las funciones de transferencia a manera de un diagrama de bloques y aplicando sus propiedades obtenemos la función de transferencia final:\\
\[
\displaystyle\frac{0.0026s + 0.12}{s^{2} + 0.0026s + 0.1}
\]
\newpage
\section{Diagramas de Bloques}\label{results}
\noindent A continuación se mostrarán los diagramas de bloques de la función de transferencia, desde su versión simple, expandiéndose utilizando las propiedades de los diagramas de bloques.\\
Diagrama 1\\*
\begin{pspicture}[showgrid=false](0.5,-1.2)(9,1.55)
\rput(0.5,0){\rnode{s}{$R(s)$}}
\dotnode[dotstyle=square*,dotscale=0.001](1.7,0){dot}
\psblock(3, 0){H1}{$\frac{0.0026s + 0.12}{s^{2} + 0.0026s + 0.1}$}
\rput(5.5,0){\rnode{e}{$C(s)$}}
\psset{style=Arrow}
\ncline[nodesepA=.15]{-}{s}{dot}
\ncangle[angleA=180,angleB=180]{dot}{H1}
\ncangle[angleA=-180,angleB=180]{dot}{H2}
\ncline[nodesepB=.15]{H1}{e}
\end{pspicture}
Diagrama 2\\*
\begin{pspicture}[showgrid=false](0.5,-2.5)(9, 1.55)
\rput(1.5,0){
\rnode{s}{$R(s)$}}
\pscircleop(2.7, -1){ominus}
\dotnode[dotstyle=square*,dotscale=0.001](7,0){dot1}
\dotnode[dotstyle=square*,dotscale=0.001](2.7,0){dot2}
\psblock(5, 0){H1}{$0.0026s + 0.12$}
\psblock(5, -2){H2}{$s^{2} + 0.0026s + 0.1$}
\rput(8,0){\rnode{e}{$C(s)$}
}
\psset{style=Arrow}
\ncangle[angleA = 0, angleB= 180]{s}{H1}
\ncline[nodesepB=.15]{H1}{e}
\ncangle[angleA=-90,angleB=0]{dot1}{H2}
\ncangle[angleA=-180,angleB=-90]{H2}{ominus}
\ncangle[angleA=90,angleB=-90]{ominus}{dot2}
\end{pspicture}
Diagrama 3\\*
\begin{pspicture}[showgrid=false](0.5,-5)(9,1.55)
\rput(0.5,0){
\rnode{s}{$R(s)$}}
\cput[doubleline=false, scale = .5](2.7,-1){$-$}
\dotnode[dotstyle=square*,dotscale=0.001](1.7,0){dot}
\pscircleop(7, 0){oplus1}
\pscircleop(3.5, -3){oplus2}
\dotnode[dotstyle=square*,dotscale=0.001](2.7,0){dot2}
\dotnode[dotstyle=square*,dotscale=0.001](3.5,0){dot3}
\dotnode[dotstyle=square*,dotscale=0.001](7.5,0){dot4}
\dotnode[dotstyle=square*,dotscale=0.001](2.7,-1.3){dot5}
\dotnode[dotstyle=square*,dotscale=0.001](2.7,-0.7){dot6}
\psblock(5, 0){H1}{$0.0026s$}
\psblock(5, -1){H2}{$0.12$}
\psblock(5, -2){H3}{$s^{2}$}
\psblock(5, -3){H4}{$0.0026s$}
\psblock(5, -4){H5}{$0.1$}
\rput(9,0){\rnode{e}{$C(s)$}
}
\psset{style=Arrow}
\ncangle[angleA=180,angleB=180]{dot}{H1}
\ncangle[angleB= 180]{s}{H1}
\ncline[nodesepB=.15]{oplus1}{e}
\ncangle[angleA = -90, angleB = -180]{dot3}{H2}
\ncangle[angleA = 0, angleB = -180]{H1}{oplus1}
\ncangle[angleA = 0, angleB = -90]{H2}{oplus1}
\ncangle[angleA = -90, angleB = 0]{dot4}{H3}
\ncangle[angleA = -90, angleB = 0]{dot4}{H4}
\ncangle[angleA = -90, angleB = 0]{dot4}{H5}
\ncangle[angleA = 180, angleB = 90]{H3}{oplus2}
\ncangle[angleA = 180, angleB = 0]{H4}{oplus2}
\ncangle[angleA = 180, angleB = -90]{H5}{oplus2}
\ncangle[angleA = 180, angleB = -90]{oplus2}{dot5}
\ncangle[angleA = 90, angleB = -90]{dot6}{dot2}
\end{pspicture}
\section{Representación en el Espacio de Estados}\label{conclusions}
\noindent La representación en el espacio de estados de un sistema LTI esta dada por:
\[
H(s) = \displaystyle\frac{B(s)}{A(s)} = \displaystyle\frac{b_{1}s^{n-1} + ... + b_{n-1}s + b_{n}}{a_{1}s^{m-1} + ... + a_{m-1}s + a_{m}} = C(sI - A)^{-1}B + D
\]
\[
\begin{split}
\dot{x} = Ax + Bu \\
y = Cx + Du
\end{split}
\]
Donde:
\begin{itemize}
\item x es el vector de estado
\item y es el vector de salida
\item u es el vector de entrada(o de control)
\item A es la matriz de estados
\item B es la matriz de entrada
\item C es la matriz de salda
\item D es la matriz de transmisión directa\\\end{itemize}
Podemos obtener las matrices de espacio de estados del sistema, utilizando la función tf2ss, descrita a continuación:\\\\
\begin{tabular}{ p{13cm}}
\hline
Función tf2ss \\ \hline
Sintaxis: [A,B,C,D] = tf2ss(b,a)\\
Descripción:\\*
Convierte los parámetros de la representación de una función de transferencia de un sistema a su representación en el espacio de estados equivalente. Retorna las matrices A, B, C, D de la representación del espacio de estados para el sistema.\\ \hline
\end{tabular}\newpage
\noindent Utilizando el sistema creado con nuestra función de transferencia, Octave proporciona la siguiente salida:\\\\
\includegraphics{1.eps}\\\\
Lo que significa que las matrices de espacio de estado del sistema, son las siguientes:
\[
\begin{split}
A =
\begin{bmatrix}
-3.3307e^{-16} & 0.1\\
-1.0 & -0.0026
\end{bmatrix}
B =
\begin{bmatrix}
-0.1200\\
0.0026
\end{bmatrix}
\\\\
C =
\begin{bmatrix}
0.0000 & 1.0000\\
\end{bmatrix}
D =
\begin{bmatrix}
0
\end{bmatrix}
\end{split}
\]
Y entonces la representación en el espacio de estados es así:
\[
\begin{split}
\dot{x} =
\begin{bmatrix}
-3.3307e^{-16} & 0.1\\
-1.0 & -0.0026
\end{bmatrix}x +
\begin{bmatrix}
-0.12\\
0.0026
\end{bmatrix}u
\\\\
y =
\begin{bmatrix}
0.0 & 1.0\\
\end{bmatrix}x +
\begin{bmatrix}
0
\end{bmatrix}u
\end{split}
\]
\section{Controlabilidad}\label{contr}
\noindent La controlabilidad es una propiedad de los sistemas de control que se refiere a la capacidad de cambiar toda la configuración de espacios de un sistema utilizando ciertas manipulaciones admisibles. En pocas palabras, se puede alcanzar un estado desde cualquier otro.\\\\
Para analizar la controlabilidad de nuestro sistema, se hará lo siguiente:
\begin{itemize}
\item Obtener la Matriz de controlabilidad.
\item Calcular el gramiano de controlabilidad.
\item Obtener la forma canónica controlable.
\end{itemize}
\subsection{Matriz de Controlabilidad}
La matriz de controlabilidad está dada por:\\
\[
Co =
\begin{bmatrix}
B & AB & A^{2}B & \ldots & A^{n-1}B \\
\end{bmatrix}
\]\\
Octave cuenta con una función ctrb que calcula la matriz de controlabilidad de un sistema tomando como parámetros el sistema o las matrices A y B del espacio de estados del sistema.\\\\
\begin{tabular}{ p{13cm}}
\hline
Función ctrb \\ \hline
Sintaxis: Co = ctrb(sys) ó Co = ctrb(A, B)\\
Descripción:\\*
Calcula la matriz de controlabilidad para sistemas de espacio de estados.
\\ \hline
\end{tabular}\\\\
Como se ve, podemos calcularlo de dos formas, utilizando el sistema creado con la función de transferencia, o utilizando las matrices A y B del espacio de estados del sistema.\\\\
\includegraphics[width=\textwidth]{2.eps}\\
Ambas producen el mismo resultado, la matriz de controlabilidad:\\
\[
Co =
\begin{bmatrix}
-0.12 & 0.0026 \\
0.0026 & 0.11999 \\
\end{bmatrix}
\]\\
Es posible calcular el número de estados no controlables utilizando la matriz de controlabilidad. Basta con realizar una resta, el largo de la matriz A menos el rango de la matriz de controlabilidad.\\\\
\includegraphics[width=10cm, height=1.5cm]{3.eps}\\\\
El resultado de esta resta es el número de estados no controlables, en este caso cero, por lo cual nuestro sistema es controlable.
\subsection{Gramiano de controlabilidad}
\noindent En teoría de control, el gramiano de controlabilidad es un gramiano utilizado para determinar si un sistema lineal invariante en el tiempo(LTI) es controlable o no.\\\\
Debido a que el gramiano de controlabilidad tiene mejores propiedades numéricas que la matriz de controlabilidad formada por la función ctrb, se calculará también el gramiano de controlabilidad para de igual manera analizar la controlabilidad del sistema.\\\\
El gramiano de controlabilidad está definido por la siguiente ecuación:\\
\[
W_{c} = \int_{0}^{\infty}e^{A\tau} BB^{T}e^{A^{T}\tau}d\tau
\]\\
Si la matriz resultante Wc es invertible, y es de rango completo, entonces el sistema para el cual pertenece el par A, B es controlable.\\\\
Podemos utilizar el gramiano de controlabilidad para saber si nuestro sistema es controlable. Para ello hacemos uso de octave y la función gram de Octave.
\begin{tabular}{ p{13cm}}
\hline
Función gram (para controlabilidad) \\ \hline
Sintaxis: Wc = gram(sys,'c')\\
Descripción:\\*
Wc = gram(sys,'c') calcula el gramiano de controlabilidad del modelo de espacio de estados sys.
\\ \hline
\end{tabular}\\\\
Siendo sys el sistema creado con la función de transferencia, calculamos el gramiano:\\\\
\includegraphics[width=8cm, height=3cm]{4.eps}\\
El resultado es la siguiente matriz:\\
\[
W_{c}(t) =
\begin{bmatrix}
2.769236 & -0.072 \\
-0.072 & 27.693608 \\
\end{bmatrix}
\]\\
Para comprobar si el sistema es controlable o no, es necesario verificar que la matriz resultante sea invertible, es decir, que exista otra matriz a la cual multiplicándose, el resultado sea una matriz identidad (con 1’s en la diagonal principal). Para hacer esto, se utiliza la función inv de Octave.\\\\
\begin{tabular}{ p{13cm}}
\hline
Función inv \\ \hline
Sintaxis: B = inv(A)\\
Descripción:\\*
Retorna la matriz inversa de una matriz cuadrada 'A'.
\\ \hline
\end{tabular}\\\\\\*
Haciendo uso de inv, se obtiene la matriz inversa de la obtenida con el gramiano de controlabilidad. Después se multiplican ambas, para comprobar que el resultado sea una matriz identidad. El resultado es en efecto, una matriz identidad, por lo que se cumple ese punto.\\\\
\includegraphics[width=\textwidth]{5.eps}\\
Lo restante es verificar que sea de rango completo, lo cual sencillamente podemos hacerlo utilizando la funciones rank y length de Octave.\\\\
\begin{tabular}{ p{6.5cm} | p{6.5cm}}
\hline
Función rank & Función length\\ \hline
Sintaxis: k = rank(A) & Sintaxis: n = length(array)\\*
Descripción: & Descripción:\\*
Retorna un estimado del número de columnas o filas linealmente independientes de una matriz completa. & Encuentra el número de elementos en la dimensión más larga de un arreglo.
\\ \hline
\end{tabular}\\\\
Se obtiene el rango y el tamaño de la matriz utilizando rank(wc) y length(wc) y se comparan para saber si la matriz es de rango completo.\\\\
\includegraphics[width=9cm, height=2cm]{6.eps}\\
Como el resultado es 1, es decir True, se comprueba que wc es de rango completo, y por lo tanto el sistema es controlable.
\newpage
\subsection{Forma Canónica Controlable}
\noindent La forma canónica controlable es como sigue:\\
\[
\begin{split}
\begin{bmatrix}
\dot{x}_{1}\\
\dot{x}_{2}\\
\vdots\\
\dot{x}_{n-1}\\
\dot{x}_{n}\\
\end{bmatrix}
=
\begin{bmatrix}
0 & 1 & 0 & \ldots & 0\\
0 & 0 & 1 & \ldots & 0\\
\ldots & \ldots & \ldots & \ldots & \ldots & \\
0 & 0 & 0 & 0 & 0 \\
-a_{n} & -a_{n-1} & -a_{n-2} & \ldots & -a_{1}
\end{bmatrix}
\begin{bmatrix}
x_{1}\\
x_{2}\\
\vdots\\
x_{n-1}\\
x_{n}\\
\end{bmatrix}
+
\begin{bmatrix}
0\\
0\\
0\\
0\\
1
\end{bmatrix}
u
\\
y =
\begin{bmatrix}
b_{n} - a_{n}b_{0} & b_{n-1} - a_{n-1}b_{0} & \ldots &b_{1} - a_{1}b_{0}
\end{bmatrix}
\begin{bmatrix}
x_{1}\\
x_{2}\\
\vdots\\
x_{n-1}\\
x_{n}\\
\end{bmatrix}
+ b_{0}u
\end{split}
\]\\
De igual manera que en la forma canónica controlable, obtenemos las a y b a partir de la función de transferencia, tomando en cuenta:\\
\[
\frac{Y(s)}{U(s)} = \frac{b_{0}s^{n} + b_{1}s^{n-1} + \ldots + b_{n-1}s + b_{n}}{s^{n} + a_{1}s^{n-1} + \ldots a_{n-1}s + a_{n}}
\]\\
Entonces, las a y b son:\\
\[
\begin{split}
a_{1} = 0.0026, a_{2} = 0.1
\\
b_{0} = 0, b_{1} = 0.0026, b_{2} = 0.12
\end{split}
\]
Lo cual nos produce la forma canónica controlable:
\[
\begin{split}
\begin{bmatrix}
\dot{x}_{1}(t)\\
\dot{x}_{2}(t)
\end{bmatrix}
=
\begin{bmatrix}
0 & 1\\
-0.1 & -0.0026
\end{bmatrix}
\begin{bmatrix}
x_{1}(t)\\
x_{2}(t)
\end{bmatrix}
+
\begin{bmatrix}
0\\
1
\end{bmatrix}
u(t)
\\
y(t) =
\begin{bmatrix}
0.12 & 0.0026
\end{bmatrix}
\begin{bmatrix}
x_{1}(t)\\
x_{2}(t)
\end{bmatrix}
\end{split}
\]
\newpage
\section{Observabilidad}
\noindent Para analizar la observabilidad de nuestro sistema, se hará lo siguiente:
\begin{itemize}
\item Obtener la Matriz de Observabilidad
\item Calcular el gramiano de observabilidad.
\item Obtener la forma canónica observable.
\end{itemize}
\subsection{Matriz de Observabilidad}
\noindent La matriz de observabilidad está dada por:\\
\[
Ob =
\begin{bmatrix}
C \\
CA \\
CA^{2} \\
\vdots \\
CA^{n-1}
\end{bmatrix}
\]\\
Igual que con la controlabilidad, Octave también proporciona una función para calcular la matriz de observabilidad de un sistema.\\\\
\begin{tabular}{ p{13cm}}
\hline
Función obsv \\ \hline
Sintaxis: ob = obsv(A, C)\\
Descripción:\\*
Calcula la matriz de observabilidad para sistemas de espacio de estados.
\\ \hline
\end{tabular}\\\\\\*
Calculamos la matriz de observabilidad usando la función obsv.\\\\
\includegraphics[width=9cm, height=3cm]{7.eps}
\newpage
\noindent Con esto tenemos nuestra matriz de observabilidad:\\
\[
Ob =
\begin{bmatrix}
0 & 1.0\\
-1.0 & -0.0026
\end{bmatrix}
\]\\
Como en la controlabilidad, podemos calcular directamente con la forma normal observable si el sistema es totalmente observable. Para hacerlo simplemente calculamos el largo de la matriz A y se le resta el rango de la matriz de observabilidad.\\\\
\includegraphics[width=9cm, height = 2cm]{8.eps}\\
El resultado es el número de estados no observables, en este caso siendo 0. Por lo cual es el sistema es completamente observable.\\
\subsection{Gramiano de Observabilidad}
\noindent El gramiano de observabilidad es un gramiano utilizado en teoría de control para determinar si un sistema lineal invariante en el tiempo (LTI) es observable. \\\\
Al igual que en el caso de la controlabilidad, lo utilizaremos debido a que proporciona mejores propiedades numéricas para estudiar, en este caso, la observabilidad del sistema.\\\\
El gramiano de observabilidad esta dado por:\\
\[
W_{o} = \int_{0}^{\infty} e^{A^{T}\tau}C^{T}Ce^{A\tau}d\tau
\]\\
Sí la matriz resultante Wc es invertible, entonces el sistema para el cual pertenece el par A, C es controlable.\\\\
Podemos utilizar el gramiano de observabilidad para saber si nuestro sistema es observable. Igualmente, se utiliza la función gram de Octave, pero cambiando el parámetro mode a “o”.\\
\begin{tabular}{ p{13cm}}
\hline
Función gram (observabilidad) \\ \hline
Sintaxis: Wo = gram(sys,'o')\\
Descripción:\\*
Wo = gram(sys,'o') calcula el gramiano de observabilidad del modelo de espacio de estados sys.
\\ \hline
\end{tabular}\\\\\\*
Utilizando el sistema como parámetro:\\\\
\includegraphics[width=7cm, height=3cm]{9.eps}\\
Se da como resultado la siguiente matriz:\\
\[
W_{o} =
\begin{bmatrix}
1923.1 & 6.4082e^{-13} \\
6.4082e^{-13} & 192.31
\end{bmatrix}
\]\\
Ahora para comprobar si es observable, debemos verificar que cumpla con el requisito de ser invertible. Para ello calculamos su matriz inversa y multiplicamos ambas.\\\\
\includegraphics[width=10cm, height=3.2cm]{10.eps}\\
Debido a que el resultado es una matriz identidad, se comprueba que es invertible, y por lo tanto el sistema es observable.\\
\subsection{Forma Canónica Observable}
\noindent La forma canónica observable es aquella que cumple con lo siguiente:\\
\[
\begin{split}
\begin{bmatrix}
\dot{x}_{1}\\
\dot{x}_{2}\\
\vdots\\
\dot{x}_{n}\\
\end{bmatrix}
=
\begin{bmatrix}
0 & 0 & \ldots & 0 & -a_{n}\\
1 & 0 & \ldots & 0 & -a_{n-1}\\
\vdots & & \vdots & \vdots & \vdots & \\
0 & 0 & \ldots & 1 & -a_{1} \\
\end{bmatrix}
\begin{bmatrix}
x_{1}\\
x_{2}\\
\vdots\\
x_{n}\\
\end{bmatrix}
+
\begin{bmatrix}
b_{n} - a_{n}b_{0}\\
b_{n-1} - a_{n-1}b_{0}\\
\vdots\\
b_{1} - a_{1}\\
\end{bmatrix}
u
\\
y =
\begin{bmatrix}
0 & 0 & \ldots & 0 & 1
\end{bmatrix}
\begin{bmatrix}
x_{1}\\
x_{2}\\
\vdots\\
x_{n}\\
\end{bmatrix}
+ b_{0}u
\end{split}
\]\\
De igual manera que en la forma canónica controlable, obtenemos las a y b a partir de la función de transferencia, tomando en cuenta:\\
\[
\frac{Y(s)}{U(s)} = \frac{b_{0}s^{n} + b_{1}s^{n-1} + \ldots + b_{n-1}s + b_{n}}{s^{n} + a_{1}s^{n-1} + \ldots a_{n-1}s + a_{n}}
\]\\
Entonces, las a y b son:\\
\[
\begin{split}
a_{1} = 0.0026, a_{2} = 0.1
\\
b_{0} = 0, b_{1} = 0.0026, b_{2} = 0.12
\end{split}
\]\\
Lo cual nos produce la forma canónica observable\\
\[
\begin{split}
\newline
\begin{bmatrix}
\dot{x}_{1}(t)\\
\dot{x}_{2}(t)
\end{bmatrix}
=
\begin{bmatrix}
0 & -0.1\\
1 & -0.0026
\end{bmatrix}
\begin{bmatrix}
x_{1}(t)\\
x_{2}(t)
\end{bmatrix}
+
\begin{bmatrix}
0.12\\
0.0026
\end{bmatrix}
u(t)
\\
y(t) = \begin{bmatrix}
0 & 1
\end{bmatrix}
\begin{bmatrix}
x_{1}(t)\\
x_{2}(t)
\end{bmatrix}
\end{split}
\]\\
Nota: Puede notarse que la matriz A de la forma canónica observable es la transpuesta de la matriz A de la forma canónica controlable.
\section{Diagonalización}
\subsection{Diagonalización con eigenvectores}
\noindent Para que el sistema pueda ser diagonalizado se necesita que los eigenvectores de la matriz "A" sean linealmente independientes, esto se puede comprobar utilizando las raíces del sistema, si las raíces son diferentes esto puede lograrse, en cambio si son iguales podría o no ser posible la diagonalización.\\
Para diagonalizar se utiliza la matriz de eigenvectores de la matriz transición de estados E:\\
\[
Ae_{i} = \lambda_{i}e_{o}
\]\\
Donde lambda representa una constante llamada eigenvalor, A es la matriz de estados y e subíndice "i" es un eigenvector de esa matriz.\\\\
Conociendo los eigenvectores se puede formar la matriz ya mencionada:\\
\[
E =
\begin{bmatrix}
e_{1}, e_{2},\ldots,e_{N}
\end{bmatrix}
\]\\
Siendo esta última matriz linealmente independiente, puede utilizarse para una transformación lineal uno a uno. Ahora tenemos que la transformada de la matriz de transiciones esta dada por la siguiente fórmula:\\
\[
\tilde{A} = E^{-1}AE
\]\\
Este es el código en octave que utilizamos para implementar lo explicado:\\
\begin{verbatim}
function Null = diagonalizacion()
num = [0.0026, 0.12];
den = [1, 0.0026, 0.1];
sys = tf(num, den);
[A, B, C, D] = tf2ss(sys);
printf("Raices diferentes\n\n")
roots(den)
[E, L] = eig(A);
Ei = inv(E);
printf("Matriz A diagonalizada\n\n")
Ad = Ei*A*E
endfunction
\end{verbatim}
El resultado obtenido se muestra en la captura del programa corriendo, como se puede observar las raíces son diferentes y los valores que no son de la diagonal principal visiblemente son muy cercanos a cero:\\\\
\includegraphics[width=13cm, height=6cm]{11.eps}\\
\subsection{Forma Canónica Diagonal}
\noindent Para obtener la forma canónica diagonal es necesario que el polinomio de nuestro denominador se pueda factorizar en diferentes raíces. Podemos comprobar lo anterior utilizando la función roots de Octave, dando como parámetro el denominador de la función de transferencia.\\\\
\begin{tabular}{ p{13cm}}
\hline
Función roots \\ \hline
Sintaxis: r = roots(c)\\
Descripción:\\*
Retorna un vector en columna cuyos elementos son las raíces del polinomio c.\\ \hline
\end{tabular}\\\\
Calculando las raíces, obtenemos que son diferentes, como se pueden ver:\\\\
\includegraphics[width=7cm, height=3cm]{12.eps}\\
Entonces podemos calcular la forma canónica diagonal. Sí tenemos que:\\
\[
\displaystyle\frac{Y\left ( s \right )}{U\left ( s \right )}=\displaystyle\frac{b_{0}s^{n}+b_{1}s^{n-1}+...+b_{n-1}}{\left ( s+p_{1} \right )\left ( s+p_{2} \right )...\left ( s+p_{n} \right )}
\]\\
Expandiéndose con fracciones parciales:\\
\[
\displaystyle\frac{Y\left ( s \right )}{U\left ( s \right )}=b_{0}+\frac{c_{1}}{s+p_{1}}+\frac{c_{2}}{s+p_{2}}+...+\displaystyle\frac{c_{n}}{s+p_{n}}
\]\\
Entonces la forma canónica diagonal esta dada por:\\
\[
\begin{split}
\begin{bmatrix}
\dot{x_{1}} \\
\dot{x_{2}} \\
... \\
\dot{x_{n}}
\end{bmatrix}
=
\begin{bmatrix}
-p_{1} & & & 0\\
& -p_{2} & & \\
& & ... & \\
0& & & -p_{n}
\end{bmatrix}
\begin{bmatrix}
x_{1}\\
x_{2}\\
...\\
x_{n}\\
\end{bmatrix}
+
\begin{bmatrix}
1\\
1\\
...\\
1\\
\end{bmatrix}
u
\\
y =
\begin{bmatrix}
c_{1} & c_{2} & ... & c_{n}
\end{bmatrix}
\begin{bmatrix}
x_{1}\\
x_{2}\\
...\\
x_{n}\\
\end{bmatrix}
+
b_{0}u
\end{split}
\]
Para poder obtener las c, debido a que Octave no cuenta con una forma directa de obtener la forma canónica diagonal como Matlab, haremos uso de la función residue para obtener las fracciones parciales(y de nuevo también las raíces) para después simplemente sustituir en la forma canónica.\\\\
\begin{tabular}{ p{13cm}}
\hline
Función residue \\ \hline
Sintaxis: [r, p, k] = residue(b, a)\\
Descripción:\\*
Encuentra los residuos, polos, y términos directos de una expansión de fracciones parciales de dos polinomios a y b.
\\ \hline
\end{tabular}\\
Utilizando residue con la función de transferencia obtenemos lo siguiente:\\\\
\includegraphics[width=13cm, height=9cm]{13.eps}\\
De estos datos obtenemos las p y las c, siendo p = p y c = r. Entonces:\\
\[
\begin{split}
p_{1} = -0.00130 + 0.31623i, p_{2} = -0.00130 - 0.31623i\\
c_{1} = 0.00130 - 0.1873i, c_{2} = 0.00130 + 0.1873i
\end{split}
\]\\
Sustituyendo en la forma canónica diagonal:\\
\[
\begin{split}
\begin{bmatrix}
\dot{x_{1}(t)} \\
\dot{x_{2}(t)}
\end{bmatrix}
=
\begin{bmatrix}
-0.00130 + 0.31623i & 0\\
0 & -0.00130 - 0.31623i \\
\end{bmatrix}
\begin{bmatrix}
x_{1}(t)\\
x_{2}(tx)\\
\end{bmatrix}
+
\begin{bmatrix}
1\\
1\\
\end{bmatrix}
u
\\
y =
\begin{bmatrix}
0.00130 - 0.18973i & 0.00130 + 0.18973i
\end{bmatrix}
\begin{bmatrix}
x_{1}(t)\\
x_{2}(t)\\
\end{bmatrix}
\end{split}
\]
\\
\newpage
\begin{thebibliography}{99}
\bibitem{Cd94} Diagonalizing State Space Model
\bibitem{Cd94} Example State Space Diagonalization
\bibitem{Cd94} The Jordan Canonical Form
\bibitem{Cd94} Alternate State-Space Representations
\bibitem{Cd94} Matlab Documentation
\end{thebibliography}
\end{document}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment