Professional Documents
Culture Documents
Nombre:
Matrcula: 020954
1. Para que la pieza central de un eje de rotacin de acerocomo el que se muestra en la figurapueda
embonar perfectamente en el ensamble, sta se debe enfriar muy por debajo de los 0C con el fin de causarle
cierto grado de contraccin y as pueda pasar a travs del orificio central. La ecuacin que determina la
temperatura ideal a la cul debe ser enfriada la pieza para lograr la contraccin deseada, es la siguiente:
f (T) = (0.50598*1010)T3 + (0.38292*107)T2 + (0.74363*104)T + 0.88318*102 = 0
Elabora un programa de computadora sencillo que utilice el mtodo de Biseccin para
encontrar la raz adecuada que te permita determinar la temperatura ideal a la cual debe
ser enfriada la pieza metlica.
Tip: al ser una ecuacin cbica, obviamente tendr 3 races. Para escoger el intervalo correspondiente a la
raz que resuelva correctamente el problema (slo una de las 3 races lo resuelve correctamente), debes
tener en cuenta que la temperatura ideal debe estar muy por debajo de los 0C; aunquepor razones
fsicasno puede ser menor de 273.15C (el cero absoluto).
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double T1, T2, T, f1, f2, f, Tol = 0;
double a, b, c, d;//constantes del polinomio
int i = 0;//contador de interaciones
Console.WriteLine("Metodo de Biseccion\n");
Console.WriteLine("Ingresa las constantes de la funcion (f(T)=aT^3+bT^2+cT+d)");
Console.Write("a = ");
a = Convert.ToDouble(Console.ReadLine());
Console.Write("b = ");
b = Convert.ToDouble(Console.ReadLine());
Console.Write("c = ");
c = Convert.ToDouble(Console.ReadLine());
Console.Write("d = ");
d = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("ingresa el nivel de precision del calculo (ejemplo: 0.0001)");
regresar:
Console.WriteLine("Ingresa un intervalo de temperatura: ");
Console.Write("T1 = ");
T1 = Convert.ToDouble(Console.ReadLine());
Console.Write("T2 = ");
T2 = Convert.ToDouble(Console.ReadLine());
f1 = a * Math.Pow(T1, 3) + b * Math.Pow(T1, 2) + c * T1 + d;
f2 = a * Math.Pow(T2, 3) + b * Math.Pow(T2, 2) + c * T2 + d;
if (f1 * f2 > 0)
{
Console.WriteLine("El intervalo de temperaturas no es adecuado!!!");
goto regresar;
}
else
{
do
{
T = (T1 + T2) / 2;
f = a * Math.Pow(T, 3) + b * Math.Pow(T, 2) + c * T + d;
i++;
Console.WriteLine("Iteracion: {0}
Temperatura: {1}
Funcion: {2}", i, T, f);
if (f1*f <0)
{
T2 = T;
}
else
{
T1 = T;
}
} while (Math.Abs(f) >= Tol);
}
}
}
}
Console.ReadKey();