modelação e simulação trabalho de laboratório nº 1 ... · pode ser representada com um...

13
Modelação e Simulação 2011/2012 – Guia do Trabalho 1 J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 1 Modelação e Simulação 2011/12 Trabalho de Laboratório nº 1 Simulação básica em MATLAB/SIMULINK Objectivos Após realizar este trabalho, o aluno deverá ser capaz de: 1. Criar no SIMULINK um diagrama de blocos que represente um modelo dinâmico de um sistema descrito por uma equação ou um sistema de equações diferenciais. 2. Escrever um script em MATLAB que efectue a simulação e mostre graficamente os resultados. 3. Discutir criticamente os resultados obtidos por forma a validar a simulação. 4. Resolução de um problema simples de estimação de mínimos quadrados, recorrendo a um método de minimização e à definição da função a minimizar com o SIMULINK. Bibliografia Acetatos do módulo 1 de Modelação e Simulação. Manuais do MATLAB e SIMULINK (disponíveis em pdf na secção “Laboratórios” da página da disciplina) Elementos a entregar Cada grupo deverá entregar por email um relatório sucinto respondendo às questões do enunciado. A resposta às questões de preparação prévia, identificadas nos enunciados como “Em casa”, deverão ser manuscritas e entregues em papel. A parte correspondente às questões de simulação deverá ser gerada automaticamente através da função “Publish” do MATLAB, e entregue por via electrónica conjuntamente com os ficheiros MATLAB/SIMULINK utilizados. Ambas as partes deverão conter um cabeçalho com a identificação do trabalho e a identificação dos alunos (número e nome). As respostas a cada questão deverão ser identificadas pelo seu número. As respostas devem ser concisas.

Upload: buimien

Post on 21-Nov-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 1

Modelação e Simulação 2011/12

Trabalho de Laboratório nº 1 Simulação básica em MATLAB/SIMULINK

Objectivos Após realizar este trabalho, o aluno deverá ser capaz de:

1. Criar no SIMULINK um diagrama de blocos que represente um modelo

dinâmico de um sistema descrito por uma equação ou um sistema de

equações diferenciais.

2. Escrever um script em MATLAB que efectue a simulação e mostre

graficamente os resultados.

3. Discutir criticamente os resultados obtidos por forma a validar a

simulação.

4. Resolução de um problema simples de estimação de mínimos

quadrados, recorrendo a um método de minimização e à definição da

função a minimizar com o SIMULINK.

Bibliografia

• Acetatos do módulo 1 de Modelação e Simulação.

• Manuais do MATLAB e SIMULINK (disponíveis em pdf na

secção “Laboratórios” da página da disciplina)

Elementos a entregar Cada grupo deverá entregar por email um relatório sucinto respondendo às

questões do enunciado. A resposta às questões de preparação prévia,

identificadas nos enunciados como “Em casa”, deverão ser manuscritas e

entregues em papel. A parte correspondente às questões de simulação

deverá ser gerada automaticamente através da função “Publish” do MATLAB,

e entregue por via electrónica conjuntamente com os ficheiros

MATLAB/SIMULINK utilizados. Ambas as partes deverão conter um

cabeçalho com a identificação do trabalho e a identificação dos alunos

(número e nome). As respostas a cada questão deverão ser identificadas pelo

seu número. As respostas devem ser concisas.

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 2

Nota importante:

Quer neste trabalho, quer nos subsequentes, os relatórios devem ser originais

e corresponder ao trabalho efectivamente realizado pelo grupo que o

subscreve. Relatórios não originais ou correspondentes a software ou outros

elementos copiados terão nota zero, sem prejuízo de procedimentos

disciplinares previstos pela Lei Portuguesa ou pelos regulamentos do IST.

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 3

Trabalho a realizar

1. Simulação da descarga de um condensador. Este primeiro exercício corresponde a uma realidade que é bem conhecida

dos alunos de Engenharia Electrotécnica e de Computadores. No entanto ele

foi escolhido pois permite ilustrar temas muito importantes e proporciona uma

introdução simples ao SIMULINK.

Considere o circuito eléctrico da fig. 1-1 em que a descarga de um

condensador C se faz através de uma resistência R .

Fig. 1-1. Descarga de um condensador através de uma resistência.

1.1. (Em casa) Mostre que a evolução no tempo da tensão )(tV aos terminais

do condensador é modelada pela seguinte equação diferencial:

0)0()(1)( VVtVRC

tVdtd

=−=

1.2. (Em casa) Sem resolver explicitamente a equação diferencial, trace

qualitativamente o andamento no tempo da sua solução. Para tal, use os

sinais da primeira e segundas derivadas de V em ordem ao tempo.

Considere valores positivos e negativos para a condição inicial.

1.3. (Em casa) Resolva agora a equação diferencial. Para tal, observe que

esta é do tipo “equação de variáveis separáveis” e que é equivalente a

+

-V

i

RC

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 4

∫∫ −=ttV

V

dtRC

dvv 0

)(

)0(

11

Calcule os integrais e resolva em ordem a V(t). Recorde que a primitiva em

ordem a v de v/1 é )ln(v .

1.4. Crie um diagrama de blocos com o SIMULINK que represente a equação

diferencial e que permita simulá-la (ver abaixo instruções adicionais sobre

como fazer isto). Em seguida crie um script MATLAB que permita

sucessivamente:

• Definir os parâmetros da simulação (R , C , )0(V , tempo total da

simulação, escalas de gráficos).

• Realizar a simulação. Se o nome do bloco SIMULINK for circuito.mdl,

o comando sim(‘circuito’) executa a simulação.

• Representar os gráficos necessários.

Usando este script e o diagrama SIMULINK que desenvolveu, represente

graficamente os resultados da simulação e compare-os com a análise que fez

nos pontos 1.2 e 1.3. Comece por considerar FC µ1= e Ω= MR 2 . Trace

curvas com outros valores de R e de C e com diversos valores da tensão

inicial . Compare os resultados obtidos quando varia estes parâmetros

(por exemplo, sobrepondo gráficos).

Nota: Criação de diagramas de blocos no SIMULINK O SIMULINK é uma interface gráfica do MATLAB associada a programas

para a integração numérica de equações diferenciais representadas por

diagramas de blocos ligados entre si. Para além das informações dadas a

seguir, sugere-se que consulte o manual do SIMULINK disponibilizado na

documentação auxiliar.

Repare que (por exemplo) a equação diferencial

VdtdV 5−=

pode ser representada com um integrador e um ganho através do diagrama

de blocos da fig. 1-2.

)0(V

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 5

Fig. 1-2. Diagrama de blocos que representa uma equação diferencial linear.

O integrador tem à entrada a derivada e, por conseguinte, à saída o valor de

V . Ligando a saída do ganho à entrada do integrador, força-se a que a

derivada venha dada por V5− , o que corresponde à equação diferencial. A

condição inicial é imposta através do valor inicial do integrador (que pode ser

definido no SIMULINK).

De modo a usar o SIMULINK para definir este diagrama de blocos, comece

por correr esta aplicação a partir do MATLAB. Para tal pode:

• Dar o comando simulink ou, alternativamente

• Clicar no ícone do SIMULINK na régua de botões do MATLAB.

Aparece uma janela correspondente à biblioteca do SIMULINK (“SIMULINK

library browser”), com o aspecto que se mostra na fig. 1-3.

Para criar um novo diagrama de blocos clique no ícone em cima à esquerda

que representa uma folha de papel em branco. Surge uma janela em branco

para onde poderá arrastar os blocos da biblioteca do SIMULINK.

Por exemplo, para obter um integrador, clique no sinal + de “continuous”,

surgindo um conjunto de blocos, entre os quais o integrador. Clique no bloco

integrador e, mantendo o botão esquerdo do rato premido, arraste o bloco pa-

-5

V

V0

dVdt

Ganho

Integrador

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 6

Fig. 1-3 – Janela do SIMULINK, com as bibliotecas de blocos disponíveis.

ra a página em branco em que está a desenvolver o diagrama de blocos. É

criada uma cópia do bloco.

Clique duas vezes no integrador. Abre-se uma janela que permite a definição

das propriedades do integrador. Defina a condição inicial no campo

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 7

respectivo. Isto pode ser feito escrevendo um número ou o nome de uma

variável global definida no espaço de trabalho (“workspace”) do MATLAB.

Repita o mesmo procedimento para definir o bloco de ganho. Pode encontrar

o bloco de ganho na biblioteca de “Math operations”. Para dar uma melhor

aparência ao diagrama a entrada do ganho deverá ficar à direita e a saída à

esquerda. Para tal, clique no bloco “gain” com o botão esquerdo e escolha

sucessivamente “Format” e “Flip block”.

Interligue os blocos integrador e ganho de acordo com o esquema da fig. 1-2.

Para tal, clique no ponto de saída de um bloco e arraste o cursor com o botão

esquerdo do rato premido até ao ponto de entrada onde pretende fazer a

ligação.

Para passar os sinais gerados para o espaço de trabalho do MATLAB use o

bloco “Toworkspace” do grupo “sinks”. Edite este bloco para indicar o nome

da variável. Além disso, no campo “Save format” escolha “array”. Para poder

representar graficamente os sinais necessita de gerar um sinal de “tempo”.

Isto é feito com o bloco “clock” do grupo “sources”. Ligue blocos

“Toworkspace” à saída do “clock” (tempo t ) e à saída do integrador (tensão

V ).

Fig. 1-4. Diagrama de blocos no SIMULINK.

A fig. 1-4 mostra o aspecto do diagrama de blocos na janela do SIMULINK.

No menu escolha (topo da janela de projecto) escolha “Simulation” e depois

“Configuration parameters”. Na janela que se abre escreva o tempo de

t1

To Workspace1

t

To Workspace

1s

Integrator

1

Gain

Clock

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 8

simulação em “stop time” (pode ser uma variável que deverá ser definida no

espaço de trabalho) e altere “Relative Tolerance” para o valor 1e-6.

Grave o diagrama de blocos com um nome à sua escolha no directório de

trabalho. A partir daqui, poderá chamar o diagrama de blocos directamente

escrevendo o seu nome na linha de comando do MATLAB e fazendo “return”.

O diagrama de blocos é aberto mas não é efectuada qualquer simulação.

Para efectuar a simulação clique no botão na régua de comandos da

janela de projecto ou dê o comando sim(‘nome do diagrama”) na linha de

comandos do MATLAB. Se quiser também pode dar o comando sim(“nome

do diagrama”,”tempo de simulação”). Use o help para ver os argumentos do

comando sim (help sim). Habitue-se a fazer isto com outros comandos.

2. Modelo de uma população isolada No segundo problema vamos considerar um modelo não linear de 1ª ordem,

isto é, modelado por uma única equação em que a derivada é igual a uma

função não linear da incógnita. Este exemplo é aproveitado para introduzir o

tema da estimação de parâmetros.

Um modelo possível para o crescimento de uma população isolada, sem

qualquer limitação nos recursos disponíveis é dado pela equação diferencial1

)()( txKtxdtd

M=

em que MK é uma constante. Este modelo prevê um crescimento

exponencial da população. Se os recursos (por exemplo o alimento

disponível) forem limitados, é razoável supor que a taxa de crescimento da

população diminui quando a população aumenta, e que pode tornar-se

mesmo negativa acima de um determinado valor.

Uma possibilidade é usar o modelo dado pela chamada equação logística2:

1 Este modelo é conhecido como “Malthusiano”, do nome do economista britânico Thomas Malthus (1766-1834) que em 1798 publicou An Essay on the Principle of Population as It affects the Future Improvement of Society, que assumia um crescimento exponencial para a população. 2 Esta equação é conhecida como equação logística ou de Pearl-Verhulst. O Matemático belga Pierre-François Verhulst usou-a num trabalho publicado em 1838 como um possível

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 9

)())(()( txtxMKtxdtd

−= (2-1)

em que K e M são constantes. Relativamente à equação logística responda

às seguintes questões:

2.1. (Em casa) Trace o andamento qualitativo das soluções em função do

tempo. Para tal, determine os pontos de equilíbrio e use os sinais da 1ª e 2ª

derivadas em ordem ao tempo.

2.2. Recorrendo ao SIMULINK e ao MATLAB resolva numericamente a

equação com 1== KM para vários valores da condição inicial. Crie um

diagrama de blocos e um script para efectuar a simulação. Compare com as

soluções qualitativas que obteve em 2.1.

Repare que precisa de um novo bloco, que permita, a partir da entrada x ,

calcular a função xxMKxf )()( −= . Para tal pode usar o bloco fcn do grupo

“User defined functions”.

2.3. Observaram-se os seguintes dados para a área que a população de uma

bactéria ocupa numa placa de Petri à medida que o tempo passa3:

Idade da colónia [dia] Área medida [cm2]

0 0.24

1 2.78

2 13.53

3 36.30

4 47.50

5 49.40

melhoramento ao modelo de Malthus, que previa um crescimento exponencial. No início do séc. XX o biólogo americano Raymond Pearl redescobriu este resultado e popularizou-o. 3 Estes dados foram publicados por H. G. Thornton em Ann. Appl. Biol., 1922, p. 265. Citado em A. Lotka. Elements of Mathematical Biology, Dover (reprint, 1956), p.70. Estas observações corresponderam a médias sobre populações individuais. O livro de Lotka dá ainda dados sobre outros exemplos. Pode ainda ver-se informação complementar, incluindo a solução da equação logística, que se pode obter pelo método de separação de variáveis, em M. Braun. Differential Equations and Their Applications, Springer-Verlag, 2nd ed. 1978, pp. 27-34.

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 10

Pretende-se modelar esta evolução pela equação logística (2-1). Para tal

efectue o seguinte:

a) Escreva um script em MATLAB que permita sobrepor, no mesmo gráfico,

os pontos experimentais e a solução gerada pelo SIMULINK correspondente

a um dado valor dos parâmetros K e M . Tome como condição inicial

24.0)0( =x (a área ocupada pela colónia quando a experiência começa). Por

tentativa e erro tente descobrir os valores de K e M que correspondem à

evolução temporal observada. Repare que é simples ajustar M tendo em

conta a discussão feita em 2.1.

b) Nesta questão pretende-se estimar os valores de K e M que levam a um

ajuste “óptimo” da curva gerada pela solução da equação diferencial (2-1) aos

pontos experimentais. A expressão “óptimo” pode ser entendida em vários

sentidos. Neste caso, iremos considerar como medida da qualidade do ajuste

o erro quadrático entre os valores experimentais e os correspondentes

valores calculados pela solução da equação diferencial (2-1), para K e M

dados, nos mesmos instantes de tempo.

Mais concretamente, seja expx o vector dos valores experimentais obtidos nos

instantes 1, 2 , ,… 5 , e seja sx o vector das amostras da solução numérica

da equação diferencial nos mesmos instantes. Calcule-se o vector dos

desvios sxx −= expε e a soma do quadrado dos desvios εεε T

iiJ ==∑

=

5

1

2 . Esta

quantidade J é uma função da escolha de K e M .

Escreva uma função MATLAB que permita calcular J em função de K e M .

Veja como isto pode ser feito fazendo help function. A sua função deverá ser

chamada como cost(X) em que X é um vector coluna que tem como

componentes K e M .

Suponha em seguida que K e M estão entre um valor mínimo e um valor

máximo. Recorrendo à função para o cálculo de J , escreva um script para

representar graficamente J em função de K e M . Use dois ciclos de for

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 11

para gerar uma grelha de pontos no “espaço” definido pelos intervalos de K e

