Métodos Numéricos en Ingeniería
Trabajo Final
Equipo: Hugo Alberto Machado López A00960192 Fausto Guilherme Abril Martínez A00958492 Luis Alberto Montoya González A00959142
Profesor: Leopoldo Alberto Rodríguez Tapia
Martes 3 de Diciembre del 2013 Hermosillo, Sonora.
Introducción Los métodos numéricos constituyen técnicas mediante las cuales es posible formular problemas matemáticos, de tal forma que puedan resolverse utilizando operaciones aritméticas.Son herramientas muy poderosas para la solución de problemas yson capaces de manipular sistemas de ecuaciones grandes, manejar no linealidades y resolver geometrías complicadas, comunes en la práctica de la ingeniería y, a menudo, imposibles de resolver en forma analítica. Al momento de aplicar las Matemáticas a situaciones del mundo real nos encontramos a menudo con problemas que no pueden ser resueltos analíticamente o de manera exacta y cuya solución debe ser abordada con ayuda de algún procedimiento numérico, es aquí donde entran los métodos numéricos y la tecnología. En la actualidad, las computadoras y los métodos numéricos ofrecen una alternativa para los cálculos complicados. Al usar la potencia de la computadora se obtienen soluciones directamente, de esta manera se pueden aproximar los cálculos sin tener que recurrir a consideraciones de simplificación o a técnicas muy lentas, lo cual nos ayuda a ser más eficientes en nuestras labores y nos conlleva a hacer un mejor trabajo.
Problema 1. En nuestro primer caso estamos aplicando una Interpolación de Lagrange para resolver un problema de Ingeniería Química, el cual dice lo siguiente: La densidad del carbonato de potasio en solución acuosa varía con la temperatura y la concentración. En un experimento para determinar la densidad del carbonato, se consideró la temperatura constante y se varió la concentración, obteniendo la tabla:
Concentración (%) x 4 12 20 28 38 45
Densidad y 1.0276 1.1013 1.1801 1.2652 1.3480 1.4120
Por medio de una Interpolación de Lagrange de primer grado hacia delante aproxima el valor de la densidad del carbonato de potasio en solución acuosa para una concentración del 25%.
a).- Calcula el valor a interpolar.
Solución:
a).- Como se va a interpolar hacia delante, la y , son los límites inferior y superior, respectivamente, del intervalo en donde se encuentra el valor a interpolar . En este caso, con expresión anterior resulta:
y
con
,
sustituyendo
en
la
Lo anterior nos sirve como comprobación de resultados, después de esto podemos realizar nuestro programa en C# haciendo uso de los datos que se proporcionan.
Problema 2. Resolver un problema de Electricidad y Magnetismo. Problema: Determinar la Corriente que fluye dentro de un circuito utilizando las Leyes de kirchoff. ¿Qué dicen estas leyes? Todas las cargas que entran en un punto dado en un circuito deben abandonarlo porque la carga no puede acumularse en ese punto. Las corrientes dirigidas hacia dentro de la
, mientras que las corrientes que salen de una unión están participando con Si aplica esta ley a la unión que se unión participan en la ley de la unión como
muestra en la figura a)
1. Ley de la unión. En cualquier unión, la suma de las corrientes debe ser igual a cero:
2. Ley de la espira. La suma de las diferencias de potencial a través de todos los elementos alrededor de cualquier espira de un circuito cerrado debe ser igual a cero:
∑
Solución del Problema con Métodos Numéricos. Cuando cursábamos la clase de Electricidad y Magnetismo era muy complicado encontrar cada una de las corrientes, ya que lo que teníamos que hacer era sustitución, suma y resta lo cual era muy tedioso, por lo tanto lo que implementaremos para resolver estos problemas será hacer una matriz dependiendo del número de incógnitas de corrientes.
Para resolver una matriz ya tenemos nuestro método de Gauss y lo que haremos será pedir el número de incógnitas de corrientes las cuales generalmente son de una matriz de 3x3 ó 4x4 por lo que tendremos un menú en el programa que te pregunte de cuanto quieres tu matriz. Después que te pregunte cada una de los valores de las corrientes comenzando de
en adelante. Siempre se igualaran al voltaje el cual será nuestra matriz
unidimensional de resultados.
Ejemplo.
Encontrar cada una de las Corrientes del Circuito.
abcda Ecuación 2) befcb Ecuación 3) Ecuación 1):
Con estas tres ecuaciones ya tenemos nuestra matriz y podemos resolver mediante Gauss.
A A
=
Conclusiones
Muchos estudiantes piensan que el curso de métodos numéricos es solo una clase mas que no nos servirá para nada, tanto como en lo académico como en la práctica, pero los que piensan esto no saben que el curso de métodos numéricos puede ser utilizado para muchas cosas tanto como en lo académico como en lo práctico, pongamos un ejemplo: Alguien desea saber la ecuación que modela el movimiento de un resorte para poder comprender su comportamiento, esto puede verse un poco complicado ya que, ¿cómo predices el movimiento de algo que no sabes cómo se comporta? Este problema puede solucionarse muy fácilmente aplicando Los métodos numéricos y se podría resolver por el método de ecuaciones diferenciales y no solo limitarse a esto si no también existen una gran cantidad de aplicaciones así como en la física que podemos saber que tanta cantidad de combustible se necesita para lanzar un cohete, también la química, matemática y casi en cualquier tópico ingenieril. Habiendo mencionado lo anterior se puede llegar a la conclusión que el curso de métodos numéricos no es una clase mas que no sirve, si no que es una herramienta muy poderosa para poder realizar operaciones complejas y que prácticamente sirve para cualquier tipo de problema de la vida real.
Anexos Preguntas Detonantes: ¿Cómo podemos solucionar problemas de la vida real que tengan un alto grado de complejidad? ¿Qué son los Métodos numéricos? ¿En qué tipo de situaciones podemos utilizar los métodos numéricos? ¿Cómo podemos utilizar los métodos numéricos en la vida real? Códigos Código Problema 1: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Interpolacion_de_Newton { class Program { static void Main(string[] args) { double[] y = new double[6] { 1.0276, 1.1013, 1.1801, 1.2652, 1.3480, 1.4120 }; double[] x = new double[6] { 4, 12, 20, 28, 38, 45 }; double Concentracion = 25; double[] k = new double[7] { 1.0276, 1.1013, 1.1801, 1.2341, 1.2652, 1.3480, 1.4120 }; double[] z = new double[7] { 4, 12, 20, 25, 28, 38, 45 }; Console.WriteLine("** Considerando una Temperatura Constante, obtenemos la siguiente tabla: **"); Console.WriteLine(); for (int i = 0; i < 6; i++) { Console.WriteLine("|| Concentración (%) = {0}% || Densidad = {1} ||", x[i], y[i]); } Console.WriteLine(); Console.WriteLine("--------------------------------------------------------------------------" ); Console.WriteLine("--------------------------------------------------------------------------" ); Console.WriteLine(); Console.WriteLine("// Fórmula Química del Carbonato de Potasio: K2CO3 //");
Console.WriteLine(); Console.WriteLine("// Concentración a utilizar (%) = {0}% //" , Concentracion); Console.WriteLine(); Console.WriteLine("// Densidad del Carbonato de Potasio en solución acuosa = {0} //", lagrange(x, y, Concentracion)); Console.WriteLine(); Console.WriteLine("--------------------------------------------------------------------------" ); Console.WriteLine("--------------------------------------------------------------------------" ); Console.WriteLine(); Console.WriteLine("** Nueva Tabla con 25% agregado : **" ); Console.WriteLine(); for (int i = 0; i < 7; i++) { Console.WriteLine("|| Concentración (%) = {0}% || Densidad = {1} ||", z[i], k[i]); } Console.ReadLine(); } static double lagrange(double[] x, double[] y, double Concentracion) { int n = 6; double sum = 0; for (int i = 0; i < n; i++) { double Product = y[i]; for (int j = 0; j < n; j++) { if (i != j) { Product = Product * (Concentracion - x[j]) / (x[i] - x[j]); } } sum += Product; } return sum; } } }
Codigo roblema 2: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ProyectoMetodos { class Program { static void Main(string[] args) { eliminaciongaussina(); } static void eliminaciongaussina() { int k, i, j; { Console.WriteLine("Seleccione las dimensiones de su arreglo" ); int c = Convert.ToInt16(Console.ReadLine()); int m = Convert.ToInt16(Console.ReadLine()); if (c >= 3 && c <= 4) { double[] resultados = new double[c]; double[,] a = new double[c, m]; double[] x = new double[c]; Console.WriteLine("Introduzca sus variable comenzando por I1 despues I2 y por ultimo I3" ); for (i = 0; i < a.GetLength(0); i++) { for (j = 0; j < a.GetLength(1); j++) { a[i, j] = Convert.ToInt32(Console.ReadLine()); } Console.WriteLine(); } Console.WriteLine("Introdusca sus resultados, primero el de I1 depues el de I2 y por ultimo el de I3"); for (i = 0; i < a.GetLength(0); i++) { resultados[i] = Convert.ToInt32(Console.ReadLine()); } int n = a.GetLength(0) - 1; for (k = 0; k <= n - 1; k++) { for (i = k + 1; i <= n; i++)
{ double factor = a[i, k] / a[k, k]; for (j = k + 1; j <= n; j++) { a[i, j] = a[i, j] - factor * a[k, j]; } resultados[i] = resultados[i] - factor * resultados[k]; } } x[n] = resultados[n] / a[n, n]; for (i = n - 1; i >= 0; i--) { double sum = resultados[i]; for (j = i + 1; j <= n; j++) { sum = sum - a[i, j] * x[j]; } x[i] = sum / a[i, i]; } Console.WriteLine("I1={0}A", x[0]); Console.WriteLine("I2={0}A", x[1]); Console.WriteLine("I3={0}A", x[2]); } else {Console.WriteLine("Porfavor introduzca un arreglo de 3x3 ó de 4x4"); eliminaciongaussina();} ;
Console.ReadLine(); } } } }
Bibliografía Chapra, S. C., & Canale, R. P. (s.f.). Métodos Numéricos para Ingenieros. McGraw Hill. http://www.eva.com.mx/ . (s.f.). Recuperado el 1 de Diciembre de 2013, de http://www.eva.com.mx/sia/ingenieria/ejercis/metodos/problemU4r4.htm VASQUEZ, I. R. (s.f.). Recuperado el 1 de Diciembre de 2013, de http://disi.unal.edu.co/~lctorress/MetNum/LiMetNu2.pdf