Sistemas de Controle  0.5
Biblioteca matematica de Controle
Métodos Públicos | Atributos Privados | Lista de todos os Membros
Referência da Template de Classe ARX< UsedType >

Classe concreta para os modelos ARX (Modelos AutoRecursivos com entradas exógenas). Mais...

#include <arx.h>

Diagrama de Hierarquia para ARX< UsedType >:
Inheritance graph
Diagrama de colaboração para ARX< UsedType >:
Collaboration graph

Métodos Públicos

 ARX (unsigned nInputpar, unsigned nOutputpar, unsigned delay=0, unsigned qdtInputVar=1, unsigned qdtOutputVar=1)
 Construtor da biblioteca de modelos ARX. Mais...
 
void setLinearVectorPhiEstimation ()
 Método cuja responsabilidade é montar uma linha do sistema linear AX = b. Mais...
 
void setLinearVectorPhi ()
 Método cuja responsabilidade é montar uma linha do sistema linear AX = b. Mais...
 
void setLinearModel (Matrix< UsedType > Input, Matrix< UsedType > Output)
 Método cuja responsabilidade é montar o sistema linear AX = b. Mais...
 
UsedType sim (UsedType input)
 Método cuja responsabilidade é simular os valores futuros da saída de um modelo. Mais...
 
UsedType sim (UsedType input, UsedType output)
 Método cuja responsabilidade é simular os valores futuros da saída de um modelo a partir de duas entradas de dados, o Input (entrada exógena) e o Output (saída passada). Mais...
 
Matrix< UsedType > sim (Matrix< UsedType > x)
 Método cuja responsabilidade é simular os valores futuros da saída do modelo ARX. Mais...
 
Matrix< UsedType > sim (Matrix< UsedType > x, Matrix< UsedType > y)
 Método não implementado. Mais...
 
Matrix< UsedType > sim (UsedType lsim, UsedType lmax, UsedType step)
 Método não implementado. Mais...
 
- Métodos Públicos herdados de Model< UsedType >
 Model ()
 Construtor padrão da biblioteca modelos matemáticos. Mais...
 
UsedType diff (UsedType x)
 Método que realiza a derivada de uma função de maneira numérica. Mais...
 
void setStep (UsedType step)
 Método que insere na variável step um valor determinado. Mais...
 
void setInstance (Model< UsedType > *m)
 Método que insere na variável instance uma instância do objeto do tipo model. Mais...
 
void setModelCoef (Matrix< UsedType > coef)
 Método que insere na variável ModelCoef os coeficientes do modelo que será simulado. Mais...
 
void setIO (Matrix< UsedType > in, Matrix< UsedType > out)
 Método que insere nas variáveis Input e Output os valores de entrada e saída de um modelo, ou função. Mais...
 
Matrix< UsedType > getModelCoef ()
 Método que retorna a variável ModelCoef, os coeficientes do modelo. Mais...
 
Matrix< UsedType > getInputMatrix ()
 Método que retorna as variável Input os valores de entrada do um modelo, ou função. Mais...
 
UsedType getOutput ()
 Método que retorna a variável output, o valore de saída do modelo, ou função. Mais...
 
Matrix< UsedType > getOutputMatrix ()
 Método que retorna a variável Output, os valores de saída do um modelo, ou função. Mais...
 
Matrix< UsedType > getLinearMatrixA ()
 Método cuja responsabilidade é retornar a Matrix A do sistema linear AX = b. Mais...
 
Matrix< UsedType > getLinearEqualityB ()
 Método cuja responsabilidade é retornar a Matrix b do sistema linear AX = b. Mais...
 
Matrix< UsedType > getLinearVectorPhi ()
 Método cuja responsabilidade é retornar uma linha da Matrix A do sistema linear AX = b. Mais...
 

Atributos Privados

unsigned nInputpar
 
unsigned nOutputpar
 
unsigned delay
 
unsigned qdtInputVar
 
unsigned qdtOutputVar
 
unsigned nSample
 
unsigned maxnInOut
 

Outros membros herdados

- Atributos Protegidos herdados de Model< UsedType >
Model< UsedType > * instance
 
UsedType input
 
UsedType output
 
UsedType lmin
 
UsedType lmax
 
UsedType step
 
Matrix< UsedType > Input
 
Matrix< UsedType > Output
 
Matrix< UsedType > EstOutput
 
Matrix< UsedType > ModelCoef
 
Matrix< UsedType > LinearVectorPhi
 
Matrix< UsedType > LinearMatrixA
 
Matrix< UsedType > LinearEqualityB
 

Descrição Detalhada

template<class UsedType>
class ARX< UsedType >

Classe concreta para os modelos ARX (Modelos AutoRecursivos com entradas exógenas).

