Método de Euler
A grande maioria das equações diferenciais de primeira ordem não podem ser resolvidas analiticamente. Para o comportamento a longo prazo de uma solução podemos tentar esboçar um campo de direções, mas se precisamos conhecer mais especificamente como uma solução se comporta, precisamos de outra ferramenta. Os métodos numéricos nos permitem obter soluções aproximadas para as equações diferenciais.
Começando com uma problema genérico de valor inicial:
Onde conhecemos a função e os valores na condição inicial também são números conhecidos, e assumimos que é tudo contínuo de forma que sabemos que uma solução de fato vai existir. Temos então para :
Dessa forma podemos escrever então uma reta tangente à curva no ponto usando a inclinação :
Para visualizar melhor esta equação, podemos fazer temos e fica ainda mais evidente que esta é uma equação de reta com inclinação , e quando temos , ou seja, passa pelo ponto . Para temos apenas um deslocamento no eixo.
Então se é perto o suficiente de , a equação da reta vai estar perto do valor atual da solução em . Então podemos escrever:
Podemos repetir o processo, usando agora como valor inicial, então:
Ou de maneira genérica:
Podemos ainda reescrever o passo como , e ficamos então com:
Outra forma de visualizar o resultado, é considerar a reta
Como a solução aproximada para o intervalo , então com um conjunto de retas podemos ter uma aproximação para a solução como um todo.
Exemplo 1
O primeiro exemplo de aplicação é o decaimento radiativo, cuja equação diferencial é:
Onde é a quantidade de partículas que sofrem o decaimento e a taxa no qual o decaimento ocorre.
- Notem que a mesma equação pode descrever a diminuição de uma população estéril ( sendo a quantidade de indivíduos vivos e a taxa de mortalidade) ou a descarga de um circuito RC.
- A aplicação do método a este exemplo de primeira ordem nos leva a seguinte relação de recorrência
Ou mais explicitamente:
Implementando:
import matplotlib.pyplot as plt #Biblioteca para plotar gráficos N =[10**6];Np=100;lam=0.1;dt=0.1 #Parâmetros fac = 1-lam*dt #Função calculada for i in range(Np): #Vamo calcular Np passos N.append(fac*N[i])#Salvamos o novo valor print(i*dt,N[i]) #printamos o resultado plt.plot(N) #Construimos o gráfico plt.show() #Plotamos
Principais materiais utilizados
- Euler's Method (Paul Dawkins, Universidade Lamar)
- Método de Euler (REAMAT, UFRGS)