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

Classe abstrata que tratam todos os modelos matemáticos. Mais...

#include <model.h>

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

Métodos Públicos

 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...
 
virtual UsedType sim (UsedType x)=0
 Método cuja responsabilidade é simular os valores futuros da saída de um modelo. Mais...
 
virtual UsedType sim (UsedType x, UsedType y)=0
 Método não implementado. Mais...
 
virtual Matrix< UsedType > sim (Matrix< UsedType > x)=0
 Método cuja responsabilidade é simular os valores futuros da saída do modelo. Mais...
 
virtual Matrix< UsedType > sim (Matrix< UsedType > x, Matrix< UsedType > y)=0
 Método não implementado. Mais...
 
virtual Matrix< UsedType > sim (UsedType lsim, UsedType lmax, UsedType step)=0
 Método cuja responsabilidade é simular os valores futuros da saída do modelo. Mais...
 

Atributos Protegidos

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 Model< UsedType >

Classe abstrata que tratam todos os modelos matemáticos.

O objetivo principal dessa classe é ser uma abstração para tratar e simular modelos matemáticos (redes neurais, arx, armax, carima, espaço de estados, função de transferência, fuzzy, e etc.). A funcionalidade desta classe é inquestionável quando percebemos que precisamos simular, prever, derivar, obter um sistema linear (linearizar) dos modelos. Por isso, ter uma classe que integre e abstraia essas funcionalidades facilitará a implementação e, também, a desacoplará.

Parâmetros
*instanceÉ uma instância do próprio objeto do tipo Model. Ele permite que, por exemplo, seja possível obter a derivada dos modelos sem precisar saber qual a sua implementação concreta.
inputÉ uma variável de memória que armazena a entrada fornecida pelo usuário.
outputÉ uma variável de memória que armazena a saida fornecida pela simulação, realizada pelo objeto concreto.
lminÉ o mínimo valor de entrada que será aplicada no modelo matemático com o objetivo de se obter uma saída.
lmaxÉ o máximo valor de entrada que será aplicada no modelo matemático com o objetivo de se obter uma saída.
stepÉ o incremento da entrada que será utilizado na simulação e obtenção de valores futuros das equações e modelos.
InputÉ uma Matrix que armazena uma sequencia de entradas que será aplicada no modelo (fornecida pelo usuário).
OutputÉ uma Matrix que armazena uma sequencia de saídas que serão obtidas do modelo (fornecida pelo usuário). Estas saídas são comparadas com as saídas estimadas EstOutput para se obter o erro de estimação.
EstOutputÉ uma Matrix que armazena uma sequencia de saídas que são resultado da aplicação de uma sequância de entradas no modelo.
ModelCoefÉ uma Matrix que armazena os coeficientes do modelo matemático que será utilizado.
LinearVectorPhiUm sistema linear é dado pela seguinte equação: AX = b. Esta variável representa uma linha da Matrix A e pode ser utilizada para se obter estimatidas em algoritmos recursivos, por exemplo.
LinearMatrixAUm sistema linear é dado pela seguinte equação: AX = b. Esta variável representa a variável A do sistema linear.
LinearEqualityBUm sistema linear é dado pela seguinte equação: AX = b. Esta variável representa a variável b do sistema linear.

Definição na linha 28 do arquivo model.h.

Construtores & Destrutores

template<class UsedType>
Model< UsedType >::Model ( )

Construtor padrão da biblioteca modelos matemáticos.

O construtor padrão da biblioteca de simulação permite que um objeto do tipo Model seja construído.

Ex1:

int main(int argc, char *argv)
{
Model<double> *model;
TransferFunction<double> TF("0,1","1,2,1",1,1);
model = &TF;
model->print();
}

Resultado:

+2
-------------
s^2 + 2s + 1

Ex2:

int main(int argc, char *argv)
{
Model<double> *model;
Matrix<double> A,B,C,D;
A = "1,0;-2,-1";
B = "0;1";
C = "0,1";
D = "0";
StateSpace<double> SS(A,B,C,D);
model = &SS;
model->print();
}

Resultado:

A =
1.000 0.000
-2.000 -1.000
B =
0.000
1.000
C =
0.000 1.000
D =
0.000

Ex3:

double funcaoMatematica(double x)
{
return pow(x,2)*exp(4*x+5)*(cos(3*x) + sin(3*x));
}
int main(int argc, char *argv)
{
Model<double> *model;
simFunction<double> F(funcaoMatematica);
model = &F;
model->sim(0,M_PI/10,M_PI/15).print();
}