Há diversas formas de representar modelos lineares. Uma das mais utilizadas é a forma de funções de transferência definida como a transformada da resposta ao impulso do sistema modelado, para condições iniciais nulas. Se a resposta ao impulso for contínua no tempo, então, utiliza-se a transformada de Laplace. Se a resposta ao impulso for discreta no tempo, a respectiva função de transferência é, por definição, a transformada Z (Aguirre, 2007).

Nas representações a seguir definiremos $ A(z^{-1}) $, $ B(z^{-1}) $ conforme as equações 1 e 2 respectivamente.

$ A(z^{-1})= 1 + a_1z^-1 + a_2z^{-2} + ... + a_{n_a}z^{-n_a} $ 1

$ B(z^{-1})= 1 + b_1z^-1 + b_2z^{-2} + ... + b_{n_b}z^{-n_b} $ 2

Isto significa que os polinômios $ A(z^{-1}) $ e $ B(z^{-1}) $ representam sistemas discretos no tempo. Sendo eles polinômios arbitrários, o modelo ARX assume a forma da equação 3.

$ y(k)=\frac{B(z^{-1})}{A(z^{-1})}u(k)+\frac{1}{A(z^{-1})}v(k) $ 3

Em que:

Parâmetros
y(k)É o sinal de saída, calculado pelo do modelo matemático
u(k)É o sinal de entrada, que significa uma força externa a um sistema físico qualquer.
v(k)É um ruído branco com média nula (Ruído branco gaussiano).

O modelo ARX (AutoRegressive with eXogenous inputs) apresentado no diagrama de blocos da figura 1, pode ser obtido a partir de um modelo polinomial linear mais geral de entradas e saídas resultando na equação 3 (Aguirre, 2007).

Arx.jpg

$ Diagrama de Blocos do Modelo ARX. Fonte: Isermann (2011). $

Para o caso multivariável, podemos representar o modelo ARX conforme a seguinte equação na forma vetorial.

$ Y(k) = \left [ \begin{matrix} y_1(k) \\ y_2(k) \\ \vdots \\ y_{qo}(k) \end{matrix}\right ] = \Theta \Phi = \left [ \begin{matrix} \theta_{1,1} & \cdots & \theta_{1,qo\,ny + qi\,nu -1} \\ \vdots & \ddots & \vdots \\ \theta_{qo,1} & \cdots & \theta_{qo,qo\,ny + qi\,nu -1} \end{matrix} \right ]\left [ \begin{matrix} y_1(k-1) \\ \vdots \\ y_1(k-ny) \\ \vdots \\ y_{qo}(k-1) \\ \vdots \\ y_{qo}(k-ny) \\ u_1(k-1-d) \\ \vdots \\ u_1(k-nu-d) \\ _{qi}(k-1-d) \\ \vdots \\ u_{qi}(k-nu-d) \end{matrix} \right ] $ Equação 4

Em que:

Parâmetros
nuNa classe é representado por:
nInputparOu seja, o número de atrasos nas entradas do sistema.
nyNa classe é representado por:
nOutputparOu seja, o número de atrasos nas saídas do sistema.
dNa classe é representado por:
delayOu seja, o número de atrasos de transporte do sistema.
qiNa classe é representado por:
qdtInputVarOu seja, o número entradas aplicadas no sistema.
qoNa classe é representado por:
qdtOutputVarOu seja, o número de saídas do sistema.

Como é possível perceber, o objetivo desta classe é "ser" um modelo ARX, ou seja, os cálculos e estruturas aqui calculadas seguirão o padrão do modelo da equação 4. Para isso, são definidas, ainda as seguintes variáveis:

Parâmetros
maxnInOutÉ uma variável para cuidar do tamanho do vetor $\Phi$, para que não seja ultrapassada a quantidade de dados armazenados na memória do computador.
nSampleÉ o período de amostragem do sistema.

Definição na linha 58 do arquivo arx.h.

Construtores & Destrutores

template<class UsedType >
ARX< UsedType >::ARX ( unsigned  nInputpar,
unsigned  nOutputpar,
unsigned  delay = 0,
unsigned  qdtInputVar = 1,
unsigned  qdtOutputVar = 1 
)

Construtor da biblioteca de modelos ARX.

O construtor da biblioteca de modelos ARX faz parte do bloco de classes que herdam de Model. Nele, todas as variáveis são setadas como mostrado a seguir:

Parâmetros
maxnInOutÉ inicializado com o maior valor entre o número de atrasos na entrada e o número de atrasos na saída.
nInputparÉ inicializado com os parâmetros setados pelo usuário.
nOutputparÉ inicializado com os parâmetros setados pelo usuário.
delayÉ inicializado com os parâmetros setados pelo usuário. Caso não seja setado pelo usuário o seu valor será automaticamente iniciado com 0 (zero).
qdtInputVarÉ inicializado com os parâmetros setados pelo usuário. Caso não seja setado pelo usuário o seu valor será automaticamente iniciado com 1 (um).
qdtOutputVarÉ inicializado com os parâmetros setados pelo usuário. Caso não seja setado pelo usuário o seu valor será automaticamente iniciado com 1 (um).
Input(da classe model) É inicializado com zeros, em que Input será uma matriz de nInputpar linhas e qdtInputVar colunas.
Output(da classe model) É inicializado com zeros, em que Output será uma matriz de nOutputpar linhas e qdtOutputVar colunas.
EstOutput(da classe model) É inicializado com zeros e o mesmo tamanho de Output.
nSampleÉ inicializado com o valor de delay + maxnInOut + 1.

$ Ex_1 $:

int main(int argc, char *argv)
{
Matrix<double> In, syspar;
In = "1,1,1,1,1,1,1,1,1,1";
syspar = "-1.809674836071920;0.818730753077982;0.004678840160444;0.004377076845618";
ARX<double> gz(2,2); // Construtor recebendo 2 parâmetros
gz.setModelCoef(syspar);
gz.sim(~In).print();
}

Resultado:

0.000
0.005
0.018
0.037
0.062
0.090
0.122
0.156
0.191
0.228

$ Ex_2 $:

int main(int argc, char *argv)
{
Matrix<double> In, syspar;
In = "1,1,1,1,1,1,1,1,1,1";
syspar = "-1.809674836071920;0.818730753077982;0.004678840160444;0.004377076845618";
Model<double> *gz = new ARX<double>(2,2); // Construtor recebendo 2 parâmetros
gz->setModelCoef(syspar);
gz->sim(~In).print();
}

Resultado:

0.000
0.005
0.018
0.037
0.062
0.090
0.122
0.156
0.191
0.228

Ver também:

Veja também
setModelCoef(), sim(), Matrix, Model, print();

Métodos

template<class UsedType>
void ARX< UsedType >::setLinearModel ( Matrix< UsedType >  Input,
Matrix< UsedType >  Output 
)

Método cuja responsabilidade é montar o sistema linear AX = b.

Algumas classes que herdam de model possuem uma implementação para montar um sistema linear (No caso os modelos ARX, ARMAX, AR, MA, ARMA, FIR). Essa montagem será importante para as bibliotecas de otimização e possíveis simulações externas.

Ex:

#include <src/optimizationLibs/leastsquare.h>
int main(int argc, char *argv)
{
Matrix<double> A,B,C,D,u;
A = "-2,-1;1,0";
B = "1;0"; C = "0,1"; D = "0";
u = "1,1,1,1";
StateSpace<double> SS(A,B,C,D);
ARX<double> gz(2,2);
gz.setLinearModel(~u,~SS.sim(u));
Model<double> *model = &gz;
model->getLinearMatrixA().print();
return 0;
}

Resultado:

-0.000 -0.000 0.000 0.000
-0.000 -0.000 1.000 0.000
-0.005 -0.000 1.000 1.000
-0.018 -0.005 1.000 1.000

Ver também: sim(), setStep(), setIO(), getOutputMatrix();

template<class UsedType>
void ARX< UsedType >::setLinearVectorPhi ( )

Método cuja responsabilidade é montar uma linha do sistema linear AX = b.

Algumas classes que herdam de model possuem uma implementação para montar um sistema linear (No caso os modelos ARX, ARMAX, AR, MA, ARMA, FIR). Essa montagem será importante para as bibliotecas de otimização e possíveis simulações externas.

Para esse caso específico a linha do sistema linear é montada utilizando os valores reais e não os dados estimados e que são colocados na matriz EstOutput.

Ex:

#include <src/optimizationLibs/leastsquare.h>
int main(int argc, char *argv)
{
Matrix<double> A,B,C,D,u;
A = "-2,-1;1,0";
B = "1;0"; C = "0,1"; D = "0";
u = "1,1,1,1";
StateSpace<double> SS(A,B,C,D);
ARX<double> gz(2,2);
Model<double> *model = &gz;
model->setLinearVectorPhi();
return 0;
}

Resultado:

-0.000 -0.000 0.000 0.000

Ver também: sim(), setLinearModel(), Matrix, print(), getLinearVectorPhi();

template<class UsedType>
void ARX< UsedType >::setLinearVectorPhiEstimation ( )

Método cuja responsabilidade é montar uma linha do sistema linear AX = b.

Algumas classes que herdam de model possuem uma implementação para montar um sistema linear (No caso os modelos ARX, ARMAX, AR, MA, ARMA, FIR). Essa montagem será importante para as bibliotecas de otimização e possíveis simulações externas.

Para esse caso específico a linha do sistema linear é montada utilizando as estimativas e não os dados inseridos em Output.

Ex:

