Está en la página 1de 13

TRABAJO 2

PROGRAMACIÓN ESTRUCTURADA Y MÉTODOS NUMÉRICOS

NOMBRE
LUIS MIGUEL DAVILA
SIMON LAUWERIE

DEPARTAMENTO DE INGENIERÍA MECÁNICA

UNIVERSIDAD DE ANTIOQUIA

MEDELLÍN – ANTIOQUIA, 19 DE ABRIL DEL 2020


INTRODUCCIÓN

Conforme avanza la tecnología, más y mejores herramientas se encuentran


disponibles para el uso de la ciencia y como apoyo en el aprendizaje de esta. Así,
en el aprendizaje de los diferentes cursos ya no se hace necesario emplear el
tiempo desarrollando complejas y largas operaciones repetitivas para encontrar la
respuesta de un problema o para ser capaz de visualizar el comportamiento de una
función por evaluar.

Un gran número de paquetes de software han sido desarrollados para productor


computación simbólica matemática como Matlab y Python, que predominan en el
ambiente académico e investigativo.

Los métodos numéricos son técnicas matemáticas para resolver un problema


formulado mediante operaciones aritméticas. Muchos métodos numéricos han sido
desarrollados, y sin importar el enfoque bajo el que se sustentan todos comparten
algo en común, la invariabilidad que involucra realizar muchas y tediosas
operaciones aritméticas. Así, el entendimiento de los métodos numéricos y la
asimilación de la base con la que funcionan empoderan al ingeniero en su rol de
solucionar problemas.
DESARROLLO
1. Regresión para estimar la temperatura de la placa.
Se procede a hacer un ajuste de regresión para la información de temperatura
dada, esto es, en primera instancia reorganizar los datos para las combinaciones
que ocurren en la matriz y así ingresar los datos para realizar el ajuste a una
función asociada. Haciendo uso del módulo de optimización de Scipy se
implementa la función curve_fit que ajusta la información entregada arrojando los
coeficientes de la función incógnita del ajuste.
Para el ajuste se tienen en cuenta varias consideraciones analíticas que resultan
del mismo proceso, la temperatura en un punto depende de cada variable y de un
factor mutuo. Dado que la temperatura decrece a medida del crecimiento de las
variables se hace corrección del origen de la función ajustada. Así, la ecuación
resultante tras las variantes analizadas en el proceso es de la forma:

T ( x , y )=a(8−x )n+ b(8− y )n+ c( 8−x )(8− y)+d (1)

Ahora, se busca el grado n con el menor error acumulado punto a punto, esto
es:
n
Error=∑|T ( x , y )−T ajuste ( x i , y i )| (2)
i

Mediante un ciclo for se halla el grado óptimo para la solución planteada es n


=3.
Fig. 1. Comparación de los datos y la función del ajuste realizado mediante curvas de
nivel.

Fig. 1 muestra la comparación de la información mediante curvas de nivel que


asocia los valores de temperatura de la placa entregados y ajustados para ver el
comportamiento de estos y la aproximación realizada. Fig. 2 evidencia la
proximidad del ajuste realizado a los datos entregados al comparar en una misma
gráfica los valores de temperatura de la función ajustada, y los datos originales.

Fig. 2. Comparación de los datos y la función del ajuste realizado mediante nubes de
puntos.
2. Viscosidad dinámica del agua.
En primera instancia se grafican los datos originalmente entregados.

Fig. 3. Gráfica de los datos originales (temperatura en grados Celsius versus viscosidad
dinámica dada en 10-3Ns-1m-2).

Fig. 3 muestra la relación temperatura y viscosidad dinámica entregada. Para la


regresión polinomial de grado 2 se procede a partir de (3) resolviendo el arreglo matricial
(4):

μ ( T ) =aT 2+ bT +c (3)

∑ μi n ∑ T i ∑ T i2
[ ][∑ T i μi = ∑ T i ∑ T i2 ∑ T i3
∑ T i2 μi ∑ T i2 ∑ T i3 ∑ T i4 ]( ) c
b
a
(4)

Ahora, para ajustar los datos a la ecuación de Andrade se parte de (5) siguiendo como
se ilustra en (6) y (7) para adecuar la (5) en forma lineal para la regresión y poder
resolver el arreglo matricial (8):

μ(T )=D e β /(T+ 273.15) (5)

ln ( μ ) =ln ( D )+ β /(T +273.15) (6)

Z=ln ( D ) + βW :ln ( u )=Z y 1/(T +273.15)=W (7)

∑ Zi = n ∑ W i
[ ][
∑ W i Z i ∑ W i ∑ W i2 (] ln β( D ) ) (8)
Luego, se construye el polinomio interpolador de Newton, donde el máximo
grado del polinomio va atado a la cantidad n de datos disponibles, esto es, n−1. El
polinomio interpolador de Newton se conoce también como de diferencias
divididas, pues toma en cuenta la diferencia punto a punto respecto a los datos de
temperatura dados y el nuevo valor de temperatura a estimar.
Los coeficientes del polinomio interpolante se calculan conforme a (9) para así
expresar el polinomio (10), teniendo en cuenta que f [x 0 ]=f ( x 0 ):

f ( x k +1 )−f ( x k )
f [x k , x k+1 ]= (9)
x k+1−x k

Pn−1 ( x )=f [ x 0 ]+ f [ x 0 , x 1 ] ( x−x 0 ) + f [ x0 , x 1 , x 2 ] ( x−x 0 ) ( x−x 1 ) +…+ f [ x 0 , x1 , … , xn ] ( x−x 0 ) ( x−x 1 ) …( x−x n−1)
(10)
Por último, en el apartado de ajuste de datos, se tiene la implementación de
una función propia de Python, para esto, se hace uso de la función curve_fit del
módulo Scipy que ajusta los datos entregados en vectores, a la función ingresada,
esta función retorna los coeficientes de la función de ajuste y la desviación
estándar de cada coeficiente de la función ajustada. Como puede verse en el
código, su implementación es sencilla y confiable, pues nos evita errores
algebraicos.
Fig. 4 muestra el comportamiento de las funciones ajustadas para el intervalo de
temperatura entregado, en este caso corresponde a la regresión polinomial de segundo
orden, el ajuste por regresión a la ecuación de Andrade, y la misma ecuación de
Andrade ajustada por las funciones propias de Python.
Fig. 4. Comparación de las funciones ajustadas (temperatura versus viscosidad dinámica).
Fig. 5. Valores estimados de viscosidad dinámica del agua con temperatura de 7.5 °C.
Fig. 5 muestra los valores arrojados producto del ajuste de datos realizado. Cada valor
en orden horizontal corresponde al método de ajuste en el orden solicitado, en esta se
incluye la estimación del polinomio de Newton para cinco grados de polinomio diferente.
Así mismo, se muestra el resultado desde el código de Python.
3. Trayectoria de una pelota.
El método de la sección dorada es una técnica de búsqueda para hallar el
mínimo de una función de una sola variable, para esto, determina nuevos valores
en x que acotan la función empleando la proporción dorada. Se llega a un valor
estimado cumpliendo el criterio de tolerancia.
El método de interpolación parabólica surge del hecho que el polinomio
cuadrático en muchos casos en una buena aproximación al comportamiento de las
curvas cer de un valor óptimo, así, con 3 valores necesarios para construir el
polinomio se calcula un cuarto valor que actualizará uno de los 3 valores iniciales
de x tomando en cuenta el f(x) generado. Se llega a un valor estimado cumpliendo
el criterio de tolerancia.
El método de Newton – Raphson es el método más usado de todos los métodos
de localización de raíces, se deriva de una interpretación geométrica de una
tangente que cruza el eje x entendiéndose hasta el punto evaluado de la función.
Es un método de convergencia rápida, pero manualmente se dificulta conforme la
dificultad de la derivada de la función a evaluar. Para aplicar el método se iguala a
cero la función a evaluar, como en este caso tanto x como y son una variable
desconocida el máximo valor para y se presenta cuando la pendiente es igual a
cero, esto es la derivada de y. Se llega a un valor estimado cumpliendo el criterio
de tolerancia.

Fig. 6. Trayectoria de la pelota.


Fig. 6 muestra la trayectoria de la pelota, surge como método gráfico para validación.
Por último, se entrega la salida generada en Python con los valores hallados por
cada método

4. Mezcla óptima de aditivo.


minimizar
0.05 X +0.025 Y +0.15 Z
X ,Y ,Z

sujeto a X +Y + Z ≥ 6 ,
X +Y ≤ 2.5
X ≥Y
Y
Z≥
2
La función objetivo a minimizar es el costo de una mezcla de aditivos para
combustible, así, los términos de la función corresponden a cada variable incógnita
de la función de costo objetivo. Se establecen las cuatro restricciones por
desigualdad, las cuales acotan los valores de las variables incógnita. Con lo
anterior, no es necesario ingresar valores límite para las variables incógnita, pues
están claramente acotadas en las desigualdades de las restricciones.
Para establecer el valor inicial se comienza da manera sencilla por las
características del ejercicio, esto es, X y Y no pueden ser mayores a 2.5 en
conjunto, con lo cual se inicia haciendo ambas igual a 1, y así, determinando el
valor inicial de Z de acuerdo con la primera restricción.
Así, finalmente se muestra la salida que genera el código, con los valores
encontrados producto de la optimización. Para realizar la optimización, se emplea
el módulo minimize de Scipy bajo el método SLSQP adecuadamente detallado por
la documentación del mismo módulo Scipy.optimize.minimize.
5. Programa de producción.

N
minimizar
∑ a ∙CTni +bi ∙CTe i +5 c i , Ɐ i=1 , … , N
a , b , c i=1 i

sujeto a 1.5 ai ≤ 2400 , Ɐ i=1 , … , N

1.5 bi ≤720 , Ɐ i=1 , … , N

c 1=0
N N

∑ ai +bi +c i=∑ CR i , Ɐ i=1 , … , N ,


i=1 i=1

Ítem Mes 1 Mes 2 Mes 3


CR 1000 2500 2200
CTn ($/circuito) 100 100 120
CTe ($/circuito) 110 120 130
Tiempo regular (h) 2400 2400 2400
Tiempo extra (h) 720 720 720

En principio se declara la función objetivo, la cual asocia el costo total del


programa de producción de los tres meses; a es empleada para los circuitos
elaborados dentro del tiempo de operación regular; b, para los circuitos elaborados
dentro del tiempo extra; c, para los circuitos que son almacenados para el mes
siguiente. Por último, se establece una restricción de balance para que la
producción no exceda la suma de los circuitos requeridos dentro de los tres meses.
El mes número 1, debería hacer 2080 circuitos;
El mes número 2, debería hacer 2020 circuitos;
El mes número 3, debería hacer 1600 circuitos.
El costo total sería 618 744$.
6. Tanque óptimo.
R
r

minimizar
A=2∗π∗R∗h+2∗π∗((2∗R∗h−h ²)0.5 )∗L
r , h ,l

r¿ √ ¿2Rh-h²)

sujeto a l≥ 2 ,

Volumen :V =π∗(2/3)∗h ²∗(3∗R−h)+ π∗(2∗R∗h−h ²)=0,5

La función objetivo a minimizar es el área superficial del cilindro, esto es, el área
de las tapas del cilindro y el área superficial lateral del mismo. Así, el primer
término de la función objetivo es el área de las dos tapas del tanque, que tienen
geometría elíptica ovalada, el segundo término surge del área lateral de un cilindro
haciendo como radio de este, la semisuma de los dos radios de la elipse. La única
restricción por desigualdad es establecida la cual acota a l, así como la igualdad de
la capacidad de volumen que debe tener del tanque.
Así, finalmente se muestra la salida que genera el código, con los valores
encontrados producto de la optimización. Para realizar la optimización, se emplea
el módulo minimize de Scipy bajo el método SLSQP adecuadamente detallado por
la documentación del mismo módulo Scipy.optimize.minimize.

CONCLUSIONES
Si bien las regresiones dan un ajuste adecuado en la mayoría de los casos,
su implementación manual puede conllevar a cometer errores debido al
desarrollo algebraico y definición de las matrices. A su vez, el ajuste datos
también conlleva un desarrollo algebraico que aumenta la probabilidad de
error frente a la implementación de las funciones propias de Python.

Se recomienda emplear siempre las funciones propias de Python en sus


módulos como Scipy pues no solo ahorra el desarrollo algebraico y reduce la
probabilidad de errores, sino que mejora el gasto computacional al reducir
la declaración de variables y ciclos de iteración.

Los métodos para hallar raíces, así como máximos o mínimos parten de
consideraciones de las ecuaciones, valores iniciales y restricciones que
deben tomarse en consideración, esto es, sin el entendimiento del
fundamento matemático de fondo no será posible la implementación de los
métodos o estos arrojarán valores no coherentes.

Así mismo, la optimización y programación parte de muchas consideraciones


que se deben conocer muy bien de antemano y se requiere un buen análisis
para poder moldear las funciones según el contexto y necesidad.
BIBLIOGRAFÍA

i. Steven Chapra, Raymond Canale. Numerical Methods for Engineers, Sixth


Edition. New York: Mc Graw Hill 2010.

ii. Richard Burden, Douglas Faires, Numerical Analysis, Ninth Edition. Boston:
Cengage Learning 2011.

También podría gustarte