Resultado:

0.000
21.016

Ver também:

Veja também
print();

Métodos

template<class UsedType>
UsedType Model< UsedType >::diff ( UsedType  x)

Método que realiza a derivada de uma função de maneira numérica.

A responsabilidade deste método é retornar a derivada do modelo instanciado.

Ex:

double funcaoMatematica(double x)
{
return pow(x,2)*exp(4*x+5)*(cos(3*x) + sin(3*x));
}
int main(int argc, char *argv)
{
Model<double> *model;
simFunction<double> F(funcaoMatematica);
model = &F;
model->setStep(1e-10);
model->setInstance(model);
std::cout << model->diff(1) << std::endl;
}

Resultado:

-68767.4

Ver também: sim(), setInstance(), setStep();

template<class UsedType>
Matrix<UsedType> Model< UsedType >::getInputMatrix ( )

Método que retorna as variável Input os valores de entrada do um modelo, ou função.

A responsabilidade deste método é permitir que o usuário tenha acesso aos valores de entradas externamente ao objeto.

Ex:

int main(int argc, char *argv)
{
Matrix<double> A,B,C,D,u;
A = "1.81,-0.8187;1,0";
B = "0.125;0";
C = "0.03743,0.03502";
D = "0";
u = "1,1,1,1,1,1,1,1";
Model<double> *model = new StateSpace<double>(A,B,C,D,0.1);
model->setIO(~u,~model->sim(u));
model->getInputMatrix().print();
return 0;
}

Resultado:

1.000
1.000
1.000
1.000
1.000
1.000
1.000
1.000

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

template<class UsedType>
Matrix<UsedType> Model< UsedType >::getLinearEqualityB ( )

Método cuja responsabilidade é retornar a Matrix b do sistema linear AX = b.

Algumas classes que herdam de model possuem uma implementação para montar um sistema linear. Essa montagem será importante para as bibliotecas de otimização.

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;
return 0;
}

Resultado:

0.000
0.005
0.018
0.037

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

template<class UsedType>
Matrix<UsedType> Model< UsedType >::getLinearMatrixA ( )

Método cuja responsabilidade é retornar a Matrix A do sistema linear AX = b.

Algumas classes que herdam de model possuem uma implementação para montar um sistema linear. Essa montagem será importante para as bibliotecas de otimização.

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>
Matrix<UsedType> Model< UsedType >::getLinearVectorPhi ( )

Método cuja responsabilidade é retornar uma linha da Matrix A do sistema linear AX = b.

Algumas classes que herdam de model possuem uma implementação para montar um sistema linear. Essa montagem será importante para as bibliotecas de otimização. Neste caso, com apenas uma linha do sistema é possível utilizar algoritmos de otimização online.

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.setLinearVectorPhi();
Model<double> *model = &gz;
return 0;
}

Resultado:

-0.000 -0.000 0.000 0.000

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

template<class UsedType>
Matrix<UsedType> Model< UsedType >::getModelCoef ( )

Método que retorna a variável ModelCoef, os coeficientes do modelo.

ModelCoef é uma variável utilizada em algums modelos que herdam de model. Devido a sua grande aplicação e a necessidade de simular modelos de forma simples esta variável foi adicionada em model e não nas implementações particulares.

Ex:

#include <src/optimizationLibs/leastsquare.h>
#include <src/simulationLibs/conversions.h>
using namespace conversions;
int main(int argc, char *argv)
{
Matrix<double> A,B,C,D,u;
A = "1.81,-0.8187;1,0";
B = "0.125;0";
C = "0.03743,0.03502";
D = "0";
u.randU(1,5);
StateSpace<double> SS(A,B,C,D,0.1);
SS.sim(u).print();
ARX<double> gz(2,2);
gz.setLinearModel(~u,~SS.sim(u));
Optimization<double> *LS = new LeastSquare<double>(&gz);
LS->Optimize();
Model<double> *model = new ARX<double>(2,2);
model->sim(~u).print();
model->getModelCoef().print();
return 0;
}

Resultado:

0.000 0.002 0.007 0.015 0.024
-1.810
0.819
0.005
0.004
0.000
0.002
0.007
0.015
0.024
-1.810
0.819
0.005
0.004

Ver também: sim(), setStep(), setModelCoef(), diff();

template<class UsedType>
UsedType Model< UsedType >::getOutput ( )

Método que retorna a variável output, o valore de saída do modelo, ou função.

A responsabilidade deste método é permitir que o usuário tenha acesso ao valor imediato de saida externamente ao objeto.

