
Función básica de python
Publicado por Jorge (2 intervenciones) el 05/08/2021 23:13:58
Hola a todos! Quisiera saber si alguien podría ayudarme a comprender una función de Python. Hace unos meses estoy cursando una materia donde programamos fórmulas físicas en python. Ahora estoy programando el atractor de rossler. Pero se me complico ya que es la primera vez que programo en 3D. Un compañero me ayudó y pude hacerlo funcionar, pero luego me surgió una duda: ¿por qué cuando define "xv", "yv", "zv", usa np.zeros y no otro tipo como no.arange o linspace? Y, por qué dentro del mismo pone "P+1" y no simplemente "P"?
Abajo les dejo el código.
Espero puedan ayudarme a comprender mejor esos conceptos.
Saludos!
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import math as m
fig= plt.figure()
ax= Axes3D(fig)
def Rossler(x, y, z, a= 0.2,b= 0.2, c= 5.7 ):
u = -y - z
v = x + a*y
w = b + x*z - c*z
return (u, v, w)
dt = 0.01
P= 50000
#Aquí está mi duda!
#-----------------------------------
xv=np.zeros((P+1))
yv=np.zeros((P+1))
zv=np.zeros((P+1))
#------------------------------------
#Condiciones iniciales
xv[0], yv[0], zv[0] = (0, 3, 0)
for i in range(P) :
u,v,w= Rossler(xv[i], yv[i], zv[i])
xv[i+1] = xv[i]+ u*dt
yv[i+1] = yv[i]+ v*dt
zv[i+1] = zv[i]+ w*dt
ax.plot(xv, yv, zv, lw=0.5)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
Abajo les dejo el código.
Espero puedan ayudarme a comprender mejor esos conceptos.
Saludos!
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import math as m
fig= plt.figure()
ax= Axes3D(fig)
def Rossler(x, y, z, a= 0.2,b= 0.2, c= 5.7 ):
u = -y - z
v = x + a*y
w = b + x*z - c*z
return (u, v, w)
dt = 0.01
P= 50000
#Aquí está mi duda!
#-----------------------------------
xv=np.zeros((P+1))
yv=np.zeros((P+1))
zv=np.zeros((P+1))
#------------------------------------
#Condiciones iniciales
xv[0], yv[0], zv[0] = (0, 3, 0)
for i in range(P) :
u,v,w= Rossler(xv[i], yv[i], zv[i])
xv[i+1] = xv[i]+ u*dt
yv[i+1] = yv[i]+ v*dt
zv[i+1] = zv[i]+ w*dt
ax.plot(xv, yv, zv, lw=0.5)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
Valora esta pregunta


0