No es una pregunta tonta, y en realidad es imposible responderla analíticamente (para el caso de la resistencia cuadrática con velocidad horizontal y aceleración vertical).
He aquí algunas cosas básicas que le ayudarán a pensar en esto:
- La fuerza de arrastre apunta en la dirección opuesta a la velocidad
- porque la fuerza de arrastre es proporcional a la velocidad al cuadrado, la velocidad horizontal aumenta la resistencia vertical (!)
- La ecuación puede ser desalentadora, hasta que te das cuenta de que básicamente está diciendo "la fuerza de arrastre es la fuerza necesaria para mover todo el aire que mi proyectil atraviesa"
La ecuación es
$$F = \frac12 \rho v^2 A C_D$$
Si tiene una zona (de frente) de $A$ Entonces, cada segundo te mueves a través de una columna de aire de volumen $V = Av$ donde $v$ es la velocidad. La masa de esta columna es $m = \rho V = \rho A v$ . Si mueves todo ese aire a la velocidad de tu proyectil, éste adquiere un impulso de $p = mv = \rho A v^2$ . Esto empieza a parecerse mucho a tu ecuación de arrastre. Sólo necesitamos el factor $\frac12 C_D$ para tener en cuenta la forma en que se mueve realmente el aire (no se trata simplemente de "mover toda la columna de aire a la velocidad del proyectil") y ya está.
Para calcular la trayectoria tendrás que utilizar la integración numérica. Se calcula la resistencia inicial a partir de la velocidad inicial. Esto te permite calcular la aceleración instantánea (no olvides la gravedad); deja que esta aceleración actúe durante un tiempo muy corto, y calcula las nuevas componentes (horizontal y vertical) de la velocidad. A partir de la velocidad calcula el desplazamiento. Repite la operación para el siguiente paso de tiempo.
Actualización
He decidido escribir un sencillo script en Python que demuestre el enfoque. Cuando se ejecuta con A=0 (efectivamente no hay arrastre) se puede comparar el resultado con la solución analítica - esto muestra que la integración funciona correctamente. Cuando se añade un arrastre "realista", se puede calcular la trayectoria para cualquier otra configuración. Como siempre, mi código viene sin garantía ("no es necesariamente un ejemplo de buena codificación, no está totalmente probado, no hay comprobación de errores, etc..."). Que lo disfrutes.
# example of numerical integration of projectile motion in 2D
import matplotlib.pyplot as plt
from math import sin, cos, atan2, pi, sqrt
# constants
rho = 1.22 # density of medium
g = 9.81 # acceleration of gravity
# projectile properties
A = 0.05 # cross sectional area
Cd = 0.5 # drag factor
m = 0.1 # mass
# initial velocity & angle (radians)
v = 10. # m/s
theta = pi/4
# initial position, velocity, time
x = 0.
y = 5. # height above target surface
vx = v * cos(theta)
vy = v * sin(theta)
vx_init = vx
t = 0.
# storage for the result
X = [x]
Y = [y]
# step size
dt = 0.01
def drag(v, theta):
F =0.5*rho*v*v*A*Cd
return (F*cos(theta), F*sin(theta))
while ((y>0) | (vy>0)):
# instantaneous force:
Fx, Fy = drag(v, theta)
# acceleration:
ax = -Fx/m
ay = -Fy/m - g
# position update:
x = x + vx*dt + 0.5*ax*dt*dt
y = y + vy*dt + 0.5*ay*dt*dt
# update velocity components:
vx = vx + ax*dt
vy = vy + ay*dt
# new angle and velocity:
v = sqrt(vx*vx+vy*vy)
theta = atan2(vy,vx)
# store result for plotting:
X.append(x)
Y.append(y)
t = t + dt
# adjust last point to Y=0 - we may have "overshot":
ft = Y[-2]/(Y[-2]-Y[-1]) # fractional time to last point
X[-1] = X[-2] + (X[-1]-X[-2])*ft
Y[-1] = 0.
t = t - (1-ft)*dt
print('Total flight time: %.3f sec\n'%t)
print('Total distance: %.2f m'%X[-1])
print('Initial horizontal velocity: %.2f m/s'%vx_init)
print('Final horizontal velocity: %.2f m/s'%vx)
plt.figure()
plt.plot(X,Y)
plt.title('projectile motion')
plt.xlabel('X position')
plt.ylabel('Y position')
plt.show()
Y un ejemplo de la salida de lo anterior:
0 votos
Se puede encontrar una buena introducción al arrastre aquí
0 votos
Ver también esta pregunta