EDOs no SIMULINK

Ver Todos os Exercícios

Teoria

Introdução

E aí, tudo joia? Na aula de hoje vamos aprender como resolver equações diferenciais ordinárias (as EDO’s) no SIMULINK. Se você não se lembra o que é uma EDO, vamos fazer uma revisão vapt-vupt (lembrando que no Responde Aí temos aulas só sobre EDO’s, caso você queira dar uma revisada mais profunda).

Uma EDO é uma equação que envolve uma função, suas derivadas e uma variável independente. Uma EDO de primeira ordem é uma equação desse estilo:

y ' = d y d x = g ( x , y )

onde x é uma variável independente. A solução de uma EDO é a função da equação, no caso, y = f ( x ) . Para encontrar y , integramos y ’ e definimos uma condição inicial para termos uma única solução.

Em uma EDO de primeira ordem, a derivada de maior ordem é a primeira derivada da função. Se uma EDO tem uma derivada segunda, ela é de segunda ordem, e assim por diante.

Resolver EDO’s no SIMULINK permite construir modelos intuitivos representando a EDO e gerar facilmente muitos gráficos além da solução da EDO (por exemplo, além de plotar a função, plotar suas derivadas).

Lembra que eu disse que integramos a derivada da função para encontrá-la? O SIMULINK tem um bloco que faz a integração de um sinal, o Integrator.

O bloco “Integrator”

O bloco “Integrator” pertence à biblioteca Continuous:

Note que o símbolo do bloco é 1 s . Isso porque quando fazemos a transformada de Laplace de uma integral, ela é transformada em 1 s .

Dentre os parâmetros do bloco “Integrator”, está a condição inicial, destacada em vermelho abaixo (“Initial Condition”):

Por padrão, as condições iniciais são nulas. O bloco possui outras propriedades, mas o parâmetro das condições iniciais é o que mais vamos mexer.

E como modelamos uma EDO no SIMULINK? Vamos pegar como exemplo a EDO:

y ˙ = 10 sin ⁡ ( t )

Queremos encontrar y = f ( t ) , considerando condições iniciais nulas. Vamos começar modelando a parte direita da EDO, por isso, adicionamos um bloco “Sine Wave” e um bloco “Gain”, com ganho igual a 10 , em série em um modelo do SIMULINK:

Blocos em série representam multiplicação, logo, os dois blocos acima representam 10 sin ⁡ ( t ) . E 10 sin ⁡ ( t ) é igual a quê? A derivada y ˙ ! Logo, o sinal de saída do diagrama acima é y ˙ , como indicado em vermelho acima (o diagrama deu spoiler).

Para encontrar y , precisamos integrar y ˙ , por isso adicionamos o bloco “Integrator” logo à direita do “Gain”. A saída de “Integrator” será o resultado da integral de y ˙ , isto é, y . Podemos incluir um “Scope” como saída, para fecharmos o diagrama de blocos:

Um “macete” para modelar uma EDO com os blocos do SIMULINK é tentar isolar a derivada de maior ordem na equação, mais ou menos como pensar: “a derivada é igual a o quê?”. Dessa forma, você consegue identificar qual será a entrada do seu modelo, isto é, qual bloco da biblioteca “Source” você vai pegar (“Step”, “Sine Wave”, etc) e em qual ponto (ou quais pontos, como veremos mais pra frente) colocar o “Integrator”.

Vamos ver um exemplo um pouquinho mais complexo. Vamos resolver a EDO:

y ˙ = - 10 y + 2 sin ⁡ ( 4 t )

Com y ( 0 ) = 1 , para 0 ≤ t ≤ 3 .

Já temos a derivada “isolada”: sabemos que y ˙ é igual a - 10 y + 2 sin ⁡ ( 4 t ) . Já podemos também identificar a entrada do modelo: 2 sin ⁡ ( 4 t ) . Por isto, em um modelo em branco no SIMULINK, começamos inserindo um bloco “Sine Wave” e alteramos seus parâmetros “Amplitude” para 2 e “Frequency” (frequência) para 4 :

É a soma de 2 sin ⁡ ( 4 t ) com - 10 y que resulta em y ˙ , logo, inclua um bloco “Add” ao modelo e conecte o bloco “Sine Wave” a uma de suas entradas. Aproveite para já alterar o parâmetro “List of signs” (destacado abaixo), para uma das entradas de “Add” ter um sinal de menos, indicando que ele fará uma subtração.

A saída de “Add” será y ˙ , por isso podemos incluir um “Integrator” e conectá-lo à saída de “Add”. Vamos aproveitar e já alterar a condição inicial para y ( 0 ) = 1 :

A saída de “Integrator” será y , como indicado acima. Para incluirmos os blocos representando o termo - 10 y , precisamos pôr um bloco de saída do modelo para receber y e, em seguida, criar uma ramificação entre o bloco “Integrator” e o bloco de saída, para pegarmos y , multiplicá-lo por 10 e levá-lo à entrada com sinal - de “Add”.

Vamos usar um bloco “Scope” como saída. Em seguida, inserimos um bloco “Gain” e fazemos que seu ganho é igual a 10 :

Dica: você pode rotacionar os blocos no SIMULINK em sentido horário selecionando-os e apertando “Ctrl+R”.

Clique na entrada de “Gain” e conecte-a à flecha entre “Integrator” e “Scope”. Para fazer isto, clique sobre a entrada de “Gain” e arraste. Aparecerá uma flecha vermelha tracejada, você deve conectar a extremidade livre dessa flecha na flecha entre “Integrator” e “Scope”:

Desta forma, além de y “entrar” no “Scope”, ele está sendo “levado” para ser multiplicado pelo ganho de “Gain”.

Para finalizar, conecte a saída de “Gain” à entrada de “Add” restante:

Este é o modelo do SIMULINK da EDO y ˙ = - 10 y + 2 sin ⁡ ( 4 t ) . Alterando o tempo de simulação para 3 e executando a simulação, podemos ver o gráfico de y :

EDO’s de ordem superior

Para modelarmos EDO’s de ordem superior, como de segunda ordem, usaremos blocos “Integrator” em sequência:

Como exemplo, vamos modelar a EDO de segunda ordem:

y ¨ + 2 y ˙ + 5 y = 1

Com condições iniciais nulas.

O primeiro passo é isolar a derivada de maior ordem, isto é, y ¨ . Desta forma, temos que y ¨ = 1 - 2 y ˙ - 5 y .

A entrada do modelo será um bloco “Constant” igual a 1 , o qual será somado a - 2 y ˙ e - 5 y para gerar y ¨ . Por isso, também usaremos um bloco “Add”, cuja saída será y ¨ .

O sinal y ¨ entrará em um bloco “Integrator”, para gerar y ˙ , que entrará em outro “Integrator” para criar y . Desta forma, tem-se o modelo da EDO de segunda ordem abaixo:

O diagrama acima tem as indicações do sinal de saída de alguns blocos, para ajudar a entender como ele representa a EDO.

Deu para perceber que a construção de modelos de EDO’s no SIMULINK é bem intuitiva. Existem algumas estratégias que você vai pegando com o tempo, por isso, tem que praticar bastante! Não deixe de fazer os exercícios que preparei, para ficar craque em modelar EDO’s no SIMULINK ;D

O bloco “Integrator”

EDO’s de ordem superior

Exercícios Resolvidos

Exercício Resolvido #1

Considere u = u ( t ) . Seja a equação diferencial de primeira ordem em u ( t ) , com valor inicial conhecido, u ( 0 ) = 1 .

d u d t + 2 u + 1 = 0

Resolva a equação diferencial utilizando o SIMULINK.

Passo 1

Para resolver uma equação diferencial pelo SIMULINK, a dica é “isolar” a derivada da EDO. Por isso, vamos rearranjar a EDO para:

d u d t = u ' = - 2 u - 1

Desta forma, conseguimos fazer aquele raciocínio: “a derivada é igual a quê?” e descobrimos onde pôr o bloco “Integrator” para obter u ( t ) . Além do mais, isso ajuda a identificar qual o primeiro bloco que colocaremos no modelo, que muito provavelmente virá da biblioteca “Source”.

A resposta do exercício será um gráfico de u ( t ) , por isso, usaremos no modelo um bloco “Scope”.

Passo 2

Olhando a EDO rearranjada, sabemos u ’ é igual a - 2 u - 1 , por isso, vamos começar modelando essa diferença, o lado direito da equação. Em um novo modelo, insira um bloco “Constant” e faça com que ele seja igual a - 1 . Em seguida, insira um bloco “Add” e altere o parâmetro “List of signs” (destacado abaixo), para que ambas as entradas de “Add” tenham um sinal negativo, para fazermos - 2 u - 1 .

Passo 3

O objetivo é que a saída de “Add” seja igual a - 2 u - 1 . E quem é - 2 u - 1 ? É u ’ ! Logo, é à direita de “Add” que incluiremos um bloco “Integrator”, que nos dará u ( t ) . Para isto, vá à biblioteca “Continuous”, insira um bloco “Integrator” ao modelo e conecte sua entrada à saída de “Add”, como na figura abaixo:

Não sei se você reparou, mas eu anotei ali no modelo, acima da flecha entre “Add” e “Integrator”, um u ’ , pra dizer que aquele sinal é a derivada de u . Você pode fazer isso clicando no botão “Annotation” (destacado em azul acima), na lateral esquerda da janela onde construímos os modelos, e em seguida clicando sobre o lugar onde você quer fazer a anotação. Daí, é só digitar o que você quiser.

Esse é um jeito bom de não se perder nos diagramas de blocos das EDOs.

Vamos alterar a condição inicial para y ( 0 ) = 1 , acessando as propriedades de “Integrator” e mudando o parâmetro “Initial Condition” de 0 para 1 :

Passo 4

A saída de “Integrator” será u ( t ) , a solução da nossa EDO. Como queremos gerar o gráfico dela, vamos inserir um bloco “Scope”. Conecte a saída de “Integrator” a entrada de “Scope”:

Agora que temos u ( t ) , podemos criar a componente 2 u da expressão - 2 u - 1 . Para isto, insira um bloco “Gain”, da biblioteca “Math Operations”, altere seu ganho para 2 e conecte sua entrada ao sinal saindo de “Integrator”. Você fará isto clicando sobre a entrada de “Gain” e arrastando. Aparecerá um flecha vermelha:

Conecte a extremidade livre à seta entre “Integrator” e “Scope”. Desta forma, u ( t ) vai para “Scope” e “Gain” simultaneamente. Em seguida, conecte a saída de “Gain” à entrada disponível de “Add”. Você estará levando 2 u para fazer a diferença - 2 u - 1 :

Pronto! A EDO está modelada no SIMULINK e podemos obter sua solução, em forma de gráfico, rodando o programa.

Resposta

Exercício Resolvido #2

Considere o circuito elétrico abaixo:

O circuito possui um resistor e um capacitor em série alimentados por uma fonte constante. O capacitor possui tensão inicial v 0 = 10   V .

A equação diferencial que modela o circuito RC é:

v ' + 1 R C v = 1 R C E

Deseja-se obter a resposta v ( t ) × t para t ≥ 0 , por meio do SIMULINK.

Passo 1

O exercício pede encontrarmos v ( t ) solucionado a EDO que modela o curcuito RC usando o SIMULINK. Uma dica para resolver uma EDO pelo SIMULINK é deixar a derivada isolada no lado esquerdo da equação. Por isso, vamos rearranjar a EDO para:

v ' = 1 R C E - 1 R C v = 1 R C ( E - v )

Com isso, identificamos a expressão que é igual à derivada, montamos o diagrama de blocos que a representa e, na saída desse diagrama, incluímos um bloco “Integrator” para ter v ( t ) . Este v ( t ) será conduzido a um bloco “Scope”, para vermos seu gráfico.

Passo 2

Sabendo que E = 5   V , R = 1000   Ω e C = 1   m F = 0,001   F , a EDO se torna:

v ' = 1 R C E - v = 1 1000 ∙ 0,001 5 - v = 5 - v

Logo, v ’ é igual a 5 - v . Vamos começar modelando essa diferença. Em um novo modelo, insira um bloco “Constant” e faça com que ele seja igual a 5 . Em seguida, insira um bloco “Add” e altere o parâmetro “List of signs” (destacado abaixo) para + - , de forma que “Add” tenha uma entrada positiva e outra negativa. Conecte “Constant” à entrada positiva:

Passo 3

A saída de “Add” será igual a 5 - v , que é igual a v ’ . Por isso, colocaremos à direita de “Add” um bloco “Integrator”, para obter v ( t ) . Para isto, vá à biblioteca “Continuous”, insira um bloco “Integrator” ao modelo e conecte sua entrada à saída de “Add”, como na figura abaixo:

Precisamos mudar a condição inicial para v ( 0 ) = 1 0 . Acesse as propriedades de “Integrator” e altere o parâmetro “Initial Condition” de 0 para 1 0 :

Passo 4

A saída de “Integrator” será v ( t ) , a solução pedida pelo enunciado. Para gerar o gráfico dela, insira um bloco “Scope” e conecte a saída de “Integrator” à entrada de “Scope”:

Leve v ( t ) para a entrada negativa de “Add”, para concluir a diferença 5 - v . Para isto, clique sobre a entrada negativa de “Add” e arraste. Aparecerá uma flecha vermelha tracejada, cuja extremidade livre você deve conectar à seta entre “Integrator” e “Scope”:

Pronto! Já montamos o diagrama de blocos que nos dará v ( t ) . Paa ver a curva de v ( t ) , execute o programa e clique duas vezes sobre o bloco “Scope”.

Resposta

Exercício Resolvido #3

A seguinte equação não tem solução analítica embora seja linear.

x ' + x = tan ⁡ ( t ) , x 0 = 0

A solução aproximada, que é pouco precisa para valores altos de t , é:

x t = 1 3 t 3 - t 2 + 3 t - 3 + 3 e - t

Crie um modelo no SIMULINK para resolver esse problema, e compare a solução com a solução aproximada em 0 ≤ t ≤ 1 .

Passo 1

Neste exercício, vamos solucionar a EDO usando o SIMULINK e vamos comparar a solução com a solução aproximada.

Para resolver uma equação diferencial pelo SIMULINK, a dica é “isolar” a derivada da EDO. Por isso, vamos rearranjar a EDO para:

x ' = tan ⁡ ( t ) - x

Desta forma, podemos imaginar: “a derivada é igual a quê?”, localizando onde colocaremos o bloco “Integrator” que nos dará x ( t ) .

Vamos enviar a solução da EDO para um bloco “To Workspace”, para que possamos plotar o resultado junto com a solução aproximada usando o Command Window do MATLAB.

Passo 2

Sabemos que a derivada é igual a tan ⁡ ( t ) - x , por isso, vamos começar montando o lado direito da equação. Para criar o termo t a n ( t ) , vamos precisar de dois blocos novos: um bloco “Clock” e um bloco “Trigonometric Function”.

Vá à biblioteca “Sources”, encontre o bloco “Clock” e insira-o em um novo modelo. O bloco “Clock” fornece o tempo de simulação, de forma que podemos usá-lo para construir funções dependentes do tempo. Em outras palavras, ele representará o t de t a n ( t ) .

O bloco “Trigonometric Function pertence à biblioteca “Math Operations” e ele calcula a função trigonométrica de seu sinal de entrada. Insira um desses blocos no modelo e conecte sua entrada à “Clock”:

Para transformar o “Trigonometric Function” em uma função tangente, clique duas vezes sobre ele para acessar suas propriedades. A propriedade “Function”, destacada abaixo, contém uma lista de funções trigonométricas. Selecione a opção tan e clique em “OK”.

Note que o bloco “Trigonometric Function” mudou de cara:

Passo 3

Para fazer a diferença tan ⁡ ( t ) - x , insira um bloco “Add” e altere o parâmetro “List of signs” (destacado abaixo), para que uma das entradas de “Add” tenha um sinal negativo, para receber o x . Conecte a saída de “Trigonometric Function” à entrada com sinal + de “Add”:

Faremos com que a saída de “Add” seja igual a tan ⁡ ( t ) - x . E tan ⁡ ( t ) - x é igual a o quê? A x ’ ! E é x ’ que devemos integrar para encontrar x ( t ) . Por isso, insira um bloco “Integrator”, pertencente à biblioteca “Continuous”, à direita de “Add” e conecte sua entrada à saída de “Add”, como na figura abaixo:

Como a condição inicial da EDO é nula, não precisamos mexer nos parâmetros de “Integrator”, pois o padrão do bloco é ter condição inicial nula.

Passo 4

A saída de “Integrator” será x ( t ) , a solução da nossa EDO. Como queremos gerar o gráfico dela no MATLAB (pois ficará mais fácil de plotar a solução encontrada no SIMULINK com a solução aproximada), vamos inserir um bloco “To Workspace”. Este bloco serve para levar para o “Workspace” do MATLAB os resultados da simulação, permitindo manipulá-los no “Command Window”. Conecte a saída de “Integrator” a entrada de “To Workspace”:

Se você quiser, você pode alterar o nome da variável que receberá o resultado da simulação no “Workspace” do MATLAB, clicando duas vezes sobre o bloco “To Workspace” e mexendo na propriedade “Variable name”. Eu fiz com que minha variável se chamasse x _ s i m .

Agora que temos x , podemos fechar nosso diagrama, conectando a entrada com sinal de de “Add” com a seta entre “Integrator” e “To Workspace”:

Passo 5

Troque o tempo de simulação para 1 e rode o programa. Vá ao MATLAB e olhe o “Workspace”. Você verá que apareceram duas variáveis: t o u t e x _ s i m , que estão aí graças ao bloco “To Workspace”. t o u t é um vetor que contém o tempo de simulação, indo de 0 a 1 . Já x _ s i m contém o resultado da simulação do SIMULINK.

Para gerar o gráfico com a solução da EDO obtida pelo SIMULINK e a solução aproximada, abra um script novo no MATLAB e digite as seguintes linhas de código:

Na primeira linha, criamos um vetor t igual ao vetor t o u t .

Na segunda linha, calculamos x t = 1 3 t 3 - t 2 + 3 t - 3 + 3 e - t para cada elemento do vetor t e armazenamos o resultado no vetor x _ a p .

Finalmente, na última linha, plotamos as curvas da solução obtida pelo SIMULINK e da solução aproximada. Execute o script e você terá o gráfico.

Quando você executar o programa, o MATLAB vai te pedir para salvar o script. Se for salvá-lo na mesma pasta onde está o arquivo do seu modelo SIMULINK, dê um nome diferente, para não haver conflito.

Resposta

A curva azul é a solução obtida pelo SIMULINK e a curva vermelha, a solução aproximada.

Exercício Resolvido #4

O nível h de um tanque de área de seção transversal A , com uma válvula de saída com resistência R , é dado por:

d h ( t ) d t = 1 A f E t - h ( t ) R

Onde f E t representa a vazão de entrada.

Usando o SIMULINK, encontre h ( t ) , sabendo que inicialmente o tanque está com um nível h t = 0 = h 0 = 6   m . Considere R = 1   h / m 2 , A = 2   m 2 e que a vazão de entrada equivale a uma função degrau onde f E t = 10   m 3 / h .

Passo 1

Usaremos o SIMULINK para encontrar a solução da equação diferencial do enunciado e plotar seu gráfico. A solução é h ( t ) e corresponde ao nível de um tanque em função do tempo, em horas.

A equação diferencial dada pelo enunciado já está com a derivada isolada no lado esquerdo, facilitando o raciocínio: “a derivada é igual a o quê?”, nos ajudando a identificar onde pôr o boco “Integrator” que nos dará h ( t ) . A saída de “Integrator” será conduzida a um bloco “Scope”, que nos dará o gráfico de h ( t ) .

Passo 2

Vamos atualizar a equação diferencial com as constantes dadas no enunciado:

d h ( t ) d t = h ' = 1 2 f E t - h t 1 = 1 2 f E t - h t

Vemos que a derivada h ’ é igual a 1 2 f E t - h t , por isso, vamos começar modelando o lado direito da equação. Em novo modelo do SIMULINK, insira um bloco “Step” (representando f E t ) e um bloco “Add”. Para o bloco “Step”, mude o parâmetro “Final value” para 10 (destacado), para ele ter o valor da vazão de entrada.

No bloco “Add”, altere o parâmetro “List of signs” (destacado abaixo), para que uma das entradas de “Add” tenha um sinal negativo, para receber o h t mais pra frente. Conecte a saída de “Step” à entrada com sinal + de “Add”:

Passo 3