#include <src/optimizationLibs/leastsquare.h>
int main(int argc, char *argv)
{
Matrix<double> A,B,C,D,u;
A = "-2,-1;1,0";
B = "1;0"; C = "0,1"; D = "0";
u = "1,1,1,1";
StateSpace<double> SS(A,B,C,D);
ARX<double> gz(2,2);
Model<double> *model = &gz;
model->setLinearVectorPhiEstimation();
return 0;
}

Resultado:

-0.000 -0.000 0.000 0.000

Ver também: sim(), setLinearModel(), Matrix, print(), getLinearVectorPhi();

template<class UsedType>
UsedType ARX< UsedType >::sim ( UsedType  input)
virtual

Método cuja responsabilidade é simular os valores futuros da saída de um modelo.

A responsabilidade deste método é retornar um escalar com o valor correspondente a simulação de um modelo ARX.

Ex:

int main(int argc, char *argv)
{
syspar = "-1.809674836071920;0.818730753077982;0.004678840160444;0.004377076845618";
Model<double> *gz = new ARX<double>(2,2); // Construtor recebendo 2 parâmetros
gz->setModelCoef(syspar);
gz->sim(10).print();
}

Resultado:

0.000

Ver também:

Veja também
setModelCoef(), sim(), Matrix, Model, print();

Implementa Model< UsedType >.

template<class UsedType>
UsedType ARX< UsedType >::sim ( UsedType  input,
UsedType  output 
)
virtual

Método cuja responsabilidade é simular os valores futuros da saída de um modelo a partir de duas entradas de dados, o Input (entrada exógena) e o Output (saída passada).

A responsabilidade deste método é retornar um escalar com o valor correspondente a simulação de um modelo ARX.

Ex:

int main(int argc, char *argv)
{
syspar = "-1.809674836071920;0.818730753077982;0.004678840160444;0.004377076845618";
Model<double> *gz = new ARX<double>(2,2); // Construtor recebendo 2 parâmetros
gz->setModelCoef(syspar);
double temp = 0;
for(int i = 1; i < 10; i++)
{
temp = gz->sim(1,temp);
printf("%10.3f \n", temp);
}
return 0;
}

Resultado:

0.005
0.018
0.037
0.062
0.090
0.122
0.156
0.191
0.228

Ver também:

Veja também
setModelCoef(), sim(), Matrix, Model, print();

Implementa Model< UsedType >.

template<class UsedType>
Matrix<UsedType> ARX< UsedType >::sim ( Matrix< UsedType >  x)
virtual

Método cuja responsabilidade é simular os valores futuros da saída do modelo ARX.

A responsabilidade deste método é receber uma matriz (como sinal de entrada do modelo) e retornar uma matriz com a resposta do sistema para aquele conjunto de entradas determinadas.

Ex:

int main(int argc, char *argv)
{
Matrix<double> U, syspar;
U = "1;1;1;1;1;1;1;1;1;1";
syspar = "-1.809674836071920;0.818730753077982;0.004678840160444;0.004377076845618";
ARX<double> gz(2,2); // Construtor recebendo 2 parâmetros
gz.setModelCoef(syspar);
gz.sim(U).print();
return 0;
}

Resultado:

0.000
0.005
0.018
0.037
0.062
0.090
0.122
0.156
0.191
0.228

Ver também:

Veja também
print();

Implementa Model< UsedType >.

template<class UsedType>
Matrix<UsedType> ARX< UsedType >::sim ( Matrix< UsedType >  x,
Matrix< UsedType >  y 
)
virtual

Método não implementado.

Implementa Model< UsedType >.

template<class UsedType>
Matrix<UsedType> ARX< UsedType >::sim ( UsedType  lsim,
UsedType  lmax,
UsedType  step 
)
virtual

Método não implementado.

Implementa Model< UsedType >.

Atributos

template<class UsedType>
unsigned ARX< UsedType >::delay
private

Definição na linha 61 do arquivo arx.h.

template<class UsedType>
unsigned ARX< UsedType >::maxnInOut
private

Definição na linha 61 do arquivo arx.h.

template<class UsedType>
unsigned ARX< UsedType >::nInputpar
private

Definição na linha 61 do arquivo arx.h.

template<class UsedType>
unsigned ARX< UsedType >::nOutputpar
private

Definição na linha 61 do arquivo arx.h.

template<class UsedType>
unsigned ARX< UsedType >::nSample
private

Definição na linha 61 do arquivo arx.h.

template<class UsedType>
unsigned ARX< UsedType >::qdtInputVar
private

Definição na linha 61 do arquivo arx.h.

template<class UsedType>
unsigned ARX< UsedType >::qdtOutputVar
private

Definição na linha 61 do arquivo arx.h.


A documentação para esta classe foi gerada a partir do seguinte arquivo: