
break loop for (Python)
Publicado por chris (2 intervenciones) el 18/03/2015 10:21:51
Hola,
que tal?
Soy nuevo en el mundo de la programación y necesito una ayuda con el siguiente problema por favor :)
En el siguiente código, donde se utiliza el método numérico de Euler para representar la trayectoria de una avión de papel, me gustaría que el loop for (# time loop - Euler method) de la ultima linea parase cuando la la posición vertical (y) sea igual a 0 ( o sea prescindir de los valores negativos de la posición vertical).
muchas gracias!!!
que tal?
Soy nuevo en el mundo de la programación y necesito una ayuda con el siguiente problema por favor :)
En el siguiente código, donde se utiliza el método numérico de Euler para representar la trayectoria de una avión de papel, me gustaría que el loop for (# time loop - Euler method) de la ultima linea parase cuando la la posición vertical (y) sea igual a 0 ( o sea prescindir de los valores negativos de la posición vertical).
muchas gracias!!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# model parameters:
g = 9.8 # gravity in m s^{-2}
v_t = 4.9 # trim velocity in m s^{-1}
C_D = 1/50. # drag coefficient --- or D/L if C_L=1
C_L = 1.0 # for convenience, use C_L = 1
### set initial conditions ###
v0 = v_t # start at the trim velocity (or add a delta)
theta0 = pi/4 # initial angle of trajectory
x0 = 0.0 # horizotal position is arbitrary
y0 = 0.0 # initial altitude
def f(u):
v = u[0]
theta = u[1]
x = u[2]
y = u[3]
return numpy.array([-g*sin(theta) - C_D/C_L*g/v_t**2*v**2,
-g*cos(theta)/v + g/v_t**2*v,
v*cos(theta),
v*sin(theta)])
def euler_step(u, f, dt):
return u + dt * f(u)
T = 100.0 # final time
dt = 0.001 # time increment
N = int(T/dt) + 1 # number of time-steps
t = numpy.linspace(0.0, T, N) # time discretization
# initialize the array containing the solution for each time-step
u = numpy.empty((N, 4))
u[0] = numpy.array([v0, theta0, x0, y0])# fill 1st element with initial values
# time loop - Euler method
for n in range(N-1):
u[n+1] = euler_step(u[n], f, dt)
Valora esta pregunta


0