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()