Gráfico do erro relativo
Conforme evidenciado nos gráficos subsequentes, os métodos de Wendroff demonstram uma considerável superioridade, apresentando um menor erro relativo em comparação com a solução analítica. No entanto, é importante observar que tais comparações foram feitas utilizando métodos explícitos de diferenças finitas; outros esquemas seriam possíveis se optássemos por métodos implícitos.
def dif(solv0, solv1):
erro = np.zeros_like(solv0)
for n in range(solv0.shape[0]):
erro[n, :] = np.abs(solv0[n, :] - solv1[n, :])
return erro
# Calcular a diferença absoluta
erro1 = dif(solv0, solv1)
erro2 = dif(solv0, solv2)
erro3 = dif(solv0, solv3)
erro4 = dif(solv0, solv4)
erro5 = dif(solv0, solv5)
erro6 = dif(solv0, solv6)
plt.figure(figsize=(10, 6))
plt.plot(listT, erro1[:, 0], label='FTCS', color='red', linestyle='--')
plt.plot(listT, erro2[:, 0], label='Lax-Friedrich', color='blue', linestyle='--')
plt.plot(listT, erro3[:, 0], label='Lax-Wendroff', color='green', linestyle='--')
plt.plot(listT, erro4[:, 0], label='Upwind', color='orange', linestyle='--')
plt.plot(listT, erro5[:, 0], label='Leapfrog', color='purple', linestyle='--')
plt.plot(listT, erro6[:, 0], label='Lax-Wendroff (2P)', color='brown', linestyle='--')
plt.grid()
plt.ylim(0,0.01)
plt.xlabel('Tempo (t)')
plt.ylabel('Diferença Absoluta')
plt.title('Diferença Absoluta em x=0', fontsize=16)
plt.legend()
plt.show()
Diferença entre os métodos estudados
|
plt.figure(figsize=(10, 6))
x = int(3* Nx / 4)
plt.plot(listT, erro1[:, x], label='FTCS', color='red', linestyle='--')
plt.plot(listT, erro2[:, x], label='Lax-Friedrich', color='blue', linestyle='--')
plt.plot(listT, erro3[:, x], label='Lax-Wendroff', color='green', linestyle='--')
plt.plot(listT, erro4[:, x], label='Upwind', color='orange', linestyle='--')
plt.plot(listT, erro5[:, x], label='Leapfrog', color='purple', linestyle='--')
plt.plot(listT, erro6[:, x], label='Lax-Wendroff (2P)', color='brown', linestyle='--')
plt.grid()
plt.ylim(0,0.001)
plt.xlabel('Tempo (t)')
plt.ylabel('Diferença Absoluta')
plt.title('Diferença Absoluta em x=L/4', fontsize=16)
plt.legend()
plt.show()
Diferença entre os métodos estudados
|
plt.figure(figsize=(10, 6))
x = int(Nx / 2)
plt.plot(listT, erro1[:, x], label='FTCS', color='red', linestyle='--')
plt.plot(listT, erro2[:, x], label='Lax-Friedrich', color='blue', linestyle='--')
plt.plot(listT, erro3[:, x], label='Lax-Wendroff', color='green', linestyle='--')
plt.plot(listT, erro4[:, x], label='Upwind', color='orange', linestyle='--')
plt.plot(listT, erro5[:, x], label='Leapfrog', color='purple', linestyle='--')
plt.plot(listT, erro6[:, x], label='Lax-Wendroff (2P)', color='brown', linestyle='--')
plt.grid()
plt.ylim(0,0.01)
plt.xlabel('Tempo (t)')
plt.ylabel('Diferença Absoluta')
plt.title('Diferença Absoluta em x=L/2', fontsize=16)
plt.legend()
plt.show()
Diferença entre os métodos estudados
|
plt.figure(figsize=(10, 6))
x = int(3* Nx / 4)
plt.plot(listT, erro1[:, x], label='FTCS', color='red', linestyle='--')
plt.plot(listT, erro2[:, x], label='Lax-Friedrich', color='blue', linestyle='--')
plt.plot(listT, erro3[:, x], label='Lax-Wendroff', color='green', linestyle='--')
plt.plot(listT, erro4[:, x], label='Upwind', color='orange', linestyle='--')
plt.plot(listT, erro5[:, x], label='Leapfrog', color='purple', linestyle='--')
plt.plot(listT, erro6[:, x], label='Lax-Wendroff (2P)', color='brown', linestyle='--')
plt.grid()
plt.ylim(0,0.01)
plt.xlabel('Tempo (t)')
plt.ylabel('Diferença Absoluta')
plt.title('Diferença Absoluta em x=3L/4', fontsize=16)
plt.legend()
plt.show()
Diferença entre os métodos estudados
|
plt.figure(figsize=(10, 6))
x = int(Nx)
plt.plot(listT, erro1[:, x], label='FTCS', color='red', linestyle='--')
plt.plot(listT, erro2[:, x], label='Lax-Friedrich', color='blue', linestyle='--')
plt.plot(listT, erro3[:, x], label='Lax-Wendroff', color='green', linestyle='--')
plt.plot(listT, erro4[:, x], label='Upwind', color='orange', linestyle='--')
plt.plot(listT, erro5[:, x], label='Leapfrog', color='purple', linestyle='--')
plt.plot(listT, erro6[:, x], label='Lax-Wendroff (2P)', color='brown', linestyle='--')
plt.grid()
plt.ylim(0,0.1)
plt.xlabel('Tempo (t)')
plt.ylabel('Diferença Absoluta')
plt.title('Diferença Absoluta em x=L', fontsize=16)
plt.legend()
plt.show()
Diferença entre os métodos estudados
|