Buscar

RungeKuttaUmaEDO

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
Atenção - %clear limpa o console
"""
#Apresentação
print("Método de Runge-Kutta de 4Ordem na linguagem python")
#Importando bibliotecas matemáticas 
import matplotlib.pyplot as plt
import numpy as np
# Derivada - dx(t)/dt = f(t,x(t))
def f(t,x):
 return (np.sin(1/x))
# Método(Função) - Neste método criamos a rotina para implementação do algoritmode Runge-Kutta de 4Ordem
def RungeKutta4(t0,x0,h,n):
 #h = dx - passo
 #n - quantidade de interação a ser realizadas
 #t0 - tempo inicial
 #x0 - posição inicial no instante t0, x(t0) = x0
 
 #Inciando novas variáveisem t = t0 e x = x0
 t = t0
 x = x0
 
 #loop for
 for i in range(0,n,1):
 # Algoritmo de Runge-Kutta de 4Ordem
 k1 = h*f(t,x)
 k2 = h*f((t + (h/2)), (x + (k1/2)))
 k3 = h*f((t + (h/2)), (x + (k2/2)))
 k4 = h*f((t + h), (x + k3))
 # POsição e tempo
 x = x + ((k1 + 2*k2 + 2*k3 + k4)/6)
 t = t + h
 
 #Saídda
 print("t = ",t," || x = ",x)
 
 #Plota gráficos
 
 
 #Gráfico (t, x(t))
 plt.plot(t,x,'o')#plotar um gráfico (t,x(t))
 plt.xlabel('t - tempos em (s)')
 plt.ylabel('x(t) - metros(m)')
 plt.title('Gráfico dx(t)/dt = f(t,x(t))')
 plt.grid(0.05)
 
 
 '''
 #Gráfico (x(t), dx(t)/dt) - espaço de fase, onde dx(t)/dt = f(t,x(t))
 plt.plot(t,f(t,x),'*')#plotar um gráfico (t,x(t))
 plt.xlabel('x(t) - posição em (m)')
 plt.ylabel('v(t) - metros(m /s)')
 plt.title('Gráfico espaço de fase')
 plt.grid(0.05)
 '''
 
 '''
 #Engergia
 
 #Energia cinética
 T = (1/2)*1*f(t,x)*f(t,x)
 U = (1/2)*1*(x*x)
 E = T + U
 
 #Gráfico (x(t), dx(t)/dt) - espaço de fase, onde dx(t)/dt = f(t,x(t))
 plt.plot(t,f(t,x),'*')#plotar um gráfico (t,x(t))
 plt.xlabel('t - tempos em (s)')
 plt.ylabel('Energia - Joule (J)')
 plt.title('Gráfico Energia total o sistema')
 plt.grid(0.05)
 '''
 
 
 
'''
Digite essew exemplo -> 
RungeKutta4(0,2,0.01,100)
'''

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando