Simulación en Ing. Eléctrica - Aproximación de funciones
1. Simulación en Ingeniería Eléctrica
ELI-213
INFORME: GUÍA DE TRABAJO N° 5
INTERPOLACIÓN Y APROXIMACIÓN DE
FUNCIONES
Profesor: - Esteban Gil Sagás
Integrantes: - Sebastián Flores Carrasco
- Carlos Vergara Branje
Fecha: 29/05/2014
2. Pregunta 1: El archivo 'PENSvsDemand.csv' contiene resultados de simulación del Sistema
Interconectado del Norte Grande. En el archivo se entrega la probabilidad de tener
energía no servida en cualquier parte del sistema (PENS) versus la demanda total del
mismo.
a) Estime el valor de PENS para una demanda de 2000, 2200, 2400 y 2600 [MW]
usando:
Interpolación lineal
Interpolación polinomial
Interpolación polinomial por tramos (spline)
Grafique las funciones interpolantes entre 1900 y 2750 [MW], compare sus resultados y
comente.
b) Usando las funciones interpolantes de la parte anterior, extrapole para estimar el
valor de PENS para una demanda de 3000 [MW]. Compare y comente. ¿Tiene
sentido el resultado obtenido?
c) Elija una transformación para poder aplicar una regresión lineal a los datos.
Determine los coeficientes de la regresión y el valor de 𝑅2
.
d) Considerando la regresión lineal de la parte anterior, usando la función stem()
grafique los residuos para las funciones PENS(Demanda) y log(PENS(Demanda)).
¿Qué se puede concluir?
3. Solución:
a) Para interpolar se usó el siguiente código en MatLab:
Lo que entrega las siguientes resultados, según el caso de interpolación:
Interpolación PENS (2000 MW) PENS (2200 MW) PENS (2400 MW) PENS (2600 MW)
Lineal 0.001107109908664 0.006225608461751 0.042606894462160 0.198150672010562
Polinomial 0.256561279296875 0.007446289062500 0.051177978515625 2.849517822265625
Polinomial
por tramos
0.001140627386497 0.006281620732312 0.042670090078565 0.197494900203005
4. Para analizar gráficamente y dadas las condiciones que se piden (graficar entre 1900 [MW]
y 2750 [MW]) se programo el siguiente código, editando la matriz "demanda":
Con el siguiente código en el que se superponen las interpolaciones en un mismo gráfico:
5. Lo que entrega el siguiente gráfico:
Como se observa, para demandas menores a la mínima del archivo 'PENSvsDemand.csv' y
para las mayores a la máxima del mismo archivo se alejan mucho las soluciones entre cada
interpolación, ya que al momento de interpolar se acomodan las funciones para que
pasen por los mismos puntos de los datos input.
1900 2000 2100 2200 2300 2400 2500 2600 2700 2800
-2
0
2
4
6
8
10
12
14
16
Comparación métodos iterativos
Demandas [MW]
PENS
Lineal
Polinomial
Polinomial por tramos
6. Haciendo un zoom en el rango "interpolable", como se muestra en la siguiente figura, se
observa la diferencia propia entre métodos:
Entre la interpolación lineal y la interpolación polinomial por tramos la diferencia es
mínima, ya que se superponen en la gráfica.
En cambio la interpolación polinomial, se comporta más que nada como aproximación, ya
que su curva es mucho más suave. Hay que considerar que el grado del polinomio es
menor al 𝑚 − 1, ya que el software está limitado en el grado (se usó un polinomio de
grado 20).
7. b) Usando como base el código de la pregunta anterior, se implementa el siguiente:
Entregando los siguientes resultados:
Interpolación lineal NaN
Interpolación polinomial 7.245663508033752e+04
Interpolación polinomial por tramos 1.622638206404347e+03
Era esperando el resultado NaN en la interpolación lineal ya que este tipo de método no
considera valores fuera del rango (no extrapola)
Respecto a la interpolación polinomial y a la interpolación polinomial por tramos se
observan valores súper distintos con una diferencia de orden 10.
Por la forma de onda observadas en el ítem anterior, no tendría sentido tomar en cuenta
estas extrapolaciones, ya que el comportamiento original es similar a una exponencial,
pero es variable.
8. c) La regresión lineal de una cantidad de datos, sirve para las funciones de
aproximación lineal 𝑓( 𝑥) = 𝑎𝑥 + 𝑏.
Por lo tanto se programó el siguiente código en MatLab:
Cuyos coeficientes y valor de 𝑅2
son:
𝛼 = 0.000382816394437
𝛽 = −0.823175305731325
𝑅2 = 0.731152362542581
Apreciándose una correlación baja, considerando que el máximo es 1 (correlación de
datos perfecta), lo que indica que la forma lineal no es la más indicada.
9. d) Usando el código el ítem anterior, se procede a graficar según lo pedido, a partir
del siguiente código:
10. Lo que entrega los siguientes gráficos en forma discreta del residuo:
Del gráfico del residuo PENS(Demanda), se observa que por puntos, la magnitud del
residuo puede ser negativa o positiva, dependiendo en el punto en que esté.
Como se aplicó una regresión lineal, que considera el comportamiento como una curva
lineal, valga la redundancia, hace que la recta para mantener cierta pendiente, pase por
puntos por debajo y por encima de la curva original, lo que explica la diferencia de signo
en el residuo.
Logarítmicamente, se ve que el residuo se comporta lineal, ya que en esta forma queda:
ln( 𝑦) = 𝛼 ln( 𝑥) + 𝛽
Y teniendo que los datos originales tienen forma similar a la de una exponencial, el
residuo se comporta de forma lineal, como se ve en el gráfico logarítmico anterior.
11.
12. Pregunta 3: Los datos en el archivo 'voltaje.mat' corresponden al voltaje medido entre la
salida y el punto neutro de un inversor multinivel tipo Flying Capacitor. La frecuencia de
muestreo de datos es de 100kHz.
a) Grafique los datos
b) Obtenga los parámetros de la serie de Fourier asociada a los datos obtenidos
mediante minimización del error cuadrático medio
c) Identifique la frecuencia fundamental y las frecuencias armónicas de la señal
d) Repita, pero esta vez usando la función fft() de MatLab y compare sus resultados
con los de la parte (b)
e) Grafique el períodograma a partir de los resultados en (d)
f) En el períodograma, identifique las frecuencias principales de la señal e intente
reconstruir la señal original a partir de su análisis. Compare gráficamente con la
señal original y calcule el error cuadrático medio.
Solución:
a) Para esta parte, se grafican los datos según la medición.
Esto se implementa en el siguiente código en MatLab:
13. Obteniendo el siguiente gráfico:
b) Conociendo la forma de obtención de los parámetros por MSE según:
𝑎0 =
1
𝑚
∑ 𝑦𝑗
𝑚
𝑗=1
𝑎 𝑘 =
2
𝑚
∑ 𝑦𝑗 cos(
2𝑘𝜋𝑗
𝑚
) 𝑝𝑎𝑟𝑎 𝑘 = 1, … ,
𝑚
2
− 1
𝑚
𝑗=1
𝑏 𝑘 =
1
𝑚
∑ 𝑦𝑗 sin (−
2𝑘𝜋𝑗
𝑚
) 𝑝𝑎𝑟𝑎 𝑘 = 1, …
𝑚
2
− 1
𝑚
𝑗=1
𝑎 𝑚/2 =
1
𝑚
∑ 𝑦𝑗cos(𝑗𝜋)
𝑚
𝑗=1
Para la forma final de serie de Fourier discreta dada por:
𝑥( 𝑡) = 𝑎0 + ∑ 𝑎 𝑘 cos(
2𝜋𝑘𝑡
𝑇
)
𝑚/2
𝑘=1
+ ∑ 𝑏 𝑘 sin (
2𝜋𝑘𝑡
𝑇
)
𝑚
2
−1
𝑘=1
14. Con 𝑚 la cantidad de pares de datos.
Con lo anterior se implementa el siguiente código en MatLab:
Lo que entrega 500 valores de 𝑎 y 500 valores de 𝑏.
c) Para abordar esta parte se utilizó la energía, ya que se sabe que la energía de un
oscilador es proporcional al cuadrado de la amplitud:
𝜕𝑓 =
1
𝑚 𝜕𝑡
15. 𝑆( 𝑖) =
1
2
( 𝑎𝑖
2
+ 𝑏𝑖
2)
𝜕𝑓
, 𝑝𝑎𝑟𝑎 𝑖 = 1,2,3 …
𝑚
2
Donde 𝜕𝑡 es el parámetro de tiempo dt obtenido en los ítems anteriores. Con lo anterior
se grafican las amplitudes versus frecuencias según el siguiente código en MatLab, basado
en el ítem anterior:
Entregando el siguiente gráfico:
Utilizando cursores se ve que la amplitud máxima se da para los 50 [𝐻𝑧], siendo esta la
frecuencia primaria:
16. De la misma forma, analizando en los "picks", se observan las frecuencias armónicas,
siendo los datos de 100, 300 𝑦 500 [𝐻𝑧]las primeras armónicas.
d) Implementando sobre la base de la obtención por MSE, se aplica el código fft().
Como este método entrega el parámetro 𝑐 𝑘, dado el siguiente código en MatLab:
Con este parámetro, el cual es número complejo, se tiene que la energía se da por:
𝑆( 𝑖) =
2
𝑚2
| 𝑐𝑖|2
𝜕𝑓
𝑐𝑜𝑛 𝑖 = 1,2,3 …
𝑚
2
Sacando el espectro de energía según la amplitud para el parámetro FFT se obtiene el
siguiente gráfico:
17. Comparando con el espectro obtenido a partir de los parámetros 𝑎𝑖 y 𝑏𝑖, se obtiene la
misma gráfica, pero esta vez de forma más rápida, ya que se simplifica la programación en
MatLab.
e) asdf
f) asdf