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 de u e v.
t=[]
t.append(0)
U.append(np.array([0,1]))
u=[]
v=[]
u.append(U[0][0])
v.append(U[0][1])
def F(s,U): # Equação (u',v')=F(x,u,v)=(v,-u).
u=U[0]
v=U[1]
du=v
dv=-u
return np.array([du,dv])
def G(s,U): # Equação (u'',v'')=G(x,u,v)=(-u,-v).
u=U[0]
v=U[1]
du=-u
dv=-v
return np.array([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
U.append(U[i-1]+h*F(t[i-1],U[i-1])+(h**2)*G(t[i-1],U[i-1])/2)
t.append(t[i-1]+h)
u.append(U[i][0])
v.append(U[i][1])
print('t', t)
print(f"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: