%
% AnalisiOctave.tex
%

\documentclass{beamer}

\usepackage{beamerthemeshadow}
\usepackage{listings}
\usepackage{graphics}
\usepackage{times}
\usepackage{algorithm2e}

\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade}
% \usepackage{amsmath,amssymb} \usepackage[latin1]{inputenc}
% \usepackage{colortbl}
\usepackage[english]{babel}

\newcommand{\erlang}{
\lstset{language=Prolog, basicstyle=\ttfamily\footnotesize,frame=trBL,
  frameround=fttt}}

\newcommand{\erlangsmall}{
\lstset{language=Prolog, basicstyle=\ttfamily\scriptsize,frame=trBL,
  frameround=fttt}}

\newcommand{\clang}{
\lstset{language=Prolog, basicstyle=\ttfamily\footnotesize,frame=trBL,
  frameround=fttt}}

\newcommand{\clangsmall}{
\lstset{language=Prolog, basicstyle=\ttfamily\scriptsize,frame=trBL,
  frameround=fttt}}

\newcommand{\clangtiny}{
\lstset{language=Prolog, basicstyle=\ttfamily\tiny,frame=trBL,
  frameround=fttt}}

\erlang

\newcommand\blue{\color[rgb]{0,0,1}}
\newcommand\green{\color[rgb]{0,0.5,0}}
\newcommand\red{\color[rgb]{1,0,0}}
\newcommand\black{\color[rgb]{0,0,0}}

\newcommand\tape[9]{
\framebox{#1}
\framebox{#2}
\framebox{#3}
\framebox{#4}
\framebox{#5}
\framebox{#6}
\framebox{#7}
\framebox{#8}
\framebox{#9}}

\newcommand\two[2]{
\framebox{#1}
\framebox{#2}}

\newcommand\six[6]{
\framebox{#1}
\framebox{#2}
\framebox{#3}
\framebox{#4}
\framebox{#5}
\framebox{#6}}

\newcommand\three[3]{
\framebox{#1}
\framebox{#2}
\framebox{#3}}

\title[Analisi di un sistema]{Analisi di un sistema dinamico\\con Matlab/Octave}
%%

\author[Corrado Santoro]
       {Corrado Santoro}

\date{ }

\institute[University of Catania]
  {
    \begin{center}
      \textbf{\red{}ARSLAB - Autonomous and Robotic Systems Laboratory}\\
      Dipartimento di Matematica e Informatica - Universit\`{a} di Catania, Italy\\
      \texttt{santoro@dmi.unict.it}\\
      \includegraphics[width=60pt]{robotEscher_Eura_blur.eps}\\%%~~~~\includegraphics[width=80pt]{logo_dmi.png}
      Programmazione Sistemi Robotici\\
    \end{center}
  }



\begin{document}

\frame{\titlepage}




%%
\begin{frame}[fragile]
%%
  \frametitle{Massa su piano con attrito}
%%
\begin{center}
\includegraphics[scale=0.2]{massa_attrito_2.eps}
\end{center}
%%
%%
\[
\left\{
\begin{array}{rcl}
\red
\begin{bmatrix}
\dot{v} \\ \dot{p}
\end{bmatrix}
& = &
\begin{bmatrix}
-\frac{b}{M} & 0\\
1 & 0
\end{bmatrix}
{\red%%
\begin{bmatrix}
v \\ p
\end{bmatrix}}
+
\begin{bmatrix}
\frac{1}{M} \\ 0
\end{bmatrix}
{\blue%%
\begin{bmatrix}
f
\end{bmatrix}}
\\
{\green%%
\begin{bmatrix}
y
\end{bmatrix}}
& = &
\begin{bmatrix}
1 & 0
\end{bmatrix}
{\red%%
\begin{bmatrix}
v \\ p
\end{bmatrix}}
\end{array}
\right.
\]
%%

%%
\begin{eqnarray*}
A = \begin{bmatrix}
-\frac{b}{M} & 0\\
1 & 0
\end{bmatrix}
&
B = \begin{bmatrix}
\frac{1}{M} \\ 0
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}
\end{eqnarray*}

Qui l'uscita del sistema \`{e} la \textbf{velocit\`{a}}

\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Massa su piano con attrito}
%%
\begin{center}
\includegraphics[scale=0.2]{massa_attrito_2.eps}
\end{center}
%%
%%

%%
\begin{eqnarray*}
A = \begin{bmatrix}
-\frac{b}{M} & 0\\
1 & 0
\end{bmatrix}
&
B = \begin{bmatrix}
\frac{1}{M} \\ 0
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}\\
{\red{}M = 1~kg} & {\red{}b = 0.5~Ns/m}\\
A = \begin{bmatrix}
-\frac{1}{2} & 0\\
1 & 0
\end{bmatrix}
&
B = \begin{bmatrix}
1 \\ 0
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}
\end{eqnarray*}
%%
\end{frame}




%%
\begin{frame}[fragile=singleslide]
%%
  \frametitle{Massa su piano con attrito}
%%
\begin{eqnarray*}
A = \begin{bmatrix}
-\frac{1}{2} & 0\\
1 & 0
\end{bmatrix}
&
B = \begin{bmatrix}
1 \\ 0
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}
\end{eqnarray*}
%%

\begin{block}{Definizione delle matrici in Matlab/Octave}
\footnotesize%%
\begin{verbatim}
octave:4> A=[-0.5 0; 1 0 ];
octave:5> B=[1 ; 0];
octave:6> C=[1 0];
octave:7> D=[0];
\end{verbatim}
\end{block}

\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Stabilit\`{a}}
%%

\begin{block}{Definizione delle matrici in Matlab/Octave}
\footnotesize%%
\begin{verbatim}
octave:4> A=[-0.5 0; 1 0 ];
octave:5> B=[1 ; 0];
octave:6> C=[1 0];
octave:7> D=[0];
\end{verbatim}
\end{block}

\begin{block}{Stabilit\`{a}}
\footnotesize%%
\begin{verbatim}
octave:8> eig(A)
ans =

   0.00000
  -0.50000

\end{verbatim}
Il sistema \`{e} \textbf{asintoticamente stabile}
\end{block}

\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Risposta all'impulso e al gradino}
%%

\begin{block}{Definizione del sistema in Matlab/Octave}
\footnotesize%%
\begin{verbatim}
octave:4> A=[-0.5 0; 1 0 ];
octave:5> B=[1 ; 0];
octave:6> C=[1 0];
octave:7> D=[0];
octave:8> sistema = ss(A, B, C, D);
\end{verbatim}
\end{block}

\begin{block}{Risposta al gradino}
\footnotesize%%
\begin{verbatim}
octave:9> step(sistema)
\end{verbatim}
\end{block}

\begin{block}{Risposta all'impulso}
\footnotesize%%
\begin{verbatim}
octave:10> impulse(sistema)
\end{verbatim}
\end{block}

\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Massa-molla}
%%
\begin{center}
\includegraphics[scale=0.2]{massa_molla_forzata.eps}
\end{center}
%%
%%
\[
\left\{
\begin{array}{rcl}
\red
\begin{bmatrix}
\dot{x_1} \\ \dot{x_2}
\end{bmatrix}
& = &
\begin{bmatrix}
0 & 1 \\
-\frac{k}{M} & -\frac{b}{M}
\end{bmatrix}
{\red%%
\begin{bmatrix}
x_1 \\ x_2
\end{bmatrix}}
+
\begin{bmatrix}
0 \\ \frac{1}{M}
\end{bmatrix}
{\blue%%
\begin{bmatrix}
F
\end{bmatrix}}
\\
{\green%%
\begin{bmatrix}
y
\end{bmatrix}}
& = &
\begin{bmatrix}
1 & 0
\end{bmatrix}
{\red%%
\begin{bmatrix}
x_1 \\ x_2
\end{bmatrix}}
\end{array}
\right.
\]
%%

%%
\begin{eqnarray*}
A = \begin{bmatrix}
0 & 1 \\
-\frac{k}{M} & -\frac{b}{M}
\end{bmatrix}
&
B = \begin{bmatrix}
0 \\ \frac{1}{M}
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}
\\
x_1 = pos & x_2 = vel
\end{eqnarray*}

\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Massa-molla}
%%

%%
\begin{eqnarray*}
A = \begin{bmatrix}
0 & 1 \\
-\frac{k}{M} & -\frac{b}{M}
\end{bmatrix}
&
B = \begin{bmatrix}
0 \\ \frac{1}{M}
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}
\end{eqnarray*}
%%
\begin{eqnarray*}
k = 2 N/m & M = 1 Kg & b = 0.5 Ns/m
\end{eqnarray*}
%%

\begin{eqnarray*}
A = \begin{bmatrix}
0 & 1 \\
-2 & -0.5
\end{bmatrix}
&
B = \begin{bmatrix}
0 \\ 1
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}
\end{eqnarray*}

\end{frame}
%%


%%
\begin{frame}[fragile]
%%
  \frametitle{Stabilit\'{a}}
%%

\begin{block}{Definizione delle matrici e stabilit\`{a}}
\footnotesize%%
\begin{verbatim}
octave:20> A=[0 1; -2 -0.5];
octave:21> B=[0 ; 1];
octave:22> C=[1 0];
octave:23> D=[0];
octave:24> eig(A)
ans =

  -0.2500 + 1.3919i
  -0.2500 - 1.3919i
\end{verbatim}
Il sistema \`{e} \textbf{asintoticamente stabile}
\end{block}

\begin{block}{Risposta}
Le risposte all'impulso e al gradino sono \textbf{oscillatorie smorzate}
\end{block}

\end{frame}


%%
\begin{frame}[fragile]
%%
  \frametitle{Ricerca dell'Equilibrio}
%%
Supponiamo un'ingresso costante $F = 4 N$ e cerchiamo i punti di equilibrio che
sono soluzione dell'equazione:
\begin{eqnarray*}
0 = A x + B F\\
A x = - B F
\end{eqnarray*}

\begin{block}{Definizione delle matrici e stabilit\`{a}}
\footnotesize%%
\begin{verbatim}
octave:20> linsolve(A, -B*4)
ans =

   2
   0

\end{verbatim}
Il punto di equlibrio $[2 ~~ 0]$ corrisponde a $pos = 2m$ e $vel = 0$
\end{block}

\end{frame}





%%
\begin{frame}[fragile]
%%
  \frametitle{Massa-molla fortemente smorzata}
%%

%%
\begin{eqnarray*}
A = \begin{bmatrix}
0 & 1 \\
-\frac{k}{M} & -\frac{b}{M}
\end{bmatrix}
&
B = \begin{bmatrix}
0 \\ \frac{1}{M}
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}
\end{eqnarray*}
%%
\begin{eqnarray*}
k = 2 N/m & M = 1 Kg & b = 4 Ns/m
\end{eqnarray*}
%%

\begin{eqnarray*}
A = \begin{bmatrix}
0 & 1 \\
-2 & -4
\end{bmatrix}
&
B = \begin{bmatrix}
0 \\ 1
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}
\end{eqnarray*}

\end{frame}
%%



%%
\begin{frame}[fragile]
%%
  \frametitle{Stabilit\'{a}}
%%

\begin{block}{Definizione delle matrici e stabilit\`{a}}
\footnotesize%%
\begin{verbatim}
octave:20> A=[0 1; -2 -4];
octave:21> B=[0 ; 1];
octave:22> C=[1 0];
octave:23> D=[0];
octave:24> eig(A)
ans =

  -0.58579
  -3.41421
\end{verbatim}
Il sistema \`{e} \textbf{asintoticamente stabile}
\end{block}

\begin{block}{Risposta}
Nelle risposte all'impulso e al gradino \`{e} \textbf{scomparsa} la
componente \textbf{oscillatoria}
\end{block}

\end{frame}



%%
\begin{frame}[fragile]
%%
  \frametitle{Autovalori e Comportamento di un sistema}
%%

\begin{block}{}
%%
In un sistema del \textbf{secondo ordine asintoticamente stabile}
\begin{itemize}
\item Se gli autovalori di $A$ sono \textbf{\red{}reali} (minori di $0$), il comportamento \`{e}
  \textbf{semplicemente esponenziale} (verso l'equilibrio)
\item Se gli autovalori di $A$ sono \textbf{\red{}complessi e coniugati} (a parte
  reale minore di $0$), il comportamento \`{e}
  \textbf{oscillatorio smorzato} (verso l'equilibrio)
\end{itemize}
%%
\end{block}

\end{frame}


%%
\begin{frame}[fragile]
%%
  \frametitle{Instabilit\`{a}}
%%
Consideriamo il sistema:
%%
\small%
\begin{eqnarray*}
A = \begin{bmatrix}
0 & 1 \\
-2 & 0.5
\end{bmatrix}
&
B = \begin{bmatrix}
0 \\ 1
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}
\end{eqnarray*}


\begin{block}{Definizione delle matrici e stabilit\`{a}}
\scriptsize%%
\begin{verbatim}
octave:20> A=[0 1; -2 0.5];
octave:21> B=[0 ; 1];
octave:22> C=[1 0];
octave:23> D=[0];
octave:24> eig(A)
ans =

   0.2500 + 1.3919i
   0.2500 - 1.3919i
\end{verbatim}
Il sistema \`{e} \textbf{instabile}; le risposte all'impulso e al gradino
sono \textbf{oscillatorie con ampiezza sempre crescente}
\end{block}


\end{frame}
%%





%%
\begin{frame}[fragile]
%%
  \frametitle{Instabilit\`{a}}
%%
Consideriamo il sistema:
%%
\small%
\begin{eqnarray*}
A = \begin{bmatrix}
0 & 1 \\
-2 & 4
\end{bmatrix}
&
B = \begin{bmatrix}
0 \\ 1
\end{bmatrix}
\\
C = \begin{bmatrix}
1 & 0
\end{bmatrix}
&
D = \begin{bmatrix}
0
\end{bmatrix}
\end{eqnarray*}


\begin{block}{Definizione delle matrici e stabilit\`{a}}
\scriptsize%%
\begin{verbatim}
octave:20> A=[0 1; -2 4];
octave:21> B=[0 ; 1];
octave:22> C=[1 0];
octave:23> D=[0];
octave:24> eig(A)
ans =

   0.58579
   3.41421
\end{verbatim}
Il sistema \`{e} \textbf{instabile}; le risposte all'impulso e al gradino
sono \textbf{divergenti}
\end{block}


\end{frame}
%%


%%
\begin{frame}[fragile]
%%
  \frametitle{Uso delle funzioni di trasferimento}
%%

\begin{block}{Calcolo funzione di trasferimento}
\footnotesize%%
Il comando octave/matlab \textbf{tf} (transfer-function) permette di
calcolare la funzione di trasferimento di un sistema:
\begin{verbatim}
octave:20> A=[0 1; -2 -0.5];
octave:21> B=[0 ; 1];
octave:22> C=[1 0];
octave:23> D=[0];
octave:24> sistema=ss(A,B,C,D);
octave:25> g=tf(sistema)

Transfer function 'g' from input 'u1' to output ...

             1
 y1:  ---------------
      s^2 + 0.5 s + 2

Continuous-time model.
\end{verbatim}
\end{block}

\end{frame}



%%
\begin{frame}[fragile]
%%
  \frametitle{Uso delle funzioni di trasferimento}
%%

\begin{block}{Calcolo funzione di trasferimento}
\footnotesize%%
\begin{verbatim}
octave:25> g=tf(sistema)

Transfer function 'g' from input 'u1' to output ...

             1
 y1:  ---------------
      s^2 + 0.5 s + 2

Continuous-time model.

octave:26> step(g)
\end{verbatim}

I comandi \textbf{step} e \textbf{impulse}, che permettono di visualizzare
l'andamento della risposta al gradino e all'impulso di un sistema,
consentono di passare, come parametro, anche una funzione di trasferimento.

\end{block}

\end{frame}




%%
\begin{frame}[fragile]
%%
  \frametitle{Uso delle funzioni di trasferimento}
%%
\begin{block}{Uso diretto funzione di trasferimento}
\footnotesize%%
Qualora si possieda la funzione di trasferimento, \`{e} possibile usare il
comando \textbf{tf} fornendo i vettori dei coefficienti:
\[
G(s) = \frac{s + 3}{s^2 + 2s + 5}
\]
\begin{verbatim}
octave:25> g=tf([1 3], [1 2 5])

Transfer function 'g' from input 'u1' to output ...

          s + 3
 y1:  -------------
      s^2 + 2 s + 5

Continuous-time model.

octave:26> step(g)
\end{verbatim}

\end{block}

\end{frame}



%%
\begin{frame}[fragile]
%%
  \frametitle{Poli e Zeri}
%%
Il comando \textbf{tf2pzk} permette di calcolare gli \textbf{zeri}, i
\textbf{poli} e il \textbf{guadagno statico} di un sistema data la sua
funzione di trasfermento.

\begin{block}{Poli e Zeri}
\scriptsize%%
\begin{verbatim}
octave:25> g=tf(sistema)

Transfer function 'g' from input 'u1' to output ...

             1
 y1:  ---------------
      s^2 + 0.5 s + 2

Continuous-time model.

octave:26> [z,p,k] = tf2zp(g)
z = [](0x1)
p =

  -0.2500 + 1.3919i
  -0.2500 - 1.3919i

k =  1
\end{verbatim}
\end{block}

\end{frame}



%%
\begin{frame}[fragile]
%%
  \frametitle{Poli e Zeri}
%%
La funzione di trasferimento pu\`{o} essere fornita anche nella forma
$\frac{N(s)}{D(s)}$ specificando i coefficienti dei polinomi $N(s)$ e
$D(s)$.
\[
G(s) = \frac{s+2}{s^2 + 3s - 5}
\]

\begin{block}{Poli e Zeri}
\footnotesize%%
\begin{verbatim}
octave:26> [z,p,k] = tf2zp([1 2], [1 3 -5])
z = -2
p =

  -4.1926
   1.1926

k =  1
\end{verbatim}
\end{block}

\end{frame}



%%
\begin{frame}[fragile]
%%
  \frametitle{Poli e Zeri}
%%
Se si conoscono gli zeri, i poli e il guadagno statico \`{e} possibile
``sintetizzare'' la funzione di trasferimento con il comando \textbf{zp2tf}:\\
%%
\begin{center}
{\red{}Zeri: $s = 1$}\\
{\red{}Poli: $s = -4$, $s = -5$}\\
{\red{}Guadagno statico: $0.5$}
\end{center}
\begin{block}{}
\footnotesize%%
\begin{verbatim}
octave:26> [n,d] = zp2tf([1], [-4 -5], 0.5)
n =
   0.50000  -0.50000

d =
    1    9   20
\end{verbatim}
La funzione \`{e} $G(s) = \frac{0.5 s - 0.5}{s^2+9s+20}$.
%%
\end{block}

\end{frame}



%%
%%

\frame{\titlepage}


\end{document}
%%
%%

