modelação e simulação trabalho de laboratório nº 1 ... · pode ser representada com um...
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