A saída de “Add” será a diferença f E t - h t . Para que esta diferença seja igual a h ’ , ele deve ser multiplicada por 1 2 . Por isso, vamos colocar um bloco “Gain” à direita de “Add”, fazer com que seu ganho seja igual a ½ e conectar sua entrada à saída de “Add”:

A saída de “Gain” será a derivada h ’ , por isso, vamos inserir um bloco “Integrator” à sua direita e conectá-los. Altere o parâmetro “Initial Condition” de “Integrator” para 6 :

Passo 4

A saída de “Integrator” é a solução da equação diferencial h ( t ) . Para gerarmos o seu gráfico, insira um bloco “Scope” e conecte-o a “Integrator”:

Agora que temos h ( t ) , podemos criar o termo h t da diferença f E t - h t . Para isto, vamos usar um bloco novo, o “Sqrt”, da biblioteca “Math Operations”, que calcula a raiz quadrada de um sinal.

Insira-o no modelo e conecte sua entrada à seta entre o bloco “Integrator” e “Scope”:

Dessa forma, o sinal de h ( t ) vai simultaneamente para “Scope” e para “Sqrt”. “Sqrt” vai nos dar em sua saída h t , por isso, conecte a saída de “Sqrt” à entrada negativa do bloco “Add”, para obtermos f E t - h t :

O diagrama de blocos representando a equação diferencial está pronto! Para vermos o gráfico de h ( t ) , execute o programa. Como o enunciado não especificou o tempo da simulação, faremos com que seja o padrão de 10 mesmo. Em seguida, clique duas vezes sobre “Scope” para ver o gráfico.

Resposta

Exercício Resolvido #5

Considere o sistema massa-mola abaixo:

A posição do bloco de massa m = 0,5   k g é representada por x , sua velocidade por v e sua aceleração por a . As equações de movimento da Física nos dizem que v = d x d t e a = d v d t = d 2 x d t 2 , onde t é o tempo.

Pela 2ª lei de Newton, temos que a aceleração do bloco é dada por:

a = d 2 x d t 2 = - k m x

Onde k é a rigidez da mola e é igual a 700   N / m .

A energia potencial E p do sistema é dada por:

E p = 1 2 k x 2

E a energia cinética E c :

E c = 1 2 m v 2

Considerando que o bloco parte do repouso, de uma posição inicial x 0 = 0,2   m , utilize o SIMULINK para:

  1. Encontrar a solução de a = d 2 x d t 2 = - k m x , para o intervalo de tempo 0 ≤ t ≤ 2   s ;
  2. Gerar os gráficos da energia potencial e da energia cinética.

Passo 1

Neste exercício, resolveremos uma EDO de segunda ordem, correspondendo à equação que calcula a aceleração pela 2ª lei de Newton. Substituindo m = 0,5   k g e k = 700   N / m na EDO, temos:

a = d 2 x d t 2 = x ' ' = - k m x = - 700 0,5 x = - 1400 x

Na letra a do exercício, resolveremos a EDO acima, que nos dará x , cujo gráfico iremos plotar usando um bloco “Scope”.

A partir do diagrama construído para resolver a letra a , faremos a letra b , pois o diagrama nos permitirá calcular as energias potencial e cinética do sistema. Ambas as energias também serão plotadas usando um bloco “Scope”.

Passo 2

Vamos começar a solucionar a EDO de segunda ordem. O enunciado no disse que v = d x d t e a = d v d t = d 2 x d t 2 , logo:

v = ∫ a d t

x = ∫ v d t

Com essas informações podemos construir um diagrama inicial, inserindo em um novo modelo dois blocos “Integrator” e um bloco “Scope”, da seguinte forma:

O primeiro “Integrator” receberá um sinal representando a aceleração a , fará sua integração e nos dará a velocidade v . v entrará em um segundo bloco “Integrator” para obtermos x , que é conduzido a um bloco “Scope” para plotarmos seu gráfico mais pra frente.

O enunciado diz que o bloco parte do repouso, indicando que a velocidade inicial é 0 . Por isso, não precisamos alterar o parâmetro “Initial condition” do “Integrator” que recebe a , pois o padrão do bloco “Integrator” é ter condição inicial nula.

Contudo, este não é o caso do segundo “Integrator”, que recebe o sinal de velocidade v . O enunciado diz que o bloco parte da posição x 0 = 0,2   m , por isso, temos que alterar o parâmetro “Initial condition” do “Integrator” que integra a velocidade e nos dá a posição x (destacado abaixo):

Passo 3

Com esse diagrama inicial, podemos partir para a EDO de segunda ordem a = x ' ' = - 1400 x para obtermos a aceleração a . Insira no modelo um bloco “Gain” e altere seu ganho para - 1400 :

Queremos criar o termo - 1400 x , por isso, conecte a entrada de “Gain” à seta entre “Integrator1” e “Scope”:

A saída de “Gain” será - 1400 x . E quam é igual a - 1400 x ? A aceleração a ! Por isso, conecte a saída de “Gain” à entrada do primeiro “Integrator”, que ainda está vazia:

O diagrama que nos dá a solução da letra a do exercício está pronto! Com ele, podemos obter o gráfico de x , que é a solução de a = d 2 x d t 2 = - k m x . Para isto, altere o tempo de simulação de 10 para 2 , rode o programa e clique duas vezes sobre o “Scope” para ver o gráfico:

