Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Estadual da Paraíba Centro de Ciências, Tecnologia e Saúde Coordenação de Engenharia Civil E.D.O. : M ÉT ODO DE EU LER Rafael de Brito Cândido Gomes Professor Engenharia Civil Curso Cálculo Numérico Disciplina Paulo César Ferreira Filho Thales Ribeiro José Livaldo Filho Antônio Dias Terceiro cesinha_02@hotmail.com 2 E.D.O. : M ÉT ODO DE EU LER Paulo César Ferreira Filho Thales Ribeiro José Livaldo Filho Antônio Dias Terceiro cesinha_02@hotmail.com Rafael de Brito Cândido Gomes rafaeldebrito2@gmail.com Cálculo Numérico Disciplina Engenharia Civil Curso Araruna, Julho de 2014 3 CONTEÚDO 1. Introdução ..................................................................................................................... 4 2. Equações Diferenciais Ordinárias ................................................................................ 4 2.1 Noções Básicas ............................................................................................................ 4 2.2 Classificações e Soluções de uma E.D.O. ................................................................... 5 3. Método de euler............................................................................................................. 7 3.1 Erros ......................................................................................................................... 11 3.2 Algoritmo em Python................................................................................................ 13 3.3 Aplicação na Engenharia.......................................................................................... 14 4. Conclusão .................................................................................................................... 16 4.1 Resumo ...................................................................................................................... 16 Bibliografia ......................................................................................................................... 17 4 1. INTRODUÇÃO Equações diferenciais ordinárias (EDO) ocorrem com muita frequência na descrição de fenômenos da natureza. Há vários métodos que resolvem analiticamente uma EDO, entretanto nem sempre é possível obter uma solução analítica. Neste caso, os métodos numéricos são uma saída para se encontrar uma solução aproximada. O objetivo deste trabalho é discutir o desenvolvimento e a utilização de um procedimento numérico para resolução de EDO’s. Para isso, vamos nos concentrar, principalmente, em problemas de valor inicial para equações de primeira ordem. Através desse trabalho vamos apresentar o método de Euler, alguns exemplos, comparações e uma pequena análise sobre o erro. 2. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS Neste capítulo trabalharemos alguns conceitos básicos, necessários para o entendimento do trabalho. Usaremos dois exemplos para ilustrar como princípios ou leis podem ser expressos em linguagem matemática utilizando “Equações diferenciais”. Trataremos das classificações quanto ao tipo e a ordem das equações diferenciais além das soluções e problemas de valor inicial. 2.1 NOÇÕES BÁSICAS Aqui vamos mostrar alguns conceitos básicos, necessários para o entendimento do trabalho, onde vamos usar dois exemplos para ilustrar como princípios ou leis podem ser expressos em linguagem matemática utilizando “Equações diferenciais”. Trataremos das classificações quanto ao tipo e a ordem das equações diferenciais além das soluções e problemas de valor inicial. Muitos dos princípios, ou leis, que regem o comportamento do mundo físico são proposições, ou relações, envolvendo a taxa de variação segundo a qual as coisas acontecem. Expressas em linguagem matemática, as relações são equações e as taxas são derivadas. Equações funcionais contendo derivadas são chamadas equações diferenciais. Vamos agora mostrar os exemplos para termos uma melhor compreensão. Exemplo 1 O movimento de um pêndulo simples de massa e comprimento é descrito pela função que satisfaz a equação diferencial: 5 Nesta equação a incógnita é a função . Assim é a variável dependente e é a variável independente. Figura 1-Pêndulo simples Exemplo 2 Numa região do plano em que não há cargas elétricas o potencial elétrico em cada ponto da região satisfaz a equação diferencial Nesta equação a incógnita é a função . Assim é a variável dependente e e são as variáveis independentes. Ela é chamada Equação de Laplace. 2.2 CLASSIFICAÇÕES E SOLUÇÕES DE UMA E.D.O. Classificações de uma equação diferencial quanto ao tipo e a ordem: TIPO: Uma equação diferencial é dita “Equação Diferencial Ordinária (EDO)” se a função incógnita desconhecida depende de uma única variável independente; neste caso aparecem na equação diferencial apenas derivadas ordinárias. O exemplo 1 é um caso de EDO. Já numa’ “Equação diferencial Parcial (EDP)”, em uma função incógnita depende de várias variáveis independentes, aparecendo então derivadas parciais. O exemplo 2 é um exemplo de EDP. 6 ORDEM: A maior ordem de uma derivada que aparece na equação diferencial é chamada de ordem da equação diferencial. No exemplo 1, temos uma equação de segunda ordem. Soluções de uma EDO: Uma solução de uma EDO do tipo: y (n) = f(x,y,y’,y’’, ... , y(n-1)), no intervalo é uma função tal que (n) existem e satisfazem a equação: (n)(x) = f[x, (n-1)(x)] para todo x em . Podemos encontrar soluções de determinadas equações por um processo de integração direta, neste caso obtemos uma família de funções c. Neste trabalho serão objeto de estudo apenas as equações diferenciais ordinárias de 1º ordem, que a partir de agora indicaremos apenas por EDO. Problema de valor inicial: O problema de valor inicial (P.V.I) de uma EDO, , formula-se do seguinte modo: Dado um ponto (x0.y0), encontrar uma solução da EDO definida num intervalo contendo x0 e satisfazendo . Dizemos então que temos uma equação diferencial com uma condição inicial. Uma solução para uma equação diferencial com uma condição inicial é chamada uma solução particular da equação diferencial. Exemplo 3 Resolver a EDO , com condição inicial y(1) = 1. Solução: Trata-se de um PVI de 1º ordem. Dada a equação , podemos separar as variáveis na forma: Integrando ambos os lados: = = 7 y = ℮ (0,1x² + c) (solução geral) Procuramos a solução em y(1) = 1 y(x) = ℮0,1x²-0,1 y(x) = ℮0,1(x²-1) Três abordagens para solução de uma equação diferencial: A solução de uma equação diferencial pode ser abordada de três maneiras diferentes: a analítica, a qualitativa e a numérica. Num primeiro momento de estudo de Equações Diferenciais, geralmente, é dada prioridade a este processo analítico na busca da solução de uma equação diferencial via processo de integração. Aqui, já começa a ficar claro que por este processo analítico não é sempre possível encontrar a solução de todas as equações diferenciais, pois como já sabemos, existem muitasfunções que não podem ser expressas em termos de funções elementares. Deste modo nem toda solução pode ser expressa de maneira adequada por método de integração. Já pelo processo qualitativo, discute-se o comportamento geométrico das soluções e os aspectos das curvas integrais descritos por meio de campos de direções. Este procedimento, no estudo das equações diferenciais ordinárias de 1ª ordem, é baseado na interpretação da derivada. Finalmente, na abordagem numérica, métodos numéricos são utilizados para aproximar soluções de problemas de valor inicial (P.V.I) de equações diferenciais de 1ª ordem. Os procedimentos numéricos podem ser executados, em computadores e, também, em algumas calculadoras. Idealmente, os valores aproximados da solução serão acompanhados de cotas para os erros que garantem um nível de precisão para aproximações. Existem muitos métodos, hoje em dia, que produzem aproximações numéricas de soluções de equações diferenciais. 3. MÉTODO DE EULER Vamos introduzir aqui o mais velho e mais simples de tais métodos, desenvolvido por Euler (1707-1783) por volta de 1768. É chamado de método da reta tangente ou método de Euler. O método de Euler é muito atraente por sua simplicidade, mas não muito usado em cálculos importantes, dentre muitos outros métodos, pois apesar de simples, para conseguir “boas” aproximações é necessário um número maior de cálculos. Para discutir o método vamos nos concentrar principalmente em problemas de valor inicial para equações de primeira ordem. Considerando o PVI: ; y(x0) = y0. Denotemos por y(x) = y a “solução exata” do PVI. Notemos que y’(x0) = f(x0,y0), logo a equação da reta tangente a y no ponto (x0,y0) é y-y0 = y’(x0)(x-x0) que denotamos por L(x) = y0 + f(x0,y0)(x-x0). Essa é a primeira aproximação de y quando x está perto de x0. Podemos considerar L(x) como uma solução 8 aproximada de y sobre um intervalo da forma [x0-E,x0+E]. O objetivo do método de Euler é estender essa solução aproximada a um intervalo maior. Para isso fixemos um incremento h>0, assim denotando: x1 = x0 + h, temos que y1 = L(x1) ≈ y(x1). Podemos simplificar a expressão y1: y1 = L(x) = y0 + f(x0,y0)(x1-x0) = y0 + f(x0,y0)(x0+h-x0) = y0 + hf(x0,y0). Como pode ser observado na figura acima, o ponto (x1,y1) sobre a reta tangente é próximo ao ponto do ponto (x1,y(x1)), sobre a curva integral. Podemos observar que o tamanho do incremento h denominado, tamanho do passo, influencia claramente na aproximação de: L(x1) = y1 ≈ y(x1). Quanto menor o tamanho do passo, melhor a aproximação de (x1,y1) para (x1,y(x1)). Consideramos o valor inicial (x1,y1), então a reta tangente com essa condição inicial é: L1(x) = y1 + f(x1,y1)(x – x1). L1(x) é uma primeira aproximação da solução exata com condição inicial (x1,y1), esta solução é diferente da primeira solução com condição inicial (x0,y0), porém soluções com condições iniciais próximas se mantém próximas, pelo menos em vizinhanças de condições iniciais. Com isto podemos aproximar y(x) ≈ L1(x) para x ∈ [x1,x1+h] Denotando x2 = x1+h temos y2 = L1(x2) = y1 + hf(x1,y1). 9 Se utilizarmos esse processo sucessivas vezes chegaremos a uma fórmula geral, e esse procedimento é chamado método de Euler. Yn+1 = yn + hf(xn,yn), Onde: Xn = x0 + nh; n = 0,1,2,3... Assim, a solução numérica fornecida pelo método de Euler é a poligonal com vértices (x0,y0), (x1,y1), (x2,y2), ..., (xn+1,yn+1), onde os segmentos de reta no intervalo (xk,xk+1); k = 0, 1, 2, ... n têm como equação: lk(x) = yk + f(xk,yk)(x – xk). Antes de analisar o erro de aproximação do método, vamos comparar a solução exata e aproximada num exemplo concreto. Exemplo 4: Vamos considerar uma equação que sabemos resolver, por exemplo: y’ = 0,2xy; y(1) = 1 Substituindo o valor inicial na equação, temos: y’ = 0,2(1)(1) → y’ = 0,2 Como sabemos este valor corresponde à inclinação da reta tangente no ponto y(1) = 1 Com isso temos que a equação da reta tangente, chamada de linearização de y(x) em x =1: y = L(x) = 0,2x + 0,8. Construímos uma tabela, para comparar os valores aproximados. As tabelas foram construídas utilizando o Excel, a primeira linha usa o valor inicial: y(1) = 1 o valor de Yn é calculado a partir da fórmula de Euler e o valor exato é calculado com base na solução para a equação y = ℮0,1(x² – 1), com ℮ aproximado em quatro casas decimais ℮ = 2,7182 . As linhas seguintes seguem a primeira linha, acompanhando as células. O erro absoluto é definido como sendo: │valor real - aproximação│ 10 E erro porcentual relativo: Tabela 1 h = 0,1 Xn Yn Valor Exato Y(Xn) Erro Abs. Erro % Relativo 1 1 1 0 0 1,1 1,02 1,0212 0,0012 0,12 1,2 1,0424 1,045 0,0025 0,24 1,3 1,0675 1,0714 0,004 0,37 1,4 1,0952 1,1008 0,0055 0,5 1,5 1,1259 1,1331 0,0073 0,64 Tabela 2 h = 0,05 Xn Yn Valor Exato Y(Xn) Erro Abs. Erro % Relativo 1 1 1 0 0 1,05 1,01 1,0103 0,003 0,03 1,1 1,206 1,0212 0,006 0,06 1,15 1,0318 1,0328 0,0009 0,09 1,2 1,0437 1,045 0,0013 0,12 1,25 1,0562 1,0579 0,0016 0,16 1,3 1,0694 1,0714 0,002 0,19 1,35 1,0833 1,0857 0,0024 0,22 1,4 1,098 1,1008 0,0028 0,25 1,45 1,133 1,166 0,0032 0,29 1,5 1,1295 1,331 0,0037 0,32 Nas tabelas podemos observar que quanto menor o tamanho do passo, menor o erro percentual relativo. Notemos que a mudança no coeficiente da EDO anterior, mesmo preservando o tamanho do passo pode acarretar um erro extremamente maior, como mostra o seguinte exemplo: Exemplo 5: y’ = 2xy, y(1) = 1 → y(x) = ℮x² - 1 → L(x) = 2x – 1. 11 Tabela 3 h = 0,1 Xn Yn Valor Exato Y(Xn) Erro Abs. Erro % Relativo 1 1 1 0 0 1,1 1,02 1,2337 0,0337 2,73 1,2 1,464 1,5527 0,0887 5,91 1,3 1,8154 1,9937 0,1784 8,95 1,4 2,2874 2,6117 0,3244 12,42 1,5 2,9278 3,4903 0,5625 16,12 Tabela 4 h = 0,05 Xn Yn Valor Exato Y(Xn) Erro Abs. Erro % Relativo 1 1 1 0 0 1,05 1,01 1,1079 0,079 0,72 1,1 1,2155 1,2237 0,0182 1,47 1,15 1,3492 1,3806 0,0314 2,27 1,2 1,5044 1,5527 0,0483 3,11 1,25 1,6849 1,7551 0,0702 4 1,3 1,8955 1,9937 0,092 4,93 1,35 2,1419 2,2762 0,1343 5,9 1,4 2,4311 2,6127 0,1806 6,92 1,45 2,7714 3,0117 0,2403 7,98 1,5 3,1733 3,4903 0,3171 9,08 Neste caso, com o passo h = 0,1, um erro relativo de 16% no cálculo de aproximação de y(1,5) é alto. Na tentativa de diminuir esse erro, diminuímos o passo pela metade, ou seja, h = 0,05, mesmo que isso dobrasse o número de cálculos necessários para tanto. 3.1 ERROS Erro de Aproximação Métodos numéricos dão soluções aproximadas. Sempre há certo grau de erro e a cada passo ocorrerá a acumulação de erro, o que nos distanciará ainda mais da solução real do problema a ponto até mesmo de tornar os cálculos inúteis. Mesmo que se tenha intenção de manter maior precisão nos cálculos, pode não justificar o aumento do custo e das complexidades dos cálculos. 12 Os erros cometidos são de duas naturezas: Erros de Arredondamentos: Quando usamos um computador ou uma calculadora para aproximar a solução de uma equação diferencial, por apresentarem casas decimais finitas trabalha-se com, erro de arredondamento. Erros de truncamento: Erros de truncamentos são causados pelo tipo de técnica empregada para a atualização do valor de y; Como podemos observar nas tabelas acima, a fórmula de Euler carrega um erro a cada passo. O erro de truncamento local y(xn+1) – Ln(xn) do método de Euler em yn+1 é: y’’(c) , onde xn < c < xn+1. Mas encontrar esse valor seria inviável pois cairíamos em outro problema tão trabalhoso quanto o inicial que estamos tentando resolver. Entretanto, pode-se definir um majorante para o erro de truncamento local. Se y(x) possui segunda derivada contínua num intervalo fechado [xn,xn+1] , que contém os pontos sobre os quais está sendo feita a discretização, então existe o máximo y”(x) de neste intervalo que denotamos por: M2 = max│y”(x)│, x ∈ [xn,xn+1]. Assim: │y”(c)│≤ M2 ∀ c ∈ [xn,xn+1]. │R(x)│ = │y’’(c) │= y”(c) ≤ ∀ c ∈ [xn,xn+1]. Pode-se observar ainda que para a determinação do erro de truncamento local, necessita-se do valor máximo da segunda derivada de y(x), o que restringe sua utilização na prática. Assim sendo, o erro de truncamento local do método de Euler e de ordem O(h²). Isto é, . Exemplo 6: Obtenha um limite para o erro de truncamento local do método de Euler aplicado a y’ = 2xy, y(1) = 1. Solução: Da solução y(x) = ℮x² - 1 , obtemos y” = (2 + 4x²)℮x² - 1 e, portanto, o erro de truncamento local é: y’’(c) = (2 + 4c²)℮c² - 1 . Onde está entre xn e xn+1. Em particular, para h=0,1, podemos obter um limite superior para o erro de truncamento local para y1 substituindo c por 1,1: 13 [2 +( 4)(1,1²)]℮(1,1² - 1) = 0,042. Da tabela 3, vemos que o erro após o primeiro passo é 0,0337, menor que o valor dado pelo limite. Da mesma forma, podemos obter uma limitação para o erro de truncamento local para qualquer dos cinco passos dados na tabela 3 substituindo c por 1,5 (esse valor de c dá o maior valor de y”(c) para qualquer dos passos e pode ser amplo demais para os dois primeiros passos). Fazendo isso, obtemos: [2 +( 4)(1,5²)]℮(1,5² - 1) = 0,1920. Como uma limitação superior para o erro de truncamento local em cada passo. 3.2 ALGORITMO EM PYTHON # euler2: resolve a equação diferencial # dy/dx + y/x = sen(x) # usando um método explítico de ordem 2 (Euler) from math import sin,cos h = 0.5# passo em x x = [0]# x inicial y = [0]# y inicial n = int (50/h)# número de passos def f(x,y): if x == 0: # implementa a condição inicial return 0 else: return sin(x) - y/x def euler(x,y,h,f): k1 = h*f(x,y) k2 = h*f(x+h/2,y+k1/2) yn = y + k2 return yn for i in range (0,n): # loop da solução numérica 14 xn = (i+1)*h yn = euler(x[i],y[i],h,f) x.append(xn) y.append(yn) erro = 0 # calcula o erro relativo médio for i in range (1,n+1): yana = sin(x[i])/x[i] - cos(x[i]) erro += abs((y[i] - yana)/yana) erro /= n print ('erro relativo médio = ', erro) 3.3 APLICAÇÃO NA ENGENHARIA Consideremos a equação de Newton a uma dimensão para um corpo de massa m, F = ma. Em geral, F será uma função da posição, velocidade e tempo, de modo que a equação diferencial para a velocidade se escreve: Para obter a posição, recorremos à relação entre posição e velocidade, Se conhecermos a posição e a velocidade do corpo num certo instante, estas equações permitem-nos determinar v(t) e x(t) em qualquer instante t. No entanto, como sabemos, não podemos resolver estas equações analiticamente no caso geral. Isso significa que temos de recorrer ao computador, usando um método numérico. Esse método deverá ser capaz de determinar a velocidade e posição num certo instante, dadas, por exemplo, a posição e velocidade iniciais x0 e v0. O método mais simples para resolver equações diferenciais é o de substituir as derivadas por razões entre variações da função e da respectiva variável. No caso presente, teremos: Assim, se quisermos saber as posições e velocidades de um corpo entre um instante inicial ti e final tf, poderemos dividir o intervalo [ti, tf] em N partes iguais ∆t e calcular as velocidades nos instantes tn usando as acelerações no instante anterior; 15 Sendo: Do mesmo modo podemos calcular as posições em cada instante tn usando o valor da velocidade no instante anterior, fazendo: As equações (3) e (4) constituem o método de Euler para o cálculo das posições de velocidades de um corpo sujeito a uma força. O método de Euler é chamado um método de primeira ordem. A razão para isso se encontra no fato de podermos escrevermos usando o desenvolvimento em série de Taylor: O que significa que, ao aplicar o Método de Euler, estamos a desprezar termos com potências de ∆t iguais ou superiores a 2 - diz-se “termos de 2a ordem ou superior”. Podemos então dizer que o erro cometido em cada iteração (cada cálculo de vn ou xn) é proporcional a (∆t)², desde que ∆t seja suficientemente pequeno. No entanto, como temos de calcular N valores de v e x, o erro total cometido pode ser estimado como sendo proporcional a: ² uma vez que N = (tf –ti)/∆t. Assim, o erro total é proporcional a ∆t, e daí a designação de método de 1ª ordem. 16 4. CONCLUSÃO Através do estudo feito sobre o tema apresentado vimos o quão importante uma EDO pode ser, diversos fenômenos físicos podem e, se possível, são descritos por EDO’s, e suas aplicações não se restringem a isso. É bem provável que nos deparemos com elas na nossa própria rotina de trabalho como futuros engenheiros. Portanto não basta apenas saber para que sirva, devemos também saber calculá-las e muitas das vezes não se dá para fazer isso analiticamente, é necessário o auxilio de métodos computacionais, por isso foi apresentado o método de Euler que é uma dessas ferramentas. Como os demais métodos, o método de Euler nos motiva a achar a solução partindo do valor inicial, aprimorando os valores seguindo com a minimização dos erros e por fim ter uma conclusão aceitável. 4.1 RESUMO O capítulo 1 traz noções básicas necessárias para melhor entendimento dos demais capítulos. Já no capítulo 2 apresentamos o procedimento numérico conhecido como Método de Euler, que emprega a ideia de que uma reta tangente pode ser usada para aproximar os valores de uma função em uma pequena vizinhança do ponto de tangência. Considerado um método atraente pela sua simplicidade, mas não muito usado para cálculos mais importantes por causa do seu grande número de cálculos feitos para se encontrar um valor mais aproximado. Consiste em equações de 1º ordem no qual se encontrará o problema de valor inicial. Seja a solução de uma equação diferencial do tipo: = , com valor inicial y(x0) = y0. A solução desta equação resulta numa função y(x). Pela equação diferencial, sabendo que h = x1 – x0, observa-se que a derivada da função y(x) em um ponto qualquer x é dada por . Conhecendo-se a derivada da função y(x) no ponto x0, ou seja, (x0, y0), pode-se estimar o valor da função y(x) no ponto x1 por meio de relações trigonométricas: Como h = x1 – x0 e Δy = y1 - y0, pela tangente de α chegamos a uma expressão geral: Tg(α) = f(x0,y0) = – ; f(x0,y0) =; y1 = y0 + hf(x0,y0); Expressão geral: yi = yi-1 + hf(xi-1, yi-1). 17 BIBLIOGRAFIA VALLE, Karine Nayara F. Métodos Numéricos de Euler e Range-Kutta. 1ed. Belo Horizonte, 2012. 40p. BOYCE, Willian E; DIPRIMA, Richard C. Equações diferenciais elementares e problemas de valores de contorno. 9ed. Rio de Janeiro: LTC, 2010.
Compartilhar