Ex:

int main(int argc, char *argv)
{
Matrix<double> A,B,C,D,u;
A = "1.81,-0.8187;1,0";
B = "0.125;0";
C = "0.03743,0.03502";
D = "0";
u = "1,1,1,1,1,1,1,1";
Model<double> *model = new StateSpace<double>(A,B,C,D,0.1);
model->sim(u(1,1));
std::cout << model->getOutput();
return 0;
}

Resultado:

0.000
0.005
0.018
0.037
0.062
0.090
0.122
0.156

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

template<class UsedType>
Matrix<UsedType> Model< UsedType >::getOutputMatrix ( )

Método que retorna a variável Output, os valores de saída do um modelo, ou função.

A responsabilidade deste método é permitir que o usuário tenha acesso aos valores de saida externamente ao objeto.

Ex:

int main(int argc, char *argv)
{
Matrix<double> A,B,C,D,u;
A = "1.81,-0.8187;1,0";
B = "0.125;0";
C = "0.03743,0.03502";
D = "0";
u = "1,1,1,1,1,1,1,1";
Model<double> *model = new StateSpace<double>(A,B,C,D,0.1);
model->setIO(~u,~model->sim(u));
model->getOutputMatrix().print();
return 0;
}

Resultado:

0.000
0.005
0.018
0.037
0.062
0.090
0.122
0.156

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

template<class UsedType>
void Model< UsedType >::setInstance ( Model< UsedType > *  m)

Método que insere na variável instance uma instância do objeto do tipo model.

Método que insere na variável instance uma instância do objeto do tipo model, ou um ponteiro de um objeto que herde de model.

Ex:

double funcaoMatematica(double x)
{
return pow(x,2)*exp(4*x+5)*(cos(3*x) + sin(3*x));
}
int main(int argc, char *argv)
{
Model<double> *model;
simFunction<double> F(funcaoMatematica);
model = &F;
model->setStep(1e-10);
model->setInstance(model);
std::cout << model->diff(1) << std::endl;
}

Resultado:

-68767.4

Ver também: sim(), setStep();, diff();

template<class UsedType>
void Model< UsedType >::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.

A responsabilidade deste método é permitir a alteração dos valores de entradas e saídas fora da função de simulação (sim()).

Ex:

int main(int argc, char *argv)
{
Matrix<double> A,B,C,D,u;
A = "1.81,-0.8187;1,0";
B = "0.125;0";
C = "0.03743,0.03502";
D = "0";
u = "1,1,1,1,1,1,1,1";
Model<double> *model = new StateSpace<double>(A,B,C,D,0.1);
model->setIO(~u,~model->sim(u));
model->getInputMatrix().print();
return 0;
}

Resultado:

1.000
1.000
1.000
1.000
1.000
1.000
1.000
1.000

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

template<class UsedType>
void Model< UsedType >::setModelCoef ( Matrix< UsedType >  coef)

Método que insere na variável ModelCoef os coeficientes do modelo que será simulado.

ModelCoef é uma variável utilizada em algums modelos que herdam de model. Devido a sua grande aplicação e a necessidade de simular modelos de forma simples esta variável foi adicionada em model e não nas implementações particulares.

Ex:

#include <src/optimizationLibs/leastsquare.h>
#include <src/simulationLibs/conversions.h>
using namespace conversions;
int main(int argc, char *argv)
{
Matrix<double> A,B,C,D,u;
A = "1.81,-0.8187;1,0";
B = "0.125;0";
C = "0.03743,0.03502";
D = "0";
u.randU(1,5);
StateSpace<double> SS(A,B,C,D,0.1);
SS.sim(u).print();
ARX<double> gz(2,2);
gz.setLinearModel(~u,~SS.sim(u));
Optimization<double> *LS = new LeastSquare<double>(&gz);
LS->Optimize();
Model<double> *model = new ARX<double>(2,2);
model->sim(~u).print();
return 0;
}

Resultado:

0.000 0.002 0.007 0.015 0.024
-1.810
0.819
0.005
0.004
0.000
0.002
0.007
0.015
0.024

Ver também: sim(), setStep();, diff();

template<class UsedType>
void Model< UsedType >::setStep ( UsedType  step)

Método que insere na variável step um valor determinado.

A variável step tem duas responsabilidades, a primeira é ser o passo para a geração de pontos na simulação e a segunda é ser o passo de derivação e integração.

Ex:

double funcaoMatematica(double x)
{
return pow(x,2)*exp(4*x+5)*(cos(3*x) + sin(3*x));
}
int main(int argc, char *argv)
{
Model<double> *model;
simFunction<double> F(funcaoMatematica);
model = &F;
model->setStep(1e-10);
model->setInstance(model);
std::cout << model->diff(1) << std::endl;
}

Resultado:

-68767.4

Ver também: sim(), setInstance(), diff();

template<class UsedType>
virtual UsedType Model< UsedType >::sim ( UsedType  x)
pure 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 qualquer. Devido a abstração, independentemente do tipo de modelo matemático utilizado a simulação será realizada da mesma maneira.

Ex:

int main(int argc, char *argv)
{
Matrix<double> A,B,C,D;
A = "1,0;-2,-1";
B = "0;1"; C = "0,1"; D = "0";
Model<double> *model = new StateSpace<double>(A,B,C,D);
std::cout << model->sim(1) << std::endl;
return 0;
}

Resultado:

0

Ver também:

Veja também
print();

Implementado por StateSpace< UsedType >, TransferFunction< UsedType > e ARX< UsedType >.

template<class UsedType>
virtual UsedType Model< UsedType >::sim ( UsedType  x,
UsedType  y 
)
pure virtual

Método não implementado.

Implementado por StateSpace< UsedType >, TransferFunction< UsedType > e ARX< UsedType >.

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

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

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> A,B,C,D,u;
A = "1,0;-2,-1";
B = "0;1"; C = "0,1"; D = "0";
u = "1,1,1,1,1,1,1,1,1,1,1,1";
Model<double> *model = new StateSpace<double>(A,B,C,D);
model->sim(u).print();
return 0;
}

Resultado:

0.000 0.095 0.181 0.259 0.330 0.393 0.451 0.503 0.551 0.593 0.632 0.667

Ver também:

Veja também
print();

Implementado por StateSpace< UsedType >, TransferFunction< UsedType > e ARX< UsedType >.

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

Método não implementado.

Implementado por StateSpace< UsedType >, TransferFunction< UsedType > e ARX< UsedType >.

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

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

A responsabilidade deste método é simularum modelo a partir de um sinal de entrada contido em um dado intervalo. Em que:

Parâmetros
lminé o limite mínimo da entrada
lmaxé o limite máximo da entrada
stepé o valor incremental da entrada

Ex:

int main(int argc, char *argv)
{
Matrix<double> A,B,C,D;
A = "1,0;-2,-1";
B = "0;1"; C = "0,1"; D = "0";
Model<double> *model = new StateSpace<double>(A,B,C,D);
model->sim(0,5,1).print();
return 0;
}

Resultado:

0.000 0.000 0.095 0.276 0.536 0.865

Ver também:

Veja também
print();

Implementado por StateSpace< UsedType >, TransferFunction< UsedType > e ARX< UsedType >.

Atributos

template<class UsedType>
Matrix<UsedType> Model< UsedType >::EstOutput
protected

Definição na linha 33 do arquivo model.h.

template<class UsedType>
UsedType Model< UsedType >::input
protected

Definição na linha 32 do arquivo model.h.

template<class UsedType>
Matrix<UsedType> Model< UsedType >::Input
protected

Definição na linha 33 do arquivo model.h.

template<class UsedType>
Model<UsedType>* Model< UsedType >::instance
protected

Definição na linha 31 do arquivo model.h.

template<class UsedType>
Matrix<UsedType> Model< UsedType >::LinearEqualityB
protected

Definição na linha 33 do arquivo model.h.

template<class UsedType>
Matrix<UsedType> Model< UsedType >::LinearMatrixA
protected

Definição na linha 33 do arquivo model.h.

template<class UsedType>
Matrix<UsedType> Model< UsedType >::LinearVectorPhi
protected

Definição na linha 33 do arquivo model.h.

template<class UsedType>
UsedType Model< UsedType >::lmax
protected

Definição na linha 32 do arquivo model.h.

template<class UsedType>
UsedType Model< UsedType >::lmin
protected

Definição na linha 32 do arquivo model.h.

template<class UsedType>
Matrix<UsedType> Model< UsedType >::ModelCoef
protected

Definição na linha 33 do arquivo model.h.

template<class UsedType>
UsedType Model< UsedType >::output
protected

Definição na linha 32 do arquivo model.h.

template<class UsedType>
Matrix<UsedType> Model< UsedType >::Output
protected

Definição na linha 33 do arquivo model.h.

template<class UsedType>
UsedType Model< UsedType >::step
protected

Definição na linha 32 do arquivo model.h.


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