Está en la página 1de 27

Métodos Numéricos – Trabjo Colaborativo

Sindy Yuryma Espinosa Castro, Juan Diego Espinosa Santos, Alfonso Giovanny Torres Torres

Institución Universitaria Politécnico Grancolombiano

Notas de Autor

Sindy Yuryma Espinosa Castro (1721023471), Juan Diego Espinosa Santos (1811020652), Alfonso

Giovanny Torres Torres (1811027101)

Facultad de Ingeniería, Diseño e Innovación

Institución Universitaria Politécnico Grancolombiano

Este proyecto fue financiado por los propios estudiantes

2020
Tabla de Contenidos

Introducción...............................................................................................................................................3

Justificación...............................................................................................................................................4

Objetivos....................................................................................................................................................5

Objetivo general.........................................................................................................................................5

Objetivos específicos.................................................................................................................................5

Propósito del proyecto...............................................................................................................................6

Desarrollo de la actividad...........................................................................................................................7

Herramientas a usar....................................................................................................................................7

Fase I: Captura de datos.............................................................................................................................8

Fase II: Interpolador.................................................................................................................................15

Fase III: Integración del interpolador.......................................................................................................22

Conclusión...............................................................................................................................................26

Referencias Bibliográficas.......................................................................................................................27
Introducción

El desarrollo del presente proyecto analizará los Métodos Numéricos. Esta rama de las Matemáticas

nos permite diseñar algoritmos para la soución de problemas de análisis matemático. Estos conceptos

son importantes en la programación de software, ya que el análsis numérico proporcina las bases

necesarias para llevar a cabo todos aquellos procedimientos matemáticos que se puedan expresar a

manera de algoritmos basándose en aquellos que permitan su simulación o cálculo en procesos más

sencillos empleando números.

Estos métodos pueden ser aplicados para obtener un valor numérico como la solución a un problema

matemático cuando no se puede obtener respuesta con procedimientos analíticos.


Justificación

El presente trabajo escrito se realiza con el propósito de observar cómo pueden ser usadas las

herramientas y recursos existententes para la resolución de problemas matemáticos y la resolución de

ecuaciones para obtener la medición de datos capturados; donde los conocimientos adquiridos son

esenciales para cuestionar y aplicarlos en un escenario real.


Objetivos

Objetivo general

Medir la exposición radiante durante el periodo de tiempo indicado haciendo uso de los datos

entregados por la Estación de Monitoreo Ambiental (EMA).

Objetivos específicos

◦ Aplicación de métodos para solución de problemas mateméticos como trazadores cúbicos e

integración.

◦ Aprender y hacer uso del lenguaje de programación Python.

◦ Conocer el concepto del protocolo MQTT para consulta de servicios de datos.

◦ Hacer uso de herramientas de bases de datos.

◦ Graficar funciones a partir de la obtención de estas mediante los métodos aprendidos en el

módulo.
Propósito del proyecto

En la estación de monitoreo ambiental (EMA) se cuenta con un piranómetro que mide la radiación solar

Ee (t) (en W/m2) incidente sobre la superficie del Campus Principal. A continuación se encuentra el

comportamiento de dicha magnitud durante el 29 de octubre de 2019.

Muchas veces es necesario calcular la exposición radiante H e (en J/m 2 ) durante un determinado

periodo de tiempo, esto es

tf

H e =∫ Ee ( τ ) dτ
ti

donde t i es un tiempo inicial y t f es un tiempo final. El propósito del proyecto es medir entonces

H e para un determinado dıı́a delaño en curso, usando los datos entregados por EMA y técnicas del

curso de análisis numéricos (ANUM).


Desarrollo de la actividad

Herramientas a usar

Para el desarrollo de la siguiente actividad se necesitará:

• Python 3.x: Lenguaje de programación multiparadigma, ya que soporta orientación a objetos,

programación imperativa y, en menor medida, programación funcional. Es un lenguaje

interpretado, dinámico y multiplataforma.

• Paquete python3-paho-mqtt: Librería para uso del protocolo MQTT, que es un protocolo de

conectividad máquina a máquina para Internet de las Cosas (IoT).


• SQLite: Sistema de gestión de bases de datos relacional compatible con ACID. A diferencia de

los sistema de gestión de bases de datos cliente-servidor, el motor de SQLite no es un proceso

independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca

SQLite se enlaza con el programa pasando a ser parte integral del mismo.

• DB Browser for SQLite: Cliente de escritorio para bases de datos SQLite.


Fase I: Captura de datos

Una vez instalado, se ejecuta el script ema_get_radi.py. En la fuente del código observamos cómo

funciona:

 Crea una base de datos (archivo .db) de nombre miniema.db. Luego se conecta a la base datos y

ejecuta el comando de creación de la tabla datos (si ésta no existe). Dicha tabla tiene los campos

numero (llave primaria autoincrementable de la tabla), tiempo (fecha y hora actual de la captura

en formato UTC) y radi (valor obtenido del servicio EMA que representa la radiación solar

medida en W/m2).
 Luego vemos que se definen los datos de conexión al servicio EMA: la URL, el parámetro del

tópico (en este caso se desea obtener el dato de la radiación solar) y el puerto de conexión. Se

define un método on_connect() para la conexión al servicio y un método on_message() que

se ejecutará al momento de obtener respuesta por parte del servicio. Este último método lo que

hara es insertar el dato de la radición solar obtenido (un número) e insertarlo en la tabla datos de

nuestra base de datos SQLite.


 Finalmente el método principal del script se encargará de crear una nueva conexión MQTT con

los métodos y atributos anteriormente definidos y en un ciclo infinito conectarse y obtener el

dato del servicio EMA.

Ahora, por consola de comandos se ejecuta el script:

Al ejecutar el script, se imprimirá también en la consola el dato de la radiación solar obtenido de EMA,

que nos envía información cada minuto.


Se pude identificar que en DB Browser for SQLite se esta cargando la información cada minuto a la

base dedatos miniema. db en una estructura que son numero, tiempo y radi.

Con lo anterior se realizó la captura del día sábado 28 de marzo de 2020. Para obtener las lecturas de

radiación solar, el script se dejó ejecutando entre las 05:56 y las 18:06, horas del amanecer y atardecer

del día.

Se realizaron en total 730 lecturas, una por cada minuto de ejecución del script. A través de SQLite

Browser podemos consultar los datos obtenidos.


Fase II: Interpolador

Para esta parte de la actividad de hará uso de los trazadores cúbicos. La idea básica de este método es

que, con los puntos que ya se tienen, obtener las funciones para cada rango de puntos; es decir, el

conjunto de funciones a trozos para todos los puntos.

El trazador cúbico S ( x ) es una función a trozos que interpola a la f en los n+1 puntos.

( x 0 , y 0 ) , ( x 1 , y 1 ) , ( x 2 , y 2 ) ,... , ( x n , y n ) , con a=x 0< x1 <...< x n=b

2 3
Su ecuación es la siguiente: S i=ai+ bi ( x − x i ) +c i ( x − xi ) + di ( x − xi )

Se busca, para cada punto de las capturas realizadas obtener S ( x ) .

Paso 1: Calcular coeficientes ai

Con los puntos

x 0 1 2 3 4 5
y -0.2 1,71 1,71 0,09 0,83 3,03
y=a a0 a1 a2 a3 a4 a5

Este va a estar armado por 4 polinomios:

P ( x ) , x ∈ [ 0,1 ]
P ( x ) , x ∈ [ 1,2 ]
P ( x ) , x ∈ [ 2,3 ]
P ( x ) , x ∈ [ 3, 4 ]
Paso 2: Calcular coeficientes c i

hi=( x i − x i −1 )
3 3
hi −1 c i −1 +2 ( hi −1 +hi ) c i +hi c i+1= ( ai+1 −a i ) − (a − a )
hi h i− 1 i i −1

