O Circuito de Cua Segundo Exercício Programa MAP32 Para Engenaria Elétrica Entrega: até 22 de Juno de 207 O circuito de Cua O circuito de Cua é um circuito elétrico simples formado por 2 capacitores lineares (C e C 2 ), um resistor linear (R), um indutor linear (L) e um resistor não linear controlado pela tensão (N R ), conforme a gura abaixo O resistor não linear N R, conecido como diodo de Cua, é denido de forma linear por pedaços, isto é, dependendo da tensão ele fornece uma resistência diferente A corrente de N R é denida por G b V + (G b G a )E, se V E g(v ) = G a V, se E < V < E G b V + (G a G b )E, se V E onde G a < 0 e G b > 0 são inclinações das curvas da relação tensão (V ) versus corrente (i) e E > 0 é um valor de tensão de corte para mudança de regime, conforme o gráco abaixo Usando as leis de Kirco para esse circuito é possível deduzirmos o seguinte sistema de equações diferenciais para as tensões nos capacitores (V C e V C2 ) e a corrente no indutor (I L ), V C = V C2 = (V C2 V C ) g(v C ), RC C (V C V C2 ) + I L, RC 2 C 2 I L = L V C 2
O interessante desse circuito é que ele é simples de ser montado (veja a referência [] para um exemplo dos componentes necessários) e dene um sistema dinâmico caótico, para o qual pequenas variações nos parâmetros e condições iniciais podem levar a soluções bastante distintas! 2 Tarefa O objetivo deste exercício computacional é resolver numericamente o sistema dinâmica do circuito de Cua para diversos cenários usando o método Runge-Kutta Felberg descrito a seguir As analises e resultados obtidos devem ser organizados em um relatório que deve minimamente discutir os problemas estudados e os resultados obtidos ˆ O exercício deve ser feito em linguagem C ˆ O exercício pode ser feito em duplas, mas sempre com alguém da mesma área - Elétrica (não necessariamente da mesma turma) ˆ Apenas um aluno deve entregar o exercício, denido por ordem alfabética, destacando no relatório e código o nome de ambos os alunos ˆ A entrega deve conter o relatório (em pdf), contendo a análise do problema estudado, e o código usado para as simulações computacionais (arquivos c) A entrega deve ser feita em um arquivo compactado único Para o relatório é importante incluir grácos com a evolução das variáveis resolvidas ao longo do tempo e os respectivos retratos de fases (trajetórias do sistema) Os retratos de fase podem ser bidimensionais (considerando um corte contemplando variáveis duas a duas) ou tridimensional (com visualização sob perspectiva 3D) O seu código deve estar bem comentado e estruturado A entrada e saída devem ser feitas de forma a evitar que usuário tena que digitar muitos parâmetros de entrada (você pode usar um menu de escola de testes ou entrada de parâmetros por arquivo de texto) e facilitando a análise dos resultados Inclua qualquer arquivo adicional necessário para o seu programa no arquivo compactado a ser entregue Você deve resolver tanto os exercícios relativos à aplicação, sobre o circuito de Cua, quanto os testes descritos mais adiante na parte do método RKF45 3 Experimentos Para os experimentos vamos considerar os seguintes parâmetros xados: ˆ C = 0 nf ˆ C 2 = 00 nf ˆ L = 8 mh Para o resistor não linear considerar ˆ E = 739304 V, ˆ G a = 50/66 ms, ˆ G b = 9/22 ms Para simular um comportamento passível de ser implementado sicamente, o resistor não linear precisa de parâmetros adicionais para manter o sistema dentro de tensões realizáveis Considere que a equação denida anteriormente para o resistor não linear é válida para tensões em módulo menores que E max Para tensões maiores do que isso, considerar G c V + E max (G c G b ) + E(G b G a ) se V E max G b V + (G b G a )E, se E max < V E g(v ) = G a V, se E < V < E G b V + (G a G b )E, se E V < E max G c V + E max (G b G c ) + E(G a G b ) se E max V Adote E max = 888 V e G c = 459 ms, de forma a obtermos a curva apresentada na gura abaixo 2
5 x 0 3 4 3 2 g(v) 0 2 3 4 5 0 8 6 4 2 0 2 4 6 8 0 V Assuma como condições iniciais V = 05V, V 2 = 02 e I L = 0 Vamos variar o valor do resistor (R) nos experimentos a seguir Exercícios obrigatórios Verique o comportamento do sistema quando R < 500 Oms e descreva o seu comportamento em relação ao retrato de fases 2 Descreva agora o comportamento quando R = 600 e compare com o obtido no item anterior 3 Encontre o valor de R entre 500 e 600 para qual o sistema passa de um comportamento para o outro (bifurcação do sistema) 4 Verique o comportamento do sistema quando R > 2000 Oms e descreva o seu comportamento em relação ao retrato de fases 5 Discuta o tempo de execução do seu código (inuenciado pelo tamano dos passos de tempo escolidos no método de integração) para diferentes valores de R, considerando valores bem pequenos (R < ), médios (R 000) e grandes R > 0000 Exercícios Extras Experimente modicar as condições iniciais e relate a sua inuência na solução do sistema 2 Experimente modicar outros parâmetros e relate a sua inuência na solução do sistema Desao Extra Os parâmetros propostos neste exercício são todos realizáveis do ponto vista físico e podem ser construído em uma protoboard O aluno interessado pode seguir o roteiro descrito em [] e [2] para a construção do circuito O circuito pode ser construído a um baixo custo e de forma simples e rápida Sugerimos que os alunos que montarem o circuito comparem os resultado obtidos sicamente com os modelados numericamente 3
4 O Método de Runge-Kutta Felberg Introdução Vamos aqui apresentar o método de Runge-Kutta Felberg, para solução de (sistemas de) equações diferenciais ordinárias de primeira ordem, a partir dos valores iniciais das soluções Em uma equação diferencial (ou sistema de equações) procura-se determinar uma função X(t) satisfazendo uma relação do tipo: X (t) = F (t, X(t)) com X(t 0 ) = X0 () No caso geral X(t) é uma função denida em algum intervalo real, tomando valores em R m (ou seja, X(t) = (X (t), X 2 (t),, X m (t)), onde cada X i (t) é uma função real) A função F (t, X(t)) é denida em R m+ e assume valores em R m Caso F seja só uma função de X R m (ou seja, não dependendo explicitamente de t) temos um sistema autônomo O método que apresentaremos a seguir é uma variação do método clássico de Runge-Kutta de quarta ordem, de forma a incorporar uma técnica de controle do passo temporal visando atingir uma dada precisão Assim, em regiões onde a solução apresenta variações rápidas (com fortes gradientes), faz-se necessário o uso de um espaçamento temporal menor, de forma a conseguir uma boa aproximação para a solução, enquanto que em regiões em que a solução varia suavemente, podem ser usados espaçamentos maiores, levando a um método computacionalmente mais eciente Preliminares Apresentamos aqui brevemente o Método de Euler, que em breve será apresentado em sala de aula no curso O descrevemos aqui, apenas para facilitar sua compreensão de outros métodos Considerando o polinômio de Taylor da função x(t) obtemos: x(t + ) = x(t) + x (t) + x ( t) 2 /2 onde t se encontra entre t e t + Desta expressão temos: x(t + ) x(t) = x (t) + x ( t)/2 Se agora impusermos que x(t) é solução da equação diferencial () obtemos que: x(t + ) x(t) O método de Euler irá empregar a aproximação x(t + ) x(t) = f(t, x(t)) + x ( t)/2 = f(t, x(t)) sendo o erro cometido proporcional a Partindo do instante inicial t 0, onde conecemos o valor inicial x 0 da solução, calcularemos sucessivamente as aproximações x i+ = x i + f(t i, x i ) onde t i = t 0 + i, e x i é a aproximação de x(t i ) Calculamos a solução até um instante nal t f em n passos, onde n = t f t 0 Por exemplo, na equação x (t) = x(t) com x(0) =, temos a sequência x i+ = x i + x i = ( + )x i Se tomamos t f = e = /n obtemos a aproximação para o valor de x(): x n = ( + )x n = ( + ) n x 0 = ( + /n) n Sabemos que a solução da equação é x(t) = e t e portanto x() = e Vocês já viram em cálculo que lim n ( + /n) n = e Assim, a aproximação obtida pelo método de Euler para o valor da solução no instante converge para o valor exato se zermos o espaçamento = /n entre dois instantes consecutivos tender a zero Resumindo, se desejamos aproximar a solução da equação diferencial () no intervalo de tempo [t 0, t f ], subdividimos este intervalo em n partes de comprimento = (t f t 0 )/n e aproximamos a solução em cada instante t i = t 0 + i, i = 0,, n, a partir de seu valor inicial x 0, computando: x i+ = x i + f(t i, x i ), i = 0,, n 4
O método de Euler é bastante simples e fácil de implementar, porém apresenta uma convergência lenta, com o erro da ordem de Há métodos para solução de equações diferenciais que convergem muito mais rapidamente Um método clássico, muito utilizado, é o método de Runge-Kutta de quarta ordem (com erro da ordem de 4 ) Neste método cada passo no tempo é calculado da seguinte forma (com a mesma notação usada no método de Euler), em 4 estágios: x i+ = x i + (k + 2k 2 + 2k 3 + k 4 )/6, onde k = f(t i, x i ) k 2 = f(t i + 05, x i + 05k ) k 3 = f(t i + 05, x i + 05k 2 ) k 4 = f(t i +, x i + k 3 ) Veja que cada passo no tempo requer 4 avaliações da função f, uma em cada estágio Você encontra no livro texto do curso (e verá também em sala de aula) uma descrição mais detalada sobre métodos de Runge-Kutta, incluindo uma dedução de um método de ordem 2 A derivação do método acima é obtida de maneira análoga, sendo porém muito mais trabalosa (e normalmente omitida nos livros didáticos) Uma técnica de controle do passo Tanto o método de Euler como o método clássico de Runge-Kutta fazem uso de um espaçamento, pelo qual se incrementa o valor de t a cada passo, sendo que a precisão atingida irá depender deste valor de Iremos agora descrever como variar o valor de durante uma integração, de forma a obter-se uma dada precisão de forma eciente A técnica que veremos, baseia-se no uso de dois métodos de passo simples com ordens de convergência p e p + Consideremos dois métodos de ordem p e p + que a partir do valor de x i gerem a aproximação para x(t i+ ) respectivamente como: x i+ = x i + Φ(t i, x i, ) e x i+ = x i + Φ(t i, x i, ) Se x(t) é a solução da equação diferencial, o erro local de truncamento dos métodos é dado por: τ i+ () = x(t i+) x(t i ) τ i+ () = x(t i+) x(t i ) Φ(t i, x(t i ), ) = O( p ) e Φ(t i, x(t i ), ) = O( p+ ) Assumindo que a aproximação x i no instante t i seja praticamente igual à solução x(t i ) obtemos e analogamente que Assim, τ i+ () = x(t i+) x i Φ(t i, x i, ) τ i+ () = x(t i+) x i+ τ i+ () = x(t i+) x i+ + x i+ x i+ = x(t i+) x i+ = τ i+ () + x i+ x i+ Desprezando o erro local de truncamento τ i+ () por ser de ordem mais alta, obtemos a aproximação para o erro local de truncamento para o método de ordem p dada por τ i+ () x i+ x i+ Através desta expressão podemos estimar o erro local de truncamento e vericar se este se encontra dentro da ordem de precisão desejada Além disso podemos vericar se o espaçamento pode ser aumentado ou necessita ser reduzido Para tanto usamos que τ i+ () K p e estimamos o erro local de truncamento que teríamos se usássemos um novo espaçamento = α: τ i+ (α) K(α) p α p τ i+ () α p x i+ x i+ 5
Se desejamos que a norma do erro de truncamento τ i+ (α) seja menor que ɛ devemos ter ( ɛ α c x i+ x i+ ) /p onde c > é um fator de segurança e empregamos a norma do máximo O Método RKF45 Agora estamos em condição de apresentar o método de Runge-Kutta Felberg, que combina métodos de quarta e quinta ordem para o controle do passo Métodos explícitos de Runge-Kutta de quinta ordem requerem no mínimo 6 estágios, enquanto que se consegue métodos de quarta ordem com 4 estágios (como é o caso do método clássico visto em seção anterior) Assim, para aplicarmos os métodos de quarta e quinta ordem para gerarmos as novas aproximações a partir de x i teremos potencialmente que avaliar até 0 estágios, a menos que os métodos compartilem alguns destes Este é exatamente o caso do método de Felberg, em que o cálculo dos dois métodos irá requerer apenas 6 estágios, uma vez que o método de quarta ordem a ser utilizado compartila dos mesmos estágios requeridos no método de sexta ordem Descrevemos abaixo os seis estágios requeridos pelos métodos: k = F (t i, x i ) k 2 = F (t i + /4, x i + 4 k ) k 3 = F (t i + 3/8, x i + 3 32 k + 9 32 k 2) k 4 = F (t i + 2/3, x i + 932 297 k 7200 297 k 2 + 7296 297 k 3) k 5 = F (t i +, x i + 439 26 k 8 k 2 + 3680 53 k 3 845 404 k 4) k 6 = F (t i + /2, x i 8 27 k + 2 k 2 3544 2565 k 3 + 859 404 k 4 40 k 5) O método de quarta ordem é dado por enquanto que o de ordem 5 é obtido como x i+ = x i + 25 26 k + 408 2565 k 3 + 297 404 k 4 5 k 5 x i+ = x i + 6 35 k + 6656 2825 k 3 + 2856 56430 k 4 9 50 k 5 + 2 55 k 6 O método então funciona da seguinte forma: a partir do valor inicial x 0 e de um inicial, calcula-se as aproximações x i+ e x i+ dadas respectivamente pelos esquemas de quarta e quinta ordem Em função destes dois valores e de estima-se o erro local de truncamento τ i+ () como descrito na seção anterior Caso este valor seja menor que ɛ o valor de x i+ é aceito como nova aproximação no instante t i+ = t i + e atualiza-se o valor de para α (ou seja, multiplica-se por α), onde α é calculado como descrito ao nal da seção anterior, empregando um fator de segurança c = 2 No caso de τ i+ () ser maior que ɛ o valor de x i+ é rejeitado, com sendo atualizado da mesma forma, após o que se refaz os cálculos das aproximações x i+ e x i+ Uma vez que x i+ tena sido aceito procede-se ao cálculo da solução no próximo passo, usando-se o mesmo procedimento A integração termina ao atingir-se o instante nal desejado Para garantir que se cegue exatamente no instante nal t f - sem ultrapassá-lo - pode-se limitar o valor de a cada passo pelo tanto que falta para t f, fazendo com que seja no máximo igual a t f t i Além disso, é conveniente que não seja escolido nem grande, nem pequeno demais Ou seja, adicionalmente impomos que min max, onde min e max são dois parâmetros a ser escolidos pelo usuário (dependem das escalas temporais que temos) No seu programa utilize min = 000 e max = 0 6
Implementação e alguns testes Você deve implementar o método de Runge-Kutta Felberg (RKF45) descrito na seção anterior, empregando a técnica de controle do passo Sua implementação deve contemplar o fato de que a função F (t, X) descrevendo a equação diferencial possa assumir valores em R m, onde m será uma variável Os testes e o problema que você resolverá depois na aplicação do método envolverão diferentes valores da dimensão n Uma forma de você escrever a função de maneira razoavelmente geral é passar como argumentos o valor de m (que será usado no dimensionamento do vetor X) e uma variável caso Dependendo do valor de caso, calcule então a função especíca requerida em cada teste e / ou aplicação Teste - considere a equação diferencial com F : R 2 R dada por F (t, x) = + (x t) 2 Integre-a a partir do valor inicial x(05) = 895 até o tempo nal t f = 3 pelo método RKF45 com ɛ = 0 5 Use para iniciar = 0 A cada passo imprima o valor de empregado e o valor da solução Imprima também o erro em relação à solução exata desta equação dada por x(t) = t + /( t) Teste 2 - considere a equação diferencial autônoma com F (t, X) = AX, com X R 4, onde A = 2 2 2 2 2 2 2 2 Integre-a a partir de X(0) = (,,, ) até t f = 2, usando = 0 inicialmente e ɛ = 0 5 A cada passo imprima o valor de, t i e X i X(t i ), com a norma do máximo A solução exata desta equação é X(t) = e t sin t + e 3t cos 3t e t cos t + e 3t sin 3t e t sin t + e 3t cos 3t e t cos t + e 3t sin 3t Teste 3 - Considere o sistema autônomo com F (t, X) = AX, com X R m, onde A é uma matriz tridiagonal m m, tal que A i,i = 2, i =,, m, A i,i+ = A i+,i =, i =,, m e A i,j = 0 nas posições restantes Este exemplo permite que você teste seu código para valores diversos de m Use como condição inicial o vetor X(0) com componentes X(0) i = sin(πy i ) + sin(mπy i ), onde y i = i/(m + ), para i =,, m A solução exata deste sistema é dada pelo vetor X(t) cujas componentes são: X(t) i = e λt sin(πy i ) + e λ2t sin(mπy i ), i =,, m, com λ = 2( cos(π/(m + ))) e λ 2 = 2( cos(mπ/(m + ))) Você deve executar este teste com m = 7, usando = 0 inicialmente e ɛ = 0 5 A cada passo imprima o valor de, t i e X i X(t i ), comparando sua solução com a solução exata, usando a norma do máximo e integrando até t f = 2 Referências [] ttps://insteecsberkeleyedu/~ee29/sp0/andouts/cuascircuitforhigscoolstudents-preprint pdf [2] ttp://wwwcuacircuitscom 7