Entregable Metodos Numericos
Entregable Metodos Numericos
Entregable Metodos Numericos
Presentado a:
JAIME ANDRÈS POSADA RESTREPO
Tutor Virtual
Fases Para formular el proyecto y diseñar una solución, se recomienda seguir las
siguientes fases:
1. Reconstruir la función Ee(t). Los datos que transmite EMA ocurren cada minuto.
En aproximadamente doce horas de exposición solar se tienen entonces
alrededor de 720 puntos para reconstruir a Ee(t). Usar directamente el polinomio
interpolante puede no ser conveniente, pues su grado será (seguramente)
bastante alto y se presentaran oscilaciones fuertes. Para solucionar estos
problemas, se deberá usar la técnica de trazadores cúbicos.
renglón ri , y ti = 60(ri − 2). La anterior fórmula para calcular los tiempos, se debe
a que el primer renglón del archivo de datos son encabezados, y por tanto deben
ser ignorados a la hora de representar los segundos transcurridos del día.
Después de haber implementado todas las fases del proyecto, para evaluar sus
algoritmos se tiene el siguiente caso de prueba: Datos: (60, 5.5), (120, 7.4), (180,
15.4), (240, 20.1). Salida: 2119.2. 4.
"""Untitled0.ipynb
"""
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from math import *
series_sample = series[(series.index.hour>=6)&(series.index.hour<18)]
print(series_sample)
def CubicSplines(datos):
"""
Implementación trazadores cúbicos
Entradas:
datos -- lista de puntos (x, y) en el plano ordenados por x
Salidas:
a -- vector de coeficientes (constantes)
b -- vector de coeficientes (lineales)
c -- vector de coeficientes (cuadráticos)
d -- vector de coeficientes (cúbicos)
"""
n = len(datos)-1
# Inicializar vectores auxiliares
A = [x[1] for x in datos]
X = [x[0] for x in datos]
H = [0.0 for x in range(n)]
B = [0.0 for x in range(n+1)]
C = [0.0 for x in range(n+1)]
D = [0.0 for x in range(n+1)]
alpha = [0.0 for x in range(n)]
mu = [0.0 for x in range(n+1)]
lo = [1.0 for x in range(n+1)]
4
a, b, c, d = CubicSplines(processed_series_sample)
print('A = ', a)
print('B = ', b)
print('C = ', c)
print('D = ', d)
return area
area = calculate_area(x, a, b, c, d)
print(area)
(Imagen 1).
Resultados
Para esto descargue el software de anaconda, y desde allí abro Jupyter lo cual
me permite abrir una ventana de python en la carpeta donde descargue el
archivo de excel.
ahora que abro Python lo que hago es llamar ese archivo con los datos para lo
cual utilizo el código e importo los datos que voy a necesitar en el proyecto.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from math import *
pd.read_csv('MNUM_TC_datos_DatosEMA-2020-03-26.csv')
como se visualiza en la siguiente imagen
11
Como vemos nos muestra que tenemos 1440 datos en la base pero solo
necesitamos los datos desde las 6 am hasta las 6 pm ya que antes y después de
esta hora la radiación es negativa porque aun no ha amanecido.
Para solo traer las dos columnas que necesitamos que son tiempo y radiación
utilizamos el siguiente cogido
data_frame = pd.read_csv('MNUM_TC_datos_DatosEMA-2020-03-26.csv',
index_col=0)
data_frame.index = pd.to_datetime(data_frame.index)
series = data_frame[['[RADI]']]
print(series.head())
Como se ve representado en la siguiente imagen
Listo en base a estas dos columnas es que vamos a realizar nuestros cálculos,
pero recordemos que aún nos falta sacar la columna de datos de antes de las
6am y después de las 6 pm para eso utilizamos la siguiente formula
series_sample = series[(series.index.hour>=6)&(series.index.hour<18)]
print(series_sample)
Demostrado de la siguiente manera
Vemos que ahora tenemos los 720 con los cuales vamos a trabajar.
Ahora necesitamos un punto X y un punto Y los cuales nos van a servir de
referencia en el trabajo, pero para sacar el punto X solo debemos sacar el dato
que varía en el tiempo y son los minutos, los cuales equivalen a 60 segundos
12
por lo cual el eje X ira desde 0 hasta 43.140 segundos, para ello utilizamos la
siguiente formula
processed_series_sample = [(60 * i, float(series_sample.values [i])) for i in
range(len(series_sample))]
print(processed_series_sample)
y nos queda de la siguiente manera
"""
n = len(datos)-1
# Inicializar vectores auxiliares
A = [x[1] for x in datos]
X = [x[0] for x in datos]
H = [0.0 for x in range(n)]
B = [0.0 for x in range(n+1)]
C = [0.0 for x in range(n+1)]
D = [0.0 for x in range(n+1)]
alpha = [0.0 for x in range(n)]
mu = [0.0 for x in range(n+1)]
lo = [1.0 for x in range(n+1)]
z = [0.0 for x in range(n+1)]
# Crear vector
H
for i in range(n):
H[i] = X[i+1]-X[i]
# Crear vector
α
,
D
Lista de referencias
https://arturoguillen90.wordpress.com/interpolacion/trazadores-
cubicos/#:~:text=El%20proceso%20de%20construcci%C3%B3n%20del,i%2C%2
0ci%20y%20di.&text=De%20estas%20condiciones%20podemos%20obtener,%2
C%E2%80%A6%2C%20n%20%E2%88%92%201.
https://www.researchgate.net/publication/328253897_Interpolacion_por_el_meto
do_de_los_Trazadores_Cubicos_Cubic_Splines (Enlaces a un sitio externo.)
https://www.academia.edu/37660702/Los_Trazadores_C%C3%BAbicos_Cubic_
Splines_
https://gitlab.com/japosada/notebooks/-
/blob/master/MNUM/TC/reportes/ReporteEMA-2020-03-26.pdf (Enlaces a un
sitio externo.)
https://arturoguillen90.wordpress.com/interpolacion/trazadores-cubicos
https://gitlab.com/japosada/notebooks/-
/blob/master/MNUM/TC/datos/DatosEMA-2020-03-26.csv (Enlaces a un sitio
externo.)
https://gitlab.com/japosada/notebooks/-
/blob/master/MNUM/TC/reportes/ReporteEMA-2020-03-26.pdf