import math, numpy as np # para usar expressões matemáticas
from matplotlib import pyplot as plt # para fazer gráficos
# Resolução da equação u''(t)=-u(t), u(0)=0 e u'(0)=1. escrira como u'=v e v'=-u, u(0)=0 e v(0)=1.
L=1 # Dados de inicilização.
n=4 # número de iterações do método de Taylor de ordem 2.
h=L/n # passo para o método
u=[] # Vetor para guardar coordenadas discretas u
v=[] # Vetor para guardar coordenadas discretas v.
t=[]
t.append(0)
u.append(0)
v.append(1)
def F(s,u,v): # Equação (u',v')=F(x,u,v)=(v,-u).
du=v
dv=-u
return [du,dv]
def G(s,u,v): # Equação (u'',v'')=G(x,u,v)=(-u,-v).
du=-u
dv=-v
return [du,dv]
for i in range(1,n+1): # Método de taylor de ordem 2 u_(n+1)=u_n+hF(s_n,u_n)+h^2G(s_n,u_n)/2
Fp=F(t[i-1],u[i-1],v[i-1])
Gp=G(t[i-1],u[i-1],v[i-1])
u.append(u[i-1]+h*Fp[0]+(h**2)*Gp[0]/2)
v.append(v[i-1]+h*Fp[1]+(h**2)*Gp[1]/2)
t.append(t[i-1]+h)
print('t', t)
print('u', u)
# Solução exata u(t)=sen(t)
def f(s):
return np.sin(s)
s=np.linspace(0,1,100)
plt.plot(s,f(s),label='u(t)=sen(t)')
plt.plot(t,u,'*',label='u_n')
plt.ylabel('u')
plt.xlabel('t')
plt.legend()
plt.title('Aproximação pelo método de Taylor de ordem 2')
plt.show()
To embed this project on your website, copy the following code and paste it into your website's HTML: