3.1 Equilibrio Fuerzas – Grafica Vectores con Python

Fuerzas en equilibrio y Vectores , vectores, gráficas

Suma de vectores dadas las magnitudes y ángulos en grados sexagesimales, algoritmo usando Python.

Cuántos vectores:2
Componentes de los vectores:
magnitud[0]:1
angulo[0] (a°):50
magnitud[1]:2
angulo[1] (a°):160
magnitud: 1.905759540628703
ángulo: -49.543247280259386 grados

Para el ejercicio los vectores se expresan en magnitud y ángulo, los datos se ingresan en arreglos separados pero relacionados por el índice.

Para realizar las gráficas se cambian los vectores a coordenadas cartesianas, dado que la instrucción de gráfica de flechas requiere los puntos de partida y los puntos de llegada.

Instrucciones en Python

# FCNM-ESPOL-2015
# Graficar suma de vectores como trapecio
# Propuesta: Edison Del Rosario/
#            edelros@espol.edu.ec
import numpy as np
import matplotlib.pyplot as plt

# INGRESO de datos
n = int(input('Cuántos vectores:'))

print('Componentes de los vectores:')
A = np.zeros(n, dtype=float)
alfa = np.zeros(n, dtype=float)
i = 0
while (i<n):
    A[i]    = float(input('magnitud['+str(i)+']:'))
    alfa[i] = float(input('angulo['+str(i)+'] (a°):'))
    i = i+1

# PROCEDIMIENTO
# cambia coordenadas a cartesianas
Ax = np.zeros(n, dtype=float)
Ay = np.zeros(n, dtype=float)
i = 0
while (i<n):
    Ax[i] = A[i]*np.cos(alfa[i]*2*np.pi/360)
    Ay[i] = A[i]*np.sin(alfa[i]*2*np.pi/360)
    i = i+1
    
# Calcular Resultante
i  = 0
Sx = 0
Sy = 0
while (i<n):
    Sx = Sx + Ax[i]
    Sy = Sy + Ay[i]
    i = i+1
magnitud = np.linalg.norm([Sx,Sy])
grados = np.arctan(Sy/Sx)*(180/np.pi)

# Ubicar la posicion inicial de los vectores
px = np.zeros(n, dtype=float)
py = np.zeros(n, dtype=float)

# SALIDA de resultados
print('magnitud: '+str(magnitud))
print('ángulo: '+str(grados)+' grados')

# límites de los ejes
xmin = np.min([np.min(Ax),Sx,np.min(px)])
xmax = np.max([np.max(Ax),Sx,np.max(px)])
ymin = np.min([np.min(Ay),Sy,np.min(py)])
ymax = np.max([np.max(Ay),Sy,np.max(py)])
limite=np.array([xmin,xmax,
                 ymin,ymax])
plt.axis(limite)

# grafica de vectores
plt.quiver(px,py,Ax,Ay,
           color='blue', angles='xy',
           scale_units='xy', scale=1)
# grafica de vector suma
plt.quiver(0,0,Sx,Sy,
           color='green', angles='xy',
           scale_units='xy', scale=1,
           label = 'resultante')
plt.title('Suma de '+str(n)+' vectores')
plt.legend()
plt.show()

[Física Básica con Python]