本文整理汇总了Python中planeta.Planeta.avanza_rk4方法的典型用法代码示例。如果您正苦于以下问题:Python Planeta.avanza_rk4方法的具体用法?Python Planeta.avanza_rk4怎么用?Python Planeta.avanza_rk4使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类planeta.Planeta
的用法示例。
在下文中一共展示了Planeta.avanza_rk4方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Planeta
# 需要导入模块: from planeta import Planeta [as 别名]
# 或者: from planeta.Planeta import avanza_rk4 [as 别名]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from planeta import Planeta
import numpy as np
import matplotlib.pyplot as plt
condicion_inicial = [10, 0, 0, 2]
p = Planeta(condicion_inicial)
dt=np.linspace(0,10000,10001)
Energias=[]
X=[]
Y=[]
for i in (dt):
p.avanza_rk4(dt[i])
Energias.append(p.energia_actual)
X.append(p.y_actual[0])
Y.append(p.y_actual[1])
plt.figure(1)
plt.plot(Energias, dt)
plt.xlabel('energia',fontsize=18)
plt.ylabel('tiempo', fontsize=18)
plt.figure(2)
plt.plot(X, Y)
plt.xlabel('x', fontsize=18)
plt.ylabel('y', fontsize=18)
示例2: Planeta
# 需要导入模块: from planeta import Planeta [as 别名]
# 或者: from planeta.Planeta import avanza_rk4 [as 别名]
p = Planeta(condicion_inicial)
t_final = 3000.
numero_pasos = 2000+1
dt= t_final / (float)(numero_pasos)
x = np.zeros(numero_pasos)
y = np.zeros(numero_pasos)
vx = np.zeros(numero_pasos)
vy = np.zeros(numero_pasos)
energia = np.zeros(numero_pasos)
[x[0],y[0],vx[0],vy[0]] = condicion_inicial
energia[0] = p.energia_total()
p.avanza_rk4(dt)
resultados = p.y_actual
x[1] = resultados[0]
y[1] = resultados[1]
vx[1] = resultados[2]
vy[1] = resultados[3]
energia[1] = p.energia_total()
for i in range (2,numero_pasos):
p.avanza_verlet(dt,x[i-2],y[i-2])
resultados = p.y_actual
x[i] = resultados[0]
y[i] = resultados[1]
vx[i] = resultados[2]
vy[i] = resultados[3]
energia[i] = p.energia_total()
示例3: Planeta
# 需要导入模块: from planeta import Planeta [as 别名]
# 或者: from planeta.Planeta import avanza_rk4 [as 别名]
import numpy as np
import matplotlib.pyplot as plt
#Solucion a trayectoria
condicion_inicial = [10.0, 0.0, 0.0, 0.3]
Mars = Planeta(condicion_inicial)
x_pos = []
y_pos = []
energia = []
dt=0.1
for i in range(10000):
x_pos.append(Mars.y_actual[0])
y_pos.append(Mars.y_actual[1])
energia.append(Mars.energia_total())
Mars.avanza_rk4(dt)
x_pos = np.array(x_pos)
y_pos = np.array(y_pos)
energia = np.array(energia)
#Resultados
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.plot(x_pos,y_pos)
ax.plot(0,0,'o',color='r',linewidth=2.0)
ax.set_xlabel('x [m]')
ax.set_ylabel('y [m]')
ax.set_xlim([-10,12])
ax.set_ylim([-12,12])
ax.set_aspect('equal')
示例4: orbitar
# 需要导入模块: from planeta import Planeta [as 别名]
# 或者: from planeta.Planeta import avanza_rk4 [as 别名]
def orbitar(CI,solucion, prt=True):
'''
Esta función es cool, porque le entregas las condiciones iniciales (CI)
en forma de x0,y0,vx0,vy0, además de un string con el tipo de solución
que quieres, como 'euler', 'rk4' o 'verlet' y nos devuelve las coordenadas
x,y y la energia total del planeta. Además de un ploteo de la órbita, apropi-
adamente labelado y un ploteo de la energía vs el tiempo.
La ultima parte es para que plotee, el valor default es que
plotee (true or false).
Ejemplo de uso:
orbitar([10,0,0,0.1],'verlet')
x=[0,0.1,...]
y=[0,0.3,...]
energia=[7,8,...]
'''
if solucion=='euler':
n= 2500 #grande y dsps se arregla
if solucion=='rk4':
n= 5000 #grande y dsps se arregla
if solucion=='verlet':
n=800
Aiur= Planeta(CI) #se crea el planeta
if solucion=='verlet_reloaded': #caso especial para la ultima parte
n=6000
Aiur= Planeta(CI,alpha=alpha2) #si es el verlet bkn se parcha
dt= 1 #error si es muy chico
tmax=n*dt
x=[] #listas vacias a llenar
y=[]
pylon=[] #energia
x= np.append(x,CI[0]) #llenamos con el primer termino
y= np.append(y,CI[1])
pylon= np.append(pylon,Aiur.energia_total())
for i in range(tmax): #aca se hace la iteracion del paso
if solucion=='euler':
Aiur.avanza_euler(dt)
if solucion=='rk4':
Aiur.avanza_rk4(dt)
if solucion=='verlet' or solucion=='verlet_reloaded':
Aiur.avanza_verlet(dt)
xn,yn,vxn,vyn=Aiur.y_now
x= np.append(x,xn)
y= np.append(y,yn)
pylon= np.append(pylon,Aiur.energia_total())
times=np.linspace(0,tmax,tmax+1)
if prt==True:
fig1=plt.figure(1) #aca se plotea, muy standar
fig1.clf()
if solucion=='euler':
plt.plot(x,y,'r',label= 'Trayectoria metodo Euler')
plt.title('Trayectoria metodo Euler')
if solucion=='rk4':
plt.plot(x,y,'r',label= 'Trayectoria metodo RK4')
plt.title('Trayectoria metodo RK4')
if solucion=='verlet' or solucion=='verlet_reloaded':
plt.plot(x,y,'r',label= 'Trayectoria metodo Verlet')
plt.title('Trayectoria metodo Verlet')
plt.xlabel('X')
plt.ylabel('Y')
plt.savefig('verlet_rld.png')
plt.draw()
plt.show()
fig2=plt.figure(2)
fig2.clf()
plt.plot(times, pylon,'g')
plt.xlabel('Tiempo')
plt.ylabel('Energia')
plt.title('Tiempo vs Energia')
plt.savefig('verlet_rld_energia.png')
plt.draw()
plt.show()
return x,y,pylon
示例5: Planeta
# 需要导入模块: from planeta import Planeta [as 别名]
# 或者: from planeta.Planeta import avanza_rk4 [as 别名]
condicion_inicial = [10, 0, 0, 0.3]
Jupiter = Planeta(condicion_inicial)
x_value = []
y_value = []
E = []
dt=0.1
pasos=10500
t_values = np.array(range(pasos))*dt
for i in range(pasos):
x_value.append(Jupiter.y_actual[0])
y_value.append(Jupiter.y_actual[1])
E.append(Jupiter.energia_total())
Jupiter.avanza_rk4(dt)
x_value = np.array(x_value)
y_value = np.array(y_value)
energia = np.array(E)
print energia
fig=plt.figure(1)
plt.subplot(2, 1, 1)
fig.subplots_adjust(hspace=.5)
plt.plot(x_value , y_value)
plt.axis('equal')
plt.title('Orbita descrita por planeta,Runge-Kutta')
plt.xlabel("x [m]")
plt.ylabel("y [m]")
示例6: range
# 需要导入模块: from planeta import Planeta [as 别名]
# 或者: from planeta.Planeta import avanza_rk4 [as 别名]
t_total = 1000.
N = 1000
t_paso= t_total/N
x = np.zeros(N); y = np.zeros(N)
vx = np.zeros(N); vy = np.zeros(N)
E = np.zeros(N)
[x[0],y[0],vx[0],vy[0]] = CI
E[0] = p.energia_total()
for i in range (1,N):
p.avanza_rk4(t_paso)
x[i] = p.y_actual[0]
y[i] = p.y_actual[1]
vx[i] = p.y_actual[2]
vy[i] = p.y_actual[3]
E[i] = p.energia_total()
fig=plt.figure(1)
fig.subplots_adjust(hspace=0.4)
plt.subplot(2, 1, 1)
plt.plot(x, y, 'r-')
plt.title("Trayectoria potencial central (Metodo RK4)")
plt.xlabel("x")
plt.ylabel("y")
示例7:
# 需要导入模块: from planeta import Planeta [as 别名]
# 或者: from planeta.Planeta import avanza_rk4 [as 别名]
from planeta import Planeta
import numpy as np
import matplotlib.pyplot as plt
#Condiciones iniciales
condicion_inicial=[10, 0, 0, 0.27] #Escogi Vy=0.27
p=Planeta(condicion_inicial)
Pasos=800 #En este metodo necesite una cantidad moderada de pasos
h=800/Pasos #para que los gráficos den cosas razonables. Con tiempo igual a
T=np.linspace(0,800, Pasos) #800 se logran las 5 vueltas
x=[10]
y=[0]
Ene=[p.EneActual]
N=1 #Variable auxiliar para interar
while N<Pasos: #Aplica el metodo de runge-kutta 4 definido en la clase planeta.
p.avanza_rk4(h)
N+=1
x.append(p.y_actual[0])
y.append(p.y_actual[1])
p.energia_total()
Ene.append(p.EneActual)
#Plots
fig=plt.figure()
fig.add_subplot(211)
plt.plot(x,y)
plt.title('$Trayectoria$ $y$ $Energia$ $vs$ $Tiempo$ \n $RK4$ $Con$ $v_{y}(0)=0.27$')
plt.xlabel('$x$')
plt.ylabel('$y$')
fig.add_subplot(212)
plt.plot(T, Ene)
plt.xlabel('$Tiempo$')
示例8: Planeta
# 需要导入模块: from planeta import Planeta [as 别名]
# 或者: from planeta.Planeta import avanza_rk4 [as 别名]
alpha = 0
condicion_inicial = [10, 0, 0, 0.2]
p = Planeta(condicion_inicial,alpha)
print "Energia Total", p.energia_total()
contador = 0
x=np.zeros(100001)
y=np.zeros(100001)
t=np.linspace(0,2000,100001)
E_total = np.zeros(100001)
while contador<=100000:
E_total[contador] = p.energia_total()
x[contador] = p.y_actual[0]
y[contador] = p.y_actual[1]
p.avanza_rk4(0.02)
contador +=1
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Orbitas con Metodo RK4")
plt.plot(x,y,'-')
plt.savefig("Orbitas con Metodo RK4")
plt.show()
plt.xlabel("Tiempo")
plt.ylabel("Energia Total")
plt.title("Energia total del sistema como funcion del Tiempo")
plt.plot(t,E_total,'-')
plt.savefig("Energia total con Metodo RK4")
示例9: Planeta
# 需要导入模块: from planeta import Planeta [as 别名]
# 或者: from planeta.Planeta import avanza_rk4 [as 别名]
la órbita y de la energía en el tiempo.
'''
from planeta import Planeta
import numpy as np
import matplotlib.pyplot as plt
#Solucion a trayectoria
condicion_inicial = [10.0, 0.0, 0.0, 0.3]
Mercury = Planeta(condicion_inicial,10**(-2.350))
x_pos = [Mercury.y_actual[0]]
y_pos = [Mercury.y_actual[1]]
energia = [Mercury.energia_total()]
dt=0.01
Mercury.avanza_rk4(dt)
for i in range(600000):
x_pos.append(Mercury.y_actual[0])
y_pos.append(Mercury.y_actual[1])
energia.append(Mercury.energia_total())
Mercury.avanza_verlet(dt)
x_pos = np.array(x_pos)
y_pos = np.array(y_pos)
energia = np.array(energia)
#Calculo de instantes en perihelio y frecuencia de precesion
r = np.sqrt(np.power(x_pos,2)+np.power(y_pos,2))
r_maximo = max(r)
esta_en_perihelio = False
tiempos_perihelio = []