Pronto, letra a resolvida =)

Passo 4

A letra b do exercício pede para gerarmos os gráficos das energias potencial e cinética. A energia potencial é dada por E p = 1 2 k x 2 , com k = 700   N / m . Logo, E p = 1 2 700 x 2 = 350 x 2 . Para obtermos E p a partir do diagrama construído para resolver a letra a , vamos começar obtendo x 2 . Para isto, usaremos o bloco “Product”, da biblioteca “Math Operations”, e faremos com que o sinal de x entre em suas duas entradas:

Para calcular E p , insira um bloco “Gain”, faça-o ter um ganho igual a 350 e conecte sua entrada à saída de “Product”:

A saída do bloco “Gain1” será a energia potencial E p .

Passo 5

A energia cinética é dada por E c = 1 2 m v 2 , com m = 0,5   k g . Logo, E c = 1 2 0,5 v 2 = 0,25 v 2 . Para obtermos E c a partir do diagrama construído para resolver a letra a , vamos começar obtendo v 2 . Para isto, usaremos outro bloco “Product”, que receberá o sinal de v em suas duas entradas:

Para calcular E c , insira outro bloco “Gain”, faça-o ter um ganho igual a 0,25 e conecte sua entrada à saída de “Product1”:

A saída do bloco “Gain2” será a energia cinética E c .

Vamos plotar as curvas de E p e E c no mesmo gráfico, conectando as duas saídas que dão de E p e E c a cada uma das entradas de um bloco “Mux”. A saída de “Mux” se conectará a um bloco “Scope”:

Como E p está conectado à entrada de cima de “Mux”, sua curva será amarela. Já a curva de E c será rosa, pois E c entra na entrada na de baixo de “Mux”.

Execute o programa e você terá o gráfico de ambas as energias.

Resposta

  1. A solução de a = d 2 x d t 2 = - k m x é:
  2. A curva da energia potencial é a onda amarela e a curva da energia cinética é rosa.

Exercício Resolvido #6

Modele a seguinte equação diferencial e observe o gráfico:

y ' ' + 4 y ' + 5 y = 3

y ' 0 = y 0 = 0

Passo 1

Neste exercício, vamos resolver uma EDO de segunda ordem pelo SIMULINK. Comece pela dica de isolar a derivada de maior ordem da EDO:

y ' ' = 3 - 4 y ' - 5 y

Desta forma, fica mais fácil identificar onde colocaremos o bloco “Integrator” (nesse caso, utilizaremos dois, pois a EDO tem uma segunda derivada) e qual bloco da biblioteca “Sources” utlizaremos para começar a construir o modelo.

O primeiro bloco “Integrator” nos dará y ’ e o segundo, y , que é a solução da EDO.

Ao final, geraremos o gráfico de y usando um bloco “Scope”.

Passo 2

Vamos começar modelando o lado direito da EDO: 3 - 4 y ' - 5 y . O 3 pode ser modelado por um bloco “Constant”, da biblioteca “Sources”, e as operações de subtração serão feitas por meio de um bloco “Add”.

Faça com que o bloco “Constant” seja igual a 3 . Por padrão, o bloco “Add” possui duas entradas positivas. Altere seus parâmetros para que ele passe a ter uma entrada positiva e duas negativas, trocando o + + por + - - no parâmetro “List of signs”:

Conecte “Constant” à entrada positiva de “Add”. As entradas negativas de “Add” receberão 4 y ’ e 5 y mais para frente, por isso, a saída de “Add” será y ’ ’ .

Passo 3

Para obter y ’ , insira um bloco “Integrator” e conecte a saída de “Add” à entrada deste bloco. Desta forma, estaremos integrando y ’ ’ para gerar y ’ .

Como y ' 0 = 0 , não precisamos alterar o parâmetro “Initial condition” de “Integrator”, pois as condições iniciais são nulas por padrão.

Agora que temos y ’ , vamos inserir mais um bloco “Integrator” para obter y . Coloque-o à direita do primeiro “Integrator” inserido e conecte-os:

Novamente, não precisamos mudar os parâmetros do segundo “Integrator” inserido, pois y 0 = 0 e por padrão as condições iniciais de “Integrator” são nulas.

Insira um bloco “Scope” e conecte sua entrada à saída de “Integrator1”, para que tenhamos o gráfico de y .

Passo 4

Vamos terminar de modelar o lado direito da EDO: 3 - 4 y ' - 5 y , começando por 4 y ’ . Insira um bloco “Gain” no modelo e altere seu ganho para 4 . Em seguida, conecte sua entrada à flecha entre os dois blocos “Integrator” (pois é ali que temos o sinal representando y ’ ) . Conecte a saída de “Gain” a uma das entradas negativas de “Add”:

Para modelar 5 y , o procedimento é igualzinho. Insira outro bloco “Gain” e mude o ganho para 5 . Então, conecte a entrada desse “Gain” igual a 5 à flecha conectando o bloco “Integrator1” a “Scope”, pois é onde temos o sinal de y . Para finalizar o modelo, conecte a saída de “Gain1” à última entrada negativa de “Add”:

Voilà! EDO modelada! Para ver o gráfico de y , basta rodar a simulação.

Resposta

Exercício Resolvido #7

A seguinte equação descreve ao temperatura T ( t ) de um certo objeto imerso em um líquido com temperatura constante T b .

10 d T d t + T = T b

Suponha que a temperatura inicial do objeto é T 0 = 21   ° C e a temperatura do líquido é   T b = 77   ° C . Utilizando o SIMULINK:

  1. Plote a temperatura do objeto T ( t ) em função do tempo;
  2. Em quanto tempo a temperatura do objeto atingirá a temperatura do líquido?

Passo 1

Neste exercício, resolveremos a EDO para encontrar T ( t ) usando o SIMULINK. Geraremos o gráfico de T ( t ) para resolver a letra a e usaremos o gráfico para responder a letra b.

Para resolver uma EDO no SIMULINK, a dica é isolar a derivada de maior ordem da EDO, logo:

d T d t = T ' = 1 10 T b - T

Desta forma, conseguimos identificar onde colocaremos o bloco “Integrator” e qual bloco da biblioteca “Sources” podemos usar para começar a modelar a EDO.

Passo 2

Vamos começar modelando a diferença T b - T . Em um novo modelo do SIMULINK, insira um bloco “Constant” e faça com que seu valor seja igual a T b = 77   ° C . Em seguida, insira um bloco “Add” e altere seus parâmetros, de forma que ele tenha um entrada positiva e outra negativa:

O bloco “Add” receberá o sinal de T mais para frente, por isso, a saída de “Add” será T b - T .

Para termos 1 10 T b - T , insira um bloco “Gain”, faça com que seu ganho seja igual a 1 10 = 0,1 e conecte sua entrada à saída de “Add”:

A saída de “Gain” será 1 10 T b - T . E quem é igual 1 10 T b - T ? É T ’ ! Por isso, a saída de “Gain” será igual à derivada da nossa EDO.

Passo 3

Isso significa que temos que adicionar um bloco “Integrator” à direita de “Gain” e conectar a saída de “Gain” à entrada de “Integrator”. Desta forma, “Integrator” nos dará T . Não esqueça de mudar o parâmetro “Initial condition” de “Integrator” de 0 para 21 , pois T 0 = 21   ° C .

Para termos o gráfico de T ( t ) , insira um bloco “Scope” e conecte-o a “Integrator”:

Passo 4

Para finalizar o modelo, leve o sinal de T até a entrada negativa de “Add”:

A EDO está modelada! Vamos ver o gráfico de T ( t ) , executando a simulação e clicando duas vezes sobre “Scope”:

Rodei a simulação para 10   s . Contudo, note que o eixo vertical do gráfico vai só até 60 e na letra b queremos saber quanto tempo o objeto demora para atingir a temperatura do líquido, isto é, 77   ° C . Temos que aumentar o tempo de simulação para que a curva do gráfico atinja essa temperatura. Aumente o tempo para 30   s :

Agora o eixo vertical vai até 80 , pode ser que agora encontremos a temperatura de 77   ° C .

Passo 5

Para vermos os valores da curva, na janela do “Scope”, clique em “Try Time Scope” e o use o “Cursor Measurements”:

Leve o cursor 1 até o início da curva, onde teremos T ( 0 ) = 21 (destacado em amarelo abaixo). Arraste o cursor 2 até o final da curva para vermos a temperatura do objeto em 30   s (destacado em vermelho abaixo).

Note que T 30 = 74,212 e queremos saber o tempo que demora para que o objeto tenha um temperatura igual a 77 . Por isso, devemos aumentar o tempo de simulação até que consigamos que o cursor 2 nos retorne um valor igual ou muito próximo de 77 .

Passo 6

Sem fechar a janela do “Scope” com o gráfico e os cursores, aumente o tempo de simulação e rode o programa novamente. O gráfico se atualizará automaticamente. Faça esse procedimento até que o cursor 2 retorne 77 .

Eu fui aumentando o tempo de simulação até 120   s , quando finalmente encontrei o valor 77 (destacado em vermelho abaixo):

O tempo que o objeto demora para que sua temperatura atinja 77   ° C é dado pelo campo destacado em azul acima: 116,587   s .

Resposta

  1. Gráfico de T ( t ) :
  2. A temperatura do objeto atinge T b = 77   ° C em 116,587   s .

Exercício Resolvido #8

Essa atividade consiste em resolver a equação diferencial que representa a dinâmica de um sistema massa-mola-amortecedor não linear. Um sistema massa mola-amortecedor não linear é representado pelas seguinte equação diferencial:

x ' ' t + 2 x ' 2 t + 3 ln ⁡ x ( t ) = u ( t )

Onde x é a posição da massa e u é a força aplicada na massa.

Simule o sistema para a condição inicial x 0 = 0 ,   1   m e x ’ 0 = 0   m / s e para a força u ( t ) variando na forma de um degrau de amplitude igual a 50   N , no intervalo de tempo entre 0 e 10 segundos. Apresente os gráficos da posição, velocidade e força.

Passo 1

Neste exercício, resolveremos uma equação diferencial de 2ª ordem não-linear usando o SIMULINK. Apesar de a equação ser não-linear, a dica de isolar a derivada de maior ordem ainda está valendo:

x ' ' t = u t - 2 x ' 2 t - 3 ln ⁡ x ( t )

Desta forma, identificamos onde colocaremos os dois blocos “Integrator” que precisamos para encontrar x ( t ) (usaremos um bloco “Integrator” para integrar x ' ' ( t ) e obter x ' ( t ) ; e outro “Integrator” que receberá o x ' ( t ) , o integrará e nos dará x ( t ) ) e por onde começamos a construir o diagrama de blocos.

O enunciado pede para plotarmos os gráficos da posição, da velocidade e da força, ou seja, os gráficos de x ( t ) , x ' ( t ) e u ( t ) , respectivamente. Para gerarmos os gráficos pedidos pelo enunciado, usaremos três blocos “Scope”, uma para cada gráfico.

Passo 2

Vamos começar o diagrama pelo lado direito da equação: u t - 2 x ' 2 t - 3 ln ⁡ x ( t ) , mais especificamente por u ( t ) . u ( t ) é um degrau de amplitude 50 , por isso, em um modelo novo, insira um bloco “Step” e altere sua propriedade “Final value” para 50 .

Em seguida, insira um bloco “Add” e troque sua propriedade “List of signs” de + + por + - - , para que “Add” tenha três entradas, uma com sinal + as outras duas com sinal - . Conecte o “Step” à entrada positiva de “Add”:

As outras duas entradas de “Add” receberão 2 x ' 2 t e 3 ln ⁡ x ( t ) , portanto, a saída de “Add” será igual a u t - 2 x ' 2 t - 3 ln ⁡ x ( t ) , que é igual a x ' ' ( t ) . Logo, a saída de “Add” será x ' ' ( t ) e é nele que devemos conectar um bloco “Integrator”.

Passo 3

Insira um bloco “Integrator” no modelo e conecte sua entrada à saída de “Add”:

Este bloco “Integrator” integrará x ' ' ( t ) e nos dará x ' ( t ) . Como x ’ 0 = 0 , não precisamos alterar a propriedade “Initial condition” de “Integrator”, pois por padrão ela já é igual a 0 .

Para obter x ( t ) , insira outro bloco “Integrator” e conecte sua entrada à saída do primeiro bloco “Integrator”. Em outras palavras, o segundo bloco “Integrator” receberá x ' ( t ) , o integrará e fornecerá x ( t ) . Como x 0 = 0,1 , mude a propriedade “Initial condition” do “Integrator” que calculará x ( t ) (destacado abaixo) para esse valor:

Para gerar o gráfico de x ( t ) , insira um bloco “Scope” e conecte-o ao “Integrator” que calcula a posição x ( t ) :

Passo 4

Precisamos terminar de modelar o lado direito da equação: u t - 2 x ' 2 t - 3 ln ⁡ x ( t ) . Vamos começar por 2 x ' 2 t . Para calcular x ' 2 t , insira um bloco “Product” e faça com que suas duas entradas recebam x ’ ( t ) , conectando cada entrada à flecha entre os dois blocos “Integrator” (que corresponde ao sinal de x ’ ( t ) ):

Em seguida, insira um bloco “Gain”, faça com que seu ganho seja igual a 2 e conecte sua entrada à saída de “Product”. Conecte a saída de “Gain” com uma das entradas negativas de “Add”. Dessa forma, já temos u t - 2 x ' 2 t :

Passo 5

Vamos modelar o termo 3 ln ⁡ x ( t ) . Para calcular ln ⁡ x ( t ) , usaremos o bloco Math Function, da biblioteca “Math Operations”:

Este bloco aplica uma função matemática em sua entrada e retorna o resultado. Ele inclui funções como exponenciação, módulo e, o que interessa pra gente, logaritmo. Para calcular ln ⁡ x ( t ) , conecte a entrada do bloco “Math Function” à flecha entre “Integrator1” e “Scope” (que representa o sinal de x ( t ) ) e altere a propriedade “Function” do bloco “Math Function” para l o g :

No SIMULINK, assim como no MATLAB, o logaritmo natural, isto é, o l n , é representado por l o g . Quando queremos calcular o logaritmo na base 10 de algum número, usamos l o g 10 (repare que tem essa opção também no prâmetro “Function”).

Quando você fizer a alteração, note que o bloco “Math Funtion” muda de cara, passando a ter um l n dentro dele.

Para terminar o termo 3 ln ⁡ x ( t ) , insira outro bloco “Gain” e faça com que seu ganho seja igual a 3 . Em seguida, conecte a entrada de “Gain” com ganho 3 à saída de “Math Function” e sua saída, à entrada negativa restante de “Add”:

Pronto! A equação diferencial está modelada!

Passo 6

No diagrama atual, conseguimos apenas gerar o gráfico de x ( t ) . Para plotar x ’ ( t ) e u ( t ) , insira mais dois blocos “Scope” e conecte um ao sinal de u ( t ) e outro ao sinal de x ’ ( t ) :

O enunciado pediu para simularmos o sistema de 0 a 10   s , que já é o tempo de simulação padrão do SIMULINK. Por isso, não precisamos alterá-lo e já podemos executar o programa para vermos os gráficos de u ( t ) , x ’ ( t ) e x ( t ) .

Resposta

Gráfico da posição x ( t )

Gráfico da velocidade x ’ ( t )

Gráfico da força u ( t )