## L409 Andrés Mingorance
'''
Haar wavelets algorithms: first steps
'''

from math import *

from numpy import *

from matplotlib.pyplot import *


close("all")

def trend(f):
    r2 = sqrt(2)
    J = range(len(f)//2)
    return [(f[2*j]+f[2*j+1])/r2 for j in J]
    
def fluct(f):
    r2 = sqrt(2)
    J = range(len(f)//2)
    return [(f[2*j]-f[2*j+1])/r2 for j in J]



def haar(f):
    return trend(f) + fluct(f)
    
def energy(f):
    return sum(t**2 for t in f)


X = arange(0, 1, 0.0001)

def f(x): return 17*x**2 * ((1-x)**5)*cos(20*pi*x)
Y = f(X)

close('all')
plot(Y)
plot(haar(Y))
