Está en la página 1de 14

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 matplotlib.pyplot 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(’3.Datos almacenados’)
print(’4.Grá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’)
f.write(str(round(prices[0],2)) +’,’ + st + ’+’ + str(round(prices[1],2)) + ’,’ + st + ’,’+ st + ’,
f.write(’\n’)
f.close()
print(’Su informacion ha sido guardada :)’)
total.append(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’)
f.write(str(round(prices[0],2)) +’,’ + st + ’+’ + str(round(prices[1],2)) + ’,’+ st + ’+’ + str(rou
f.write(’\n’)
f.close()
print(’Su informacion ha sido guardada :)’)
total.append(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 * m.pi)/(180)
c_x = m.cos(angle)
c_y = m.sin(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 = np.array([[cx[0], cx[1]], [cy[0], cy[1]]])
B = np.array([0, p[1]])

#Se usa la funcion linalg.solve para resolver un sistema de ecuacions


x = np.linalg.solve(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’)
f.write(str(round(prices[0],2)) +’,’ + st + ’+’ + str(round(prices[1],2)) + ’,’ + st + ’,’+ st + ’,
f.write(’\n’)
f.close()
print(’Su informacion ha sido guardada :)’)

total.append(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 = np.array([[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 = np.array([0, p[1], 0])


print(M1 ,’=’, M2 )
#Se resuelve el sistema de ecuaciones con linalg.solve
x = np.linalg.solve(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’)
f.write(str(round(prices[0],2)) +’,’ + st + ’+’ + str(round(prices[1],2)) +’,’ + st + ’,’ + str(rou
f.write(’\n’)
f.close()
print(’Su informacion ha sido guardada :)’)

total.append(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’)


plt.plot(cable, total)
plt.title(’Precio total de el conjunto de cables’)
plt.xlabel(’Conjunto de cables’)
plt.ylabel(’Precio total’)
plt.show()

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

También podría gustarte