BENRMÉRITA UNIVERSIDAD
AUTÓNOMA DE PUEBLA
Ingeniería Mecánica y Eléctrica
Proyecto: Cálculo de costos de cables por fuerza soportada
PRESENTA
Daniel Castillo Rodríguez
202229596
PROFESOR
Genaro Roberto López Aguilar
Asignatura
Informática y Programación
3 de mayo de 2023
1. Introducción
En la ingenieria surge la necesidad de realizar cálculos de forma rápida y eficiente mediante software. Esta necesidad nos
obliga a crear una solución que se ajuste a nuestras necesidades medinate el uso de algún lenguaje de programación que
disponga de las capacidades para dicho fin.
2. Objetivo
El porblema a abordar se encuentra relacionado con la estática, donde encontraremos la solución a sistemas de fuerzas
que nos ayudaran a determinar que tipo de cables que ayudarán a mantener estático un peso, aquí se requerirán el uso de
herramientas matemática para encontrar dicha fuerzas. Dependiendo de la fuerza que soporten los mismos, tendran un costo
por Newton(Unidad de Fuerza).
3. Desarrollo
#Librerias a usar en el proyecto
import [Link] as plt
import numpy as np
import math as m
#Definiciones a ocupar=========================================================
#Resultante de un vector de 2 componentes
def fr2(cx, cy):
f = (cx**2 + cy**2)**(1/2)
return f
#Resultante de un vector en tres dimensiones
def fr3(cx, cy, cz):
f = (cx**2 + cy**2 + cz**2)**(1/2)
return f
#Precio de un calble
def price(r):
p = 20 * r
return p
#Precio total de dos cables
def t_price(p1, p2):
pt = p1 + p2
return (pt)
#Precio total de tres cables
def t3_price(p1, p2, p3):
pt = p1 + p2 + p3
return (pt)
#Arreglo para la graficación==================================================
total = []
1
cable = [1, 2, 3, 4, 5, 6]
’’’
Este es el menu del proyecto
’’’
print(’’’1.
Introducción
En la ingenieria surge la necesidad de realizar cálculos de forma rápida y eficiente mediante software. Esta ne
obliga a crear una solución que se ajuste a nuestras necesidades medinate el uso de algún lenguaje de programac
disponga de las capacidades para dicho fin.’’’)
print()
print()
print()
print(’’’2.
Objetivo
El porblema a abordar se encuentra relacionado con la estática, donde encontraremos la solución a sistemas de f
que nos ayudaran a determinar que tipo de cables que ayudarán a mantener estático un peso, aquí se requerirán e
herramientas matemática para encontrar dicha fuerzas. Dependiendo de la fuerza que soporten los mismos, tendran
por Newton(Unidad de Fuerza).’’’)
print()
print()
print()
space = ’ ’ * 15
print(’%s Costo de cables para mantener estatico un peso’ % space)
print(’%s El precio por Newtons son los siguientes:’ % space)
print(’%s 20 Dolares por Newton a soportar:’ %space)
print(’Menú’)
print(’1.Cálculo de la fuerza de un número de cables por componentes (maximo 3)’)
print(’2.Cálculo de la fuerza de un numero de cables maximo 3’)
print(’[Link] almacenados’)
print(’[Link]áfica de los datos ’)
print(’5. Salir’)
print(’NOTA: Para graficar se requiere que obtenga 6 datos de precio total’)
print()
print()
print()
rn = 0
while rn<5:
rn = int(input(’A que menu desea ingresar : ’))
#Opcion1=====================================================================
if rn == 1:
print(’¿De cuantas componentes el el vector que desea ingresar? (Máximo 3 componentes)’)
comps = int(input(’===> ’))
if comps == 2:
print(’Los vectores que ha elegido son de 2 componentes’)
#Componentes de los vectores
cx = [1, 2]
2
cy = [1, 2]
v1 = [cx[0], cy[0]]
v2 = [cx[1], cy[1]]
#En esta parte del codigo se solicitara ingresar la componenetes del vector
for v in range (comps):
print(’Estas son las componentes del vector’, v+1)
cx[v] = float(input(’Ingrese la componenete en x ’))
cy[v] = float(input(’Ingrese la componenete en y ’))
#Aqui se hara un reordenamiento de las componenetes
v1 = [cx[0], cy[0]]
v2 = [cx[1], cy[1]]
print(v1, v2)
print(’Esta parte fue con las definiciones’)
rv1 = fr2(cx[0], cy[0])
rv2 = fr2(cx[1], cy[1])
print(’La resultante del primer vector es: ’, round(rv1, 2))
print(’La resultante del segundo vector es: ’, round(rv2, 2))
prices = [1, 2]
prices[0] = abs(price(rv1))
prices[1] = abs(price(rv2))
print(’El precio del cable 1 es: ’, round(prices[0], 2))
print(’El precio del cable 2 es: ’, round(prices[1], 2))
pt = t_price(prices[0], prices[1])
print(’El precio total por los cables sera: ’, round(pt, 2))
infm1 = prices
inft = pt
st = ’ ’ * 10
f = open(’precio_total.txt’, ’a’)
[Link](str(round(prices[0],2)) +’,’ + st + ’+’ + str(round(prices[1],2)) + ’,’ + st + ’,’+ st + ’,
[Link](’\n’)
[Link]()
print(’Su informacion ha sido guardada :)’)
[Link](round(pt, 2))
elif comps == 3:
print(’Los vectores que ha elegido son de 3 componentes’)
#Componentes de los vectores
cx = [1, 2, 3]
cy = [1, 2, 3]
cz = [1, 2, 3]
3
v1 = [cx[0], cy[0], cz[0]]
v2 = [cx[1], cy[1], cz[1]]
v3 = [cx[2], cy[2], cz[2]]
for v in range (comps):
print(’Estas son las componentes del vector’, v+1)
cx[v] = float(input(’Ingrese la componenete en x ’))
cy[v] = float(input(’Ingrese la componenete en y ’))
cz[v] = float(input(’Ingrese la componenete en z ’))
v1 = [cx[0], cy[0], cz[0]]
v2 = [cx[1], cy[1], cz[1]]
v3 = [cx[2], cy[2], cz[2]]
print(v1, v2, v3)
#Calculo de resulatantes
rv1 = fr3(cx[0], cy[0], cz[0])
rv2 = fr3(cx[1], cy[1], cz[1])
rv3 = fr3(cx[2], cy[2], cz[2])
print(’Resultante del vector 1 ’, round(rv1, 2))
print(’Resultante del vector 2 ’, round(rv2, 2))
print(’Resultante del vector 3 ’, round(rv3, 2))
#El siguiente procedimiento permitirá guardar la información
prices = [1, 2, 3]
prices[0] = abs(price(rv1))
prices[1] = abs(price(rv2))
prices[2] = abs(price(rv3))
print(’El precio del cable 1 es de:’, round(prices[0], 2))
print(’El precio del cable 2 es de:’, round(prices[1], 2))
print(’El precio del cable 3 es de:’, round(prices[2], 2))
pt = t3_price(prices[0], prices[1], prices[2])
print(’El precio total por los cables sera: ’, round(pt, 2))
st = ’ ’ * 10
f = open(’precio_total.txt’, ’a’)
[Link](str(round(prices[0],2)) +’,’ + st + ’+’ + str(round(prices[1],2)) + ’,’+ st + ’+’ + str(rou
[Link](’\n’)
[Link]()
print(’Su informacion ha sido guardada :)’)
[Link](round(pt, 2))
elif rn > 3:
print(’No se puede realizar esta operación’)
4
#Opcion2=====================================================================
elif rn == 2:
print(’Cuantos vectores desea resolver(Máximo 3 vectores)’)
nvec = int(input(’===> ’))
if nvec == 2:
print(’Calculadora de fuerza con base en angulos y peso a soportar’)
cx = [1, 2]
cy = [1, 2]
p = [1, 2]
v1 = [cx[0], cy[0]]
v2 = [cx[1], cy[1]]
p[1] = float(input(’Ingrese el peso del objeto(Mayor a 0)’))
rn = 2
for v in range(rn):
#Se ingresara el primer angulo para ser calculados sus valores de en x y
b = float(input(’Ingrese el angulo del vector’))
angle = (b * [Link])/(180)
c_x = [Link](angle)
c_y = [Link](angle)
cx[v] = c_x
cy[v] = c_y
print(cx[v])
print(cy[v])
#Aqui se hara un reordenamiento de las componenetes
v1 = [cx[0], cy[0]]
v2 = [cx[1], cy[1]]
#Se estableceran la matrices para solucionar un sistema de ecuaciones
A = [Link]([[cx[0], cx[1]], [cy[0], cy[1]]])
B = [Link]([0, p[1]])
#Se usa la funcion [Link] para resolver un sistema de ecuacions
x = [Link](A, B)
#Solución
print(x)
v1 = round(x[0], 2)
v2 = round(x[1], 2)
print(’El primer vector es’, v1)
print(’Es segundo vector es’,v2)
prices = [1, 2]
prices[0] = abs(x[0])
prices[1] = abs(x[1])
5
print(’El precio del cable 1 es: ’, round(prices[0], 2))
print(’El precio del cable 2 es: ’, round(prices[1], 2))
pt = t_price(prices[0], prices[1])
print(’El precio total por los cables sera: ’, round(pt, 2))
infm1 = prices
inft = pt
st = ’ ’*10
f = open(’precio_total.txt’, ’a’)
[Link](str(round(prices[0],2)) +’,’ + st + ’+’ + str(round(prices[1],2)) + ’,’ + st + ’,’+ st + ’,
[Link](’\n’)
[Link]()
print(’Su informacion ha sido guardada :)’)
[Link](round(pt, 2))
elif nvec == 3:
print(’Vector de tres componentes’)
#En esta parte se definen los arreglos sobre los cuales se trabajará
cx = [1, 2, 3]
cy = [1, 2, 3]
cz = [1, 2, 3]
p = [0, 0, 0]
#Se forma el arreglo de cada vector
v1 = [cx[0], cy[0], cz[0]]
v2 = [cx[1], cy[1], cz[1]]
v3 = [cx[2], cy[2], cz[2]]
rn = 3
p[1] = float(input(’Ingresa el peso a soportar(Mayor a 0) ’))
#Se usa un bucle con rango 3 dado que son 3 componenetes la que debemos ingresar
#y 3 vectores a formar
for v in range (rn):
print(’Estas son las componentes del vector’, v+1)
print(’NOTA: Debe basarse en el plano cartesiano x, y, z incluyendo valores negativos’)
cx[v] = float(input(’Ingrese la longitud en x ’))
cy[v] = float(input(’Ingrese la longitud en y ’))
cz[v] = float(input(’Ingrese la longitud en z ’))
#Resultante de los vectores distancia
rv1 = fr3(cx[0], cy[0], cz[0])
rv2 = fr3(cx[1], cy[1], cz[1])
rv3 = fr3(cx[2], cy[2], cz[2])
#Formación de vectores unitarios
vu1 = [cx[0]/rv1, cy[0]/rv1, cz[0]/rv1]
vu2 = [cx[1]/rv2, cy[1]/rv2, cz[1]/rv2]
6
vu3 = [cx[2]/rv3, cy[2]/rv3, cz[2]/rv3]
print(vu1)
print(vu2)
print(vu3)
print(p)
#Se establece las matrices para resolver un sistema 3x3
M1 = [Link]([[vu1[0], vu2[0], vu3[0]],
[vu1[1], vu2[1], vu3[1]],
[vu1[2], vu2[2], vu3[2]]])
#Se imprime la matriz para resolver el sistema
M2 = [Link]([0, p[1], 0])
print(M1 ,’=’, M2 )
#Se resuelve el sistema de ecuaciones con [Link]
x = [Link](M1, M2)
#Solución
print(’La magnitud de cada uno de los vectores es:’)
#Proyección de las resultantes de los vectores
print(’v1= ’, round(x[0], 2))
print(’v2= ’, round(x[1], 2))
print(’v3= ’, round(x[2], 2))
#El siguiente procedimiento permitirá guardar la información
prices = [1, 2, 3]
prices[0] = abs(x[0])
prices[1] = abs(x[1])
prices[2] = abs(x[2])
print(’El precio del cable 1 es de:’, round(prices[0], 2))
print(’El precio del cable 2 es de:’, round(prices[1], 2))
print(’El precio del cable 3 es de:’, round(prices[2], 2))
pt = t3_price(prices[0], prices[1], prices[2])
print(’El precio total por los cables sera: ’, round(pt, 2))
st = ’ ’ * 10
f = open(’precio_total.txt’, ’a’)
[Link](str(round(prices[0],2)) +’,’ + st + ’+’ + str(round(prices[1],2)) +’,’ + st + ’,’ + str(rou
[Link](’\n’)
[Link]()
print(’Su informacion ha sido guardada :)’)
[Link](round(pt, 2))
#Opción3======================================================================
elif rn == 3:
print(’’’Aquí se mostrá la información guardada
7
=
=
=
=
=
Y’’’)
print(total)
#Opcion4======================================================================
elif rn == 4:
print(’La graficación puede soportar solo hasta 6 datos’)
[Link](cable, total)
[Link](’Precio total de el conjunto de cables’)
[Link](’Conjunto de cables’)
[Link](’Precio total’)
[Link]()
elif rn > 5:
print(’No existe esta opición’)
else:
pass
print()
print()
print()
print(’Adios :)’)
4. Discusión
Dado que es un proyecto que requiere de muchas herramientas matemáticas, debido a esto es una mejor opción estructurar
un programa mediante librerias y modulos que posteariormente podrian ser llamadas para su uso, teniendo un codigo principal
en el cual se vayan invocando. De este modo el código no se haría grande y enredado. Se requiere también la optimización de
ciertos pasos ya que algunos son muy redundantes.
5. Conclusión
El uso del lenguaje Python es importante para encontrar una solución adecuadad a un problema de la ingeniería, mediante
el planteamiento de ciertas definiciones en nuestro algoritmo, podemos reciclar código, de manera que no tengamos que definir
varias veces una misma función.
8
6. Captura de Resultados
9
10
11
12
13