c 0=0.0
c 1=−1.0719617224880382
c 2=− 1.4421531100478466
c 3=1.9805741626794258
c 4=0.5998564593301435

Paso 3: Calcular coeficientes bi

1 h
bi= ( ai +1 − ai ) − i ( 2 c i+c i+1 )
hi 3

b0=2.2673205741626794
b1 =1.195358851674641
b2=−1.3187559808612441
b3=− 0.780334928229665
b4 =1.800095693779904

Paso 4: Calcular coeficientes d i

c i+1 −c i
d i=
3 hi

d 0=− 0.3573205741626794
d 1=− 0.1233971291866028
d 2=1.1409090909090909
d 3=− 0.4602392344497607
d 4 =−0.19995215311004785
Paso 5: Construir S ( x )

Se definen las funciones a trozos

S ( x ) [ 0 ≤ x ≤1 ] =− 0.2+ ( 2.2673 ( x − 0 ) ) + ( 0 ( ( x − 0 ) ) )+ ( − 0.3573 ( ( x − ( 0 ) ) ))


2 3

S ( x ) [ 1≤ x ≤ 2 ] =1.71+ ( 1.1953 ( x − ( 1 ) ) ) + ( −1.0720 ( ( x −1 )2 ) )+ ( − 0.1234 ( ( x − 1 )3 ) )


S ( x ) [ 2 ≤ x ≤3 ] =1.71+ ( −1.3187 ( x − 2 ) ) + (− 1.4421 ( ( x −2 )2 ) ) + (1.1409 ( ( x −2 )3 ) )
S ( x ) [ 3 ≤ x ≤ 4 ] =0.09+ ( − 0.7803 ( x −3 ) ) + ( 1.9806 ( ( x − 3 ) ) )+ ( − 0.4602 ( ( x −3 ) ))
2 3

S ( x ) [ 4 ≤ x ≤ 5 ]=0.83+ ( 1.8010 ( x − 4 )) + ( 0.5998 ( ( x −4 ) ) ) + ( − 0.1999 ( ( x − 4 ) ))


2 3

Con las anteriores funciones a trozos se podría empezar a trazar la función en el plano:

Para obtener los trazadores de las capturas realizadas se hizo uso del script tcubicos.py de la siguiente

manera:
• La función cubicSplines obtiene los coeficientes a, b, c y d de la lista de puntos (x, y) que se

pasan como parámetro, en este caso los datos de radiación solar.


• Se conecta a la base de datos SQLite miniema.db y se consulta sobre la tabla datos la

columna radi. Por cada uno de los resultados se crea una lista de puntos.

• Se recorre la lista de puntos y con las listas de coeficientes anteriormente obtenidas se arman las

ecuaciones.
Al ejecutar el script para los 730 puntos de captura se obtiene el siguiente resultado:

• Se obtiene una lista de los puntos, siendo x la posición de la captura y y el valor de la radiación

• Se obtienen las listas de coeficientes:

• Para cada uno de estos puntos se aplica la función

Con el anterior script se obtiene Ee (t ) para los 730 puntos de captura. Dichas funciones a trozos y

puntos se pueden graficar:


Si se graficaran todas las funciones a trozos obtenidas de los 730 intervalos se obtendría la siguiente

gráfica:
Fase III: Integración del interpolador

Una vez se obtiene la función del trazador cúbico para cada uno de los puntos de la captura estas se

pueden integrar para obtener el valor del área bajo la curva.

Se toman los siguientes puntos:

x 1 2 3 4
y 1 2 3 4

Se obtinen los coeficientes:

a=[ 1, 2,3 ]
b= [ 1, 1,1 ]
c=[ 0, 0,0 ]
d= [ 0, 0, 0 ]

Y para cada intervalo se reemplazan los valores de la función:

S ( x ) [ 1≤ x ≤2 ]=1+ ( 1 ( x −1 ) ) + ( 0 ( x −1 )2 ) + ( 0 ( x −1 )3 )

S ( x ) [ 2 ≤ x ≤ 3 ] =2+ ( 1 ( x − 2 ) ) + ( 0 ( x −2 ) ) + ( 0 ( x −2 ) )
2 3

S ( x ) [ 3 ≤ x ≤ 4 ] =3+ ( 1 ( x −3 ) ) + ( 0 ( x −3 ) ) + ( 0 ( x − 3 ) )
2 3
Con estas funciones se obtiene la siguiente gráfica:

El objetivo ahora es hallar el área que se obtiene bajo la curva (área azul de la gráfica). Para este

objetivo se debe, en cada una de estas funciones, obtener la integral de la siguiente manera:

∫ 1+ ( 1 ( x −1 ) ) +( 0 ( x −1 )2 )+ ( 0 ( x −1 )3 ) dx=1,5
1
3

∫ 2+ ( 1 ( x −2 ) ) +( 0 ( x −2 )2 )+ ( 0 ( x −2 )3 ) dx =2,5
2
4

∫ 3+( 1 ( x − 3 ) ) +( 0 ( x −3 )2 )+ ( 0 ( x −3 )3 ) dx=3,5
3

Sumando los resultados de estas integrales valores se obtiene el área:

1,5+2,5+3,5=7,5
Para obtener el área de todos los puntos de las capturas se define la siguiente función Python para

calcular integrales, haciendo uso del paquete scipy.integrate.

La función integrarInterpolador() recibe como parámetro una lista de tuplas las cuales son los

valores capturados de la radiación en la base de datos SQLite (los valores son la posición del dato para

x y el valor de la radiación en y).


Durante un ciclo que recorre todos los puntos obtiene los valores de los coeficientes de las listas

correspondientes y calcula el valor de la integral con la función de trazadores cúbicos. El resultado de

dicha integral la suma acumulativamente para finalmente obtener el valor de la integración de todos los

intervalos.

Ejemplos:
Al ejecutar dicha función junto sobre el conjunto de puntos obtenidos de la captura EMA se obtiene la

siguiente salida:

El resultado del área final es:

H e ≈195.268,1969

Con las siguientes llaves:

Llave Hora Radiación


x0 2020-03-28 10:57:33 (UTC) -0,2
x729 2020-03-38 23:06:33 (UTC) -0,05

Usando el paquete matplotlib.pyplot se puede graficar todos los intervalos:


Conclusión

Durante la realización del proyecto se nos permitió aplicar los conocimientos adquiridos durante el

módulo de Métodos Numéricos para la solución de problemas matemáticos de un problema específico,

así como también el aprendizaje y uso de lenguajes y herramientas de programación como lo son en

este caso Python, SQLite y el protocolo MQTT. Lo utilizado en este trabajo puede ser aplicando en

nuestras vidas diarias, ya sea en el ámbito laboral, académico o personal.


Referencias Bibliográficas

• Análisis numérico (s.f.). Obtenido de Wikipedia, la enciclopedia libre:

https://es.wikipedia.org/wiki/An%C3%A1lisis_num%C3%A9rico

• Our Documentation (s.f.) Obtenido de Python: https://www.python.org/

• Python (s.f.) Obtenido de Wikipedia, la enciclopedia libre: https://es.wikipedia.org/wiki/Python

• paho-mqtt 1.5.0: Project description (30 de octubre de 2019) Obtenido de PyPI: The Python

Package Index: https://pypi.org/project/paho-mqtt/

• SQLite(s.f.) Obtenidio de Wikipedia, la enciclopedia libre: https://es.wikipedia.org/wiki/SQLite

• What it is (s.f.) Obtenido de DB Browser for SQLite: https://sqlitebrowser.org/

• What Is SQLite? (27 de enero de 2020) Obtenido de SQLite:https://www.sqlite.org/index.html

También podría gustarte