M . Para cada “ponto” neste espaço (i. e., para cada par de valores de K e

M ) calcule o erro quadrático médio J . Para tal, integre a equação diferencial

com os valores de K e M . Pode obter o vector de amostras simuladas

escolhendo o intervalo de amostragem no bloco Toworkspace.

Após ter gerado matrizes com grelhas para K e M e uma matriz com os

valores de J correspondentes, use o comando mesh para desenhar a

representação tri-dimensional da função J . Use o comando contour para

desenhar as curvas de nível desta função.

A execução deste script implica um tempo que começa a ser apreciável

(depende do número de pontos da grelha que definiu). Pode ter uma

informação do tempo que ainda falta escrevendo o comando waitbar(n/nmax)

no fim do ciclo for externo, em que n é o contador do ciclo e nmax é o número

total de vezes que o ciclo é executado (limite superior de n).

Através da observação da representação gráfica das curvas de nível, vá

restringindo sucessivamente os intervalos de valores que considera para K e

M e repetindo o procedimento anterior para determinar aproximadamente o

mínimo da função (um ponto em torno do qual todas as curvas de nível se

fecham). Repare que, num problema mais complexo, teríamos de usar um

método numérico para obter mínimos de funções.

c) Faça agora a estimativa de K e M usando um método de optimização. Na

alínea anterior escreveu uma function que lhe permite calcular J em função

de K e M . Use a função Qnewt (uma outra possibilidade consiste em usar a

função fminunc da Optimization Toolbox do MATLAB, se estiver disponível)

para calcular os valores de K e M que minimizam J . Como é que esta

estimativa se compara com a que obteve na alínea b)?

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 12

Nota importante: A função Qnewt está disponibilizada na página da

disciplina. Copie para o seu directório de trabalho os ficheiros Qnewt.m,

UNIMIN.m, GRAD.m e f.m. A função Qnewt é chamada do seguinte modo:

Xopt=Qnewt(1e-3, X0, 1e-3, 1e-3); Em que X0 é um vector coluna que contém a estimativa inicial do mínimo e

Xopt é o mínimo calculado.

A função fminunc faz parte da Optimization Toolbox (help optim). Uma

maneira de a chamar consiste em dar os comandos:

Minoptions=optimset('Largescale','off','TolX',1e-9); Xoptimo=fminunc(@cost,Xinicial,Minoptions);

O parâmetro Tolx define a tolerância relativa com que é calculada a

estimativa do argumento X em relação ao qual se faz a optimização. cost é o

nome da function que define o custo a minimizar. Para minimizar a função

definida em cost, o primeiro argumento da função fminunc é @cost.

d) Para verificar o resultado (validar o modelo), simule a equação (2-1) para

os valores de K e M correspondentes ao mínimo de J e sobreponha os

pontos experimentais. Marque os pontos experimentais como círculos (veja o

help do comando plot para ver como fazê-lo) e a resposta “teórica”, com os

valores da estimativa dos parâmetros K e M que obteve na alínea c) como

uma linha contínua.

3. Sistema de 3ª ordem com dependência crítica das condições iniciais Neste problema mostra-se como se pode simular um sistema de 3ª ordem,

i.e., composto por 3 equações diferenciais de 1ª ordem. O exemplo é

aproveitado para introduzir sistemas com um comportamento “pouco habitual”

mas importante: A forma da solução varia muito com uma pequena variação

das condições iniciais.

Considere o sistema de equações diferenciais de 1ª ordem:

+−=

−−=

−=

xyzdtdz

zxyxdtdy

xydtdx

38

28

)(10

(3-1)

Modelação e Simulação 2011/2012 – Guia do Trabalho 1

J. Miranda Lemos – IST – DEEC/Área Científica de Sistemas, Decisão e Controlo 13

Represente o sistema num diagrama de blocos no SIMULINK. Use três

integradores separados. Use o bloco mux do grupo Signal Routing para

transformar os três sinais num único sinal vectorial.

Dê ao parâmetro de tolerância do SIMULINK o valor 1e-9. Simule até 20=t

com os seguintes conjuntos de condições iniciais:

A) 5)0(5)0(000,5)0( === zyx

B) 5)0(5)0(005,5)0( === zyx

Repare que há apenas uma pequena diferença de %1,0 entre as condições

iniciais do estado x .

Usando o conjunto de condições iniciais A), repita agora a simulação com um

parâmetro de tolerância do SIMULINK de 1e-7.

Compare as diferentes simulações que efectuou (perturbando ligeiramente o

parâmetro de tolerância do algoritmo de integração e a condição inicial), quer

no tempo, quer no “espaço” . Comente. Repare que há uma

regularidade4. Qual é?

4 O sistema de equações (3-1) foi introduzido pela primeira vez por E. N. Lorenz em 1963. Este sistema de equações surgiu como um modelo simples da dinâmica da atmosfera. Lorenz observou no entanto que para alguns valores dos parâmetros, embora já sem significado físico, o sistema de equações apresentava um comportamento inesperadamente complexo. Pequenas variações das condições iniciais induziam uma grande variação da solução. Havia no entanto uma regularidade: No espaço as curvas aproximavam-se

sempre da mesma região (denominada “atractor estranho”). Esta observação abriu todo um novo campo para a Matemática e para a Física, relativo aos chamados sistemas com fenómenos de caos. Levou também a que repensássemos o nosso conceito de Complexidade. Quando Lagrange escreveu o seu livro Mecânica Analítica no final do séc. XVIII, o teorema de existência e unicidade de solução de uma equação diferencial levou-o a pensar que Deus conhecia a condição inicial de todas as partículas do Universo e as equações da Mecânica que modelavam o seu movimento. A integração destas equações com as condições iniciais especificadas permitiria a Deus (na concepção de Lagrange) saber todo o passado e todo o futuro. A existência de sistemas caóticos mostrou que as coisas são mais complicadas e que há sistemas em que é preciso ter uma precisão infinita para conseguir prever o futuro. A complexidade não é assim medida apenas pelo “número de partes” de um sistema dado que há sistemas com muito poucas “partes” que podem ter comportamentos muito complexos. Para saber mais sobre as equações de Lorenz ver C. Sparrow (1983). An introduction to the Lorenz equations. IEEE Trans. On Circuits and Systems, CAS-30(8):533-542. Para uma introdução ao sistemas com caos ver o tutorial E. Ott (1981). Strange attractors and chaotic motions of dynamical systems. Review of Modern Physics, 53(4), Part I, 655-671. Ambas estas referências estão disponíveis na documentação complementar da página da disciplina de Modelação e Simulação para o acesso fácil dos alunos com curiosidade no assunto.

[ ]zyx

[ ]zyx