Método de Euler: mudanças entre as edições
(Criou página com '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 esb...') |
Sem resumo de edição |
||
| Linha 1: | Linha 1: | ||
= Euler explícito = | |||
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. | 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. | ||
| Linha 5: | Linha 6: | ||
<math display="block">\frac{dy}{dt}=f\left(t,y\right)\qquad y\left(t_{0}\right)=y_{0}</math> | <math display="block">\frac{dy}{dt}=f\left(t,y\right)\qquad y\left(t_{0}\right)=y_{0}</math> | ||
Considerando que conhecemos a função <math display="inline">f\left(t,y\right)</math> e os valores na condição inicial, assumimos que é tudo contínuo de forma que sabemos que uma solução de fato vai existir. Temos então para <math display="inline">t=t_{0}</math>: | |||
<math display="block">\left.\frac{dy}{dt}\right|_{t=t_{0}}=f\left(t_{0},y_{0}\right)</math> | <math display="block">\left.\frac{dy}{dt}\right|_{t=t_{0}}=f\left(t_{0},y_{0}\right)</math> | ||
Dessa forma podemos escrever | Dessa forma podemos escrever uma reta tangente à curva <math display="inline">y\left(t\right)</math> no ponto <math display="inline">\left(t_{0},y_{0}\right)</math> usando a inclinação <math display="inline">f\left(t_{0},y_{0}\right)</math>: | ||
<math display="block">y=y_{0}+f\left(t_{0},y_{0}\right)\left(t-t_{0}\right)</math> | <math display="block">y=y_{0}+f\left(t_{0},y_{0}\right)\left(t-t_{0}\right)</math> | ||
Para visualizar melhor esta equação, podemos fazer <math display="inline">t_{0}=0</math> | Para visualizar melhor esta equação, podemos fazer <math display="inline">t_{0}=0</math>, ficmos então com <math display="inline">y=y_{0}+f\left(t_{0},y_{0}\right)t</math>. Desta forma, fica ainda mais evidente que esta é uma equação de reta com inclinação <math display="inline">f\left(t_{0},y_{0}\right)</math>, e quando <math display="inline">t=t_{0}</math> temos <math display="inline">y=y_{0}</math>, ou seja, uma reta que passa pelo ponto <math display="inline">\left(t_{0},y_{0}\right)</math>. Para <math display="inline">t_{0}\neq0</math> temos apenas um deslocamento no eixo. | ||
Então se <math display="inline">t_{1}</math> é perto o suficiente de <math display="inline">t_{0}</math>, a equação da reta vai estar perto do valor atual da solução em <math display="inline">t_{1}</math>. Então podemos escrever: | Então se <math display="inline">t_{1}</math> é perto o suficiente de <math display="inline">t_{0}</math>, a equação da reta vai estar perto do valor atual da solução em <math display="inline">t_{1}</math>. Então podemos escrever: | ||
| Linha 27: | Linha 28: | ||
<math display="block">y_{n+1}=y_{n}+f\left(t_{n},y_{n}\right)\left(t_{n+1}-t_{n}\right)</math> | <math display="block">y_{n+1}=y_{n}+f\left(t_{n},y_{n}\right)\left(t_{n+1}-t_{n}\right)</math> | ||
Podemos ainda reescrever o passo como <math display="inline">t_{n+1}-t_{n}=\Delta t</math>, | Podemos ainda reescrever o passo como <math display="inline">t_{n+1}-t_{n}=\Delta t</math>, de forma que ficamos com: | ||
<math display="block">y_{n+1}=y_{n}+f\left(t_{n},y_{n}\right)\Delta t</math> | <math display="block">y_{n+1}=y_{n}+f\left(t_{n},y_{n}\right)\Delta t</math> | ||
Outra forma de visualizar o resultado, é considerar a reta | Outra forma de visualizar o resultado, é considerar a reta: | ||
<math display="block">y=y_{n}+f\left(t_{n},y_{n}\right)\left(t-t_{n}\right)</math> | <math display="block">y=y_{n}+f\left(t_{n},y_{n}\right)\left(t-t_{n}\right)</math> | ||
Como a solução aproximada para o intervalo <math display="inline">\left[t_{n},t_{n+1}\right]</math> | Como a solução aproximada para o intervalo <math display="inline">\left[t_{n},t_{n+1}\right]</math>. Então com um conjunto de retas podemos ter uma aproximação para a solução como um todo. | ||
<span id="exemplo-1"></span> | <span id="exemplo-1"></span> | ||
= Exemplo | == Exemplo == | ||
O primeiro exemplo de aplicação é o '''decaimento radiativo''', cuja equação diferencial é: <math display="block">\frac{dN}{dt}=-\lambda N</math> | O primeiro exemplo de aplicação é o '''decaimento radiativo''', cuja equação diferencial é: <math display="block">\frac{dN}{dt}=-\lambda N</math> | ||
| Linha 64: | Linha 65: | ||
N =[10**6];Np=100;lam=0.1;dt=0.1 #Parâmetros | N =[10**6];Np=100;lam=0.1;dt=0.1 #Parâmetros | ||
fac = 1-lam*dt | fac = 1-lam*dt #Função calculada | ||
for i in range(Np): #Vamo calcular Np passos | for i in range(Np): #Vamo calcular Np passos | ||
N.append(fac*N[i])#Salvamos o novo valor | N.append(fac*N[i]) #Salvamos o novo valor | ||
print(i*dt,N[i]) | print(i*dt,N[i]) #printamos o resultado | ||
plt.plot(N) | plt.plot(N) #Construimos o gráfico | ||
plt.show() | plt.show() #Plotamos | ||
</pre> | </pre> | ||
Edição das 13h56min de 26 de janeiro de 2022
Euler explícito
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:
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle \frac{dy}{dt}=f\left(t,y\right)\qquad y\left(t_{0}\right)=y_{0}}
Considerando que conhecemos a função Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle f\left(t,y\right)} e os valores na condição inicial, assumimos que é tudo contínuo de forma que sabemos que uma solução de fato vai existir. Temos então para Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle t=t_{0}} :
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle \left.\frac{dy}{dt}\right|_{t=t_{0}}=f\left(t_{0},y_{0}\right)}
Dessa forma podemos escrever uma reta tangente à curva Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle y\left(t\right)} no ponto Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle \left(t_{0},y_{0}\right)} usando a inclinação Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle f\left(t_{0},y_{0}\right)} :
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle y=y_{0}+f\left(t_{0},y_{0}\right)\left(t-t_{0}\right)}
Para visualizar melhor esta equação, podemos fazer Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle t_{0}=0} , ficmos então com Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle y=y_{0}+f\left(t_{0},y_{0}\right)t} . Desta forma, fica ainda mais evidente que esta é uma equação de reta com inclinação Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle f\left(t_{0},y_{0}\right)} , e quando Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle t=t_{0}} temos Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle y=y_{0}} , ou seja, uma reta que passa pelo ponto Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle \left(t_{0},y_{0}\right)} . Para Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle t_{0}\neq0} temos apenas um deslocamento no eixo.
Então se Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle t_{1}} é perto o suficiente de Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle t_{0}} , a equação da reta vai estar perto do valor atual da solução em Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle t_{1}} . Então podemos escrever:
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle y_{1}=y_{0}+f\left(t_{0},y_{0}\right)\left(t_{1}-t_{0}\right)}
Podemos repetir o processo, usando agora Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle y_{1}=y\left(t_{1}\right)} como valor inicial, então:
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle y_{2}=y_{1}+f\left(t_{1},y_{1}\right)\left(t_{2}-t_{1}\right)}
Ou de maneira genérica:
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle y_{n+1}=y_{n}+f\left(t_{n},y_{n}\right)\left(t_{n+1}-t_{n}\right)}
Podemos ainda reescrever o passo como Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle t_{n+1}-t_{n}=\Delta t} , de forma que ficamos com:
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle y_{n+1}=y_{n}+f\left(t_{n},y_{n}\right)\Delta t}
Outra forma de visualizar o resultado, é considerar a reta:
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle y=y_{n}+f\left(t_{n},y_{n}\right)\left(t-t_{n}\right)}
Como a solução aproximada para o intervalo Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle \left[t_{n},t_{n+1}\right]} . Então com um conjunto de retas podemos ter uma aproximação para a solução como um todo.
Exemplo
O primeiro exemplo de aplicação é o decaimento radiativo, cuja equação diferencial é: Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle \frac{dN}{dt}=-\lambda N}
Onde Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle N} é a quantidade de partículas que sofrem o decaimento e Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle \lambda} a taxa no qual o decaimento ocorre.
- Notem que a mesma equação pode descrever a diminuição de uma população estéril (Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle N} sendo a quantidade de indivíduos vivos e Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\textstyle \lambda} 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
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle \begin{align} N_{n+1} & =N_{n}+f\left(t_{n},N_{n}\right)\Delta t\\ N_{n+1} & =N_{n}-\lambda N_{n}\Delta t\\ N_{n+1} & =N_{n}\left(1-\lambda\Delta t\right)\end{align} }
Ou mais explicitamente:
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle \begin{align} N\left(t_{n+1}\right) & =\left[1-\lambda\Delta t\right]N\left(t_{n}\right)\\ N\left(t_{n}+\Delta t\right) & =\left[1-\lambda\Delta t\right]N\left(t_{n}\right)\end{align}}
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)