Escenario Nro 1
Escenario Nro 2
Escenario Nro 3
Solución
Se desecha la respuesta de 30.5 km porque no esta en el rango de 1 a 20 km.
En consecuencia para los costos de:
3000$ en Cable Terrestre
5000$ en Cable Marino
debemos comprar 9.5 km de Cable Terrestre y 17.5 km cable marino.
Para el cálculo de X en nuestro programa debemos usar la formula de X1 dado que nos presentaría valores entre 0 y 20Km.
NOTA1: RECUERDE, SI EL CABLE MARITIMO CUESTA LO MISMO O ES MAS BARATO QUE EL CABLE TERRESTRE LA OPCIÓN MAS ECONOMICA ES LANZAR UN CABLE MARITIMO DIRECTAMENTE ENTRE A Y B
Programa Nro1 en C++
// Programa Nro1 para la estimación del cable de Fibra óptica (Terrestre y Marítimo)
// La idea es determinar el punto intermedio entre A y C en donde finaliza
// el tendido del cable terrestre y comienza el tendido del cable marítimo
// Elaborado por CARLOS FERRER
// Rev Septiembre 2024
// Librerías requeridas
#include<iostream>
#include<math.h>
using namespace std;
main()
{
double CM=-1,CT=-1,W=0; //CM=Costo Cable Marítimo CT=Costo Cable terrestre W=CM*CM/(CT*CT)
double a,b,c; // elemento de la ecuación de 2do grado
double X; //Cantidad de Metros de Cable Terrestre
double BD;//Cantidad de Cable Marítimo
double Costo; //Costo minino del tendido del cableado
double distancia_directa; //distancia directa entre a y b
// Ingresamos los costos de los cables terrestres y marítimos
while (CM<0)
{
cout<<"Ingrese el costo en ($) del tendido de (KM) de Cable maritimo = ";
cin>>CM;
}
while (CT<0)
{
cout<<"Ingrese el costo en ($) del tendido de (KM) de Cable Terrestre = ";
cin>>CT;
}
// Evaluamos el escenario en el cual no conviene hacer ningún calculo
if (CM<=CT)
{
distancia_directa= sqrt(pow(14,2)+pow(20,2));
cout <<endl<<"Cuando el costo del cable Maritimo ("<<CM<<"$) es menor "<<endl;
cout <<"o igual al costo del cable Terrestre ("<<CT<<"$)"<<endl;
cout <<"La mejor opcion es solo usar UNICAMENTE cable Maritimo desde A a B"<<endl<<endl;
cout <<"En este caso solo se requiere 24.4131112314674 km de Cable Maritimo"<<endl;
cout <<"y 0 km de Cable Terrestre"<<endl<<endl;
cout <<"El costo optimo en este caso seria = "<< CM*distancia_directa<<" $"<<endl;
cout <<"CON ESTAS CANTIDADES SE OBTIENE EL MINIMO COSTO POSIBLE!!!"<<endl<<endl;
goto fin;
}
// Se determina la distancia X en donde el costo del cableado se hace mínimo
W=pow(CT,2)/pow(CM,2);
a=1-W;
b=40*(W-1);
c=400-596*W;
X=(-b-sqrt(pow(b,2)-4*a*c))/(2*a);
// Determinamos la cantidad de cable maritimo
BD=sqrt(596-40*X+pow(X,2));
//Determinamos el costo del tendido del cable
Costo=X*CT+BD*CM;
// presentamos los resultados
cout<<endl<<"La cantidad de cable Marítimo requerido es (KM) ="<<BD<<endl;
cout<<"La cantidad de cable Terrestre requerido es (KM) ="<<X<<endl;
cout<<"El Costo del tendido es ="<<Costo<<" $"<<endl;
cout<<"CON ESTAS CANTIDADES SE OBTIENE EL MINIMO COSTO POSIBLE!!!"<<endl;
fin:
system("pause");
}
Programa Nro1 en Python
# Programa Nro1 para la estimación del cable de Fibra óptica (Terrestre y Marítimo)
# La idea es determinar el punto intermedio entre A y C en donde finaliza
# el tendido del cable terrestre y comienza el tendido del cable marítimo
# Elaborado por CARLOS FERRER
# Rev Septiembre 2024
# Biblioteca requerida
import math
import os
os.system("cls")
# Costo Cable Maritimo
CM = -1
# Costo Cable Terrestre
CT = -1
# W=CM^2/CT^2
W = 0
# Ingresamos los costos de los cables terrestres y marítimos
while CM < 0:
CM = float(input("Ingrese el costo del cable maritimo ($/km) = "))
while CT < 0:
CT = float(input("Ingrese el costo del cable Terrestre ($/km) = "))
# Evaluamos el escenario en el cual no conviene hacer ningún calculo
if CM <= CT:
distance_direct = math.sqrt(14**2 + 20**2)
# Presentamos resultados de este escenario
print(f"\nCuando el costo del camble maritimo (${CM}) es menor o igual que el costo del cable terestre (${CT})")
print("La mejor opción es usar solamente cable maritimo de A a B")
print(f"En este caso, solamente 24.4131112314674 km de cable maritimo es requerido")
print("and 0 km of Terrestrial cable")
print(f"El costo optimo en este caso correspondería = {CM*distance_direct} $")
print("CON ESTAS CANTIDADES, OBTENDRIAMOS EL MÍNIMO COSTO!!!")
else:
W = (CT/CM)**2
a = 1 - W
b = 40 * (W - 1)
c = 400 - 596 * W
X = (-b - math.sqrt(b**2 - 4*a*c)) / (2*a)
BD = math.sqrt(596 - 40*X + X**2)
cost = X*CT + BD*CM
# Presentamos resultados de este escenario
print(f"\nLa cantidad de cable maritimo requerido es (KM) = {BD}")
print(f"La cantidad de cable maritimo requerido es (KM) = {X}")
print(f"El costo correspondería = {cost} $")
print("CON ESTAS CANTIDADES, OBTENDRIAMOS EL MÍNIMO COSTO!!!")
NOTA2: Existe otra forma de resolver este problema usando mínima matemática.
Basta con barrer tota la longitud de la distancia terrestre (0-20km), en pocas palabras ir moviendo X por ejemplo de 0.01 en 0.01, calculando de forma simultanea todas las distancias de X a B, para que con esos datos se evaluaran todos los costos posibles y así determinar la opción más económica. Para esto la única ecuación que hacia falta era la distancia de X a B en función de X y eso ya lo sabíamos por el teorema de Pitágoras (distancia de X a B = √[(20-x) 2 + 142] ).
Programa Nro2 en C++
// Programa Nro2 para la estimación del cable de Fibra óptica (Terrestre y Marítimo)
// La idea es determinar el punto intermedio entre A y C en donde finaliza
// el tendido del cable terrestre y comienza el tendido del cable marítimo
// Elaborado por CARLOS FERRER - Septiembre 2024
// Librerías requeridas
#include<iostream>
#include<math.h>
using namespace std;
main()
{
double CM=-1,CT=-1; //CM=Costo Cable Marítimo CT=Costo Cable terrestre W=CM*CM/(CT*CT)
double X,X_aux; //Cantidad de Metros de Cable Terrestre
double BD, BD_aux;//Cantidad de Cable Marítimo
double Costo,Costo_aux; //Costo minino del tendido del cableado
// Ingresamos los costos de los cables terrestres y marítimos
while (CM<0)
{
cout<<"Ingrese el costo en ($) del tendido de (KM) de Cable maritimo = ";
cin>>CM;
}
while (CT<0)
{
cout<<"Ingrese el costo en ($) del tendido de (KM) de Cable Terrestre = ";
cin>>CT;
}
// Determinamos el costo de irnos directo de A a B
X=0;
BD=sqrt(pow(20,2)+pow(14,2));
Costo=CT*X+CM*BD;
/* Revisamos todas las posibilidades de la distancia terreste de forma de
determinar si hay un costo menor*/
X_aux=0.01;
while (X_aux<20)
{
BD_aux=sqrt(pow(20-X_aux,2)+pow(14,2));
Costo_aux=CT*X_aux+CM*BD_aux;
if(Costo_aux<Costo)
{
Costo=Costo_aux;
X=X_aux;
BD=BD_aux;
}
X_aux=X_aux+0.01;
}
// Determinamos el costo de irnos directo de A a C y luego a B
Costo_aux=CT*20+CM*14;
if(Costo_aux<Costo)
{
Costo=Costo_aux;
X=20;
BD=14;
}
// Presentamos los resultados
cout<<endl<<"La cantidad de cable Marítimo requerido es (KM) ="<<BD<<endl;
cout<<"La cantidad de cable Terrestre requerido es (KM) = "<<X<<endl;
cout<<"El Costo del tendido es = "<<Costo<<" $"<<endl;
cout<<"CON ESTAS CANTIDADES SE OBTIENE EL MINIMO COSTO POSIBLE!!!"<<endl;
system("pause");
}
Programa Nro2 en Python
#Programa Nro2 para la estimación del cable de Fibra óptica (Terrestre y Marítimo)
# La idea es determinar el punto intermedio entre A y C en donde finaliza
# el tendido del cable terrestre y comienza el tendido del cable marítimo
# Elaborado por CARLOS FERRER - Septiembre 2024
# Librerías requeridas
import math
import os
os.system("cls")
CM = -1 # Costo del cable marítimo
CT = -1 # Costo del cable terrestre
X = 0 # Distancia X que vamos a ir verificando
X_aux = 0.01
# Ingresamos los costos de los cables terrestres y marítimos
while CM < 0:
CM = float(input("Ingrese el costo en ($) del tendido de (KM) de Cable maritimo = "))
while CT < 0:
CT = float(input("Ingrese el costo en ($) del tendido de (KM) de Cable Terrestre = "))
# Calculamos el costo para x=0.01
BD = math.sqrt(20**2 + 14**2)
BD_aux = 0
Costo = CT*X + CM*BD
Costo_aux = 0
# Iteramos hasta conseguir costo mínimo
while X_aux < 20:
BD_aux = math.sqrt((20-X_aux)**2 + 14**2)
Costo_aux = CT*X_aux + CM*BD_aux
if Costo_aux < Costo:
Costo = Costo_aux
X = X_aux
BD = BD_aux
X_aux = X_aux + 0.01
Costo_aux = CT*20 + CM*14
if Costo_aux < Costo:
Costo = Costo_aux
X = 20
BD = 14
# Presentamos Resultados
print(f"\nLa cantidad de cable Marítimo requerido es (KM) = {BD:.2f}")
print(f"La cantidad de cable Terrestre requerido es (KM) = {X:.2f}")
print(f"El Costo del tendido es = {Costo:.2f} $")
print("CON ESTAS CANTIDADES SE OBTIENE EL MINIMO COSTO POSIBLE!!!")