Documentos de Académico
Documentos de Profesional
Documentos de Cultura
HERMITE. APLICACIONES.
A todos vosotros,
¡Muchas gracias!
3
5
Índice de figuras
7
8 ÍNDICE DE FIGURAS
1. Introducción. 11
2. Multirresolución de Harten. 13
2.1. MR por Valores Puntuales en 1D . . . . . . . . . . . . . . . . 18
2.2. Reconstrucciones Lineales y No Lineales. . . . . . . . . . . . . 19
2.2.1. Reconstrucción Lineal: Lagrange. . . . . . . . . . . . . 20
2.2.2. Reconstrucción No Lineal: PPH. . . . . . . . . . . . . . 21
2.2.3. Reconstrucción No Lineal: ENO. . . . . . . . . . . . . 25
5. Interfaz Gráfica. 81
5.1. Ejecución de la Interfaz Gráfica . . . . . . . . . . . . . . . . . 81
5.2. Documentación de la Interfaz Gráfica . . . . . . . . . . . . . . 81
5.2.1. Menú Principal . . . . . . . . . . . . . . . . . . . . . . 82
5.2.2. Cuadro Central . . . . . . . . . . . . . . . . . . . . . . 83
5.3. Ejemplo de uso de la Interfaz Gráfica . . . . . . . . . . . . . . 88
13
14 ÍNDICE GENERAL
6. Experimentos Numéricos. 93
6.1. Interfaz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.2. Aproximando derivadas. . . . . . . . . . . . . . . . . . . . . . 103
6.2.1. Función suave sin aproximar la derivada. . . . . . . . . 103
6.2.2. Función suave aproximando la primera derivada. . . . . 104
6.2.3. Función discontinua sin aproximar la derivada. . . . . . 107
6.2.4. Función discontinua aproximando la primera derivada. 108
6.2.5. Función suave aproximando la primera derivada en la
mitad de los puntos. . . . . . . . . . . . . . . . . . . . 111
6.2.6. Función discontinua aproximando la primera derivada
en la mitad de los puntos. . . . . . . . . . . . . . . . . 113
7. Conclusiones. 117
Capı́tulo 1
Introducción.
15
16 CAPÍTULO 1. INTRODUCCIÓN.
Multirresolución de Harten.
Dkk−1 : V k → V k−1 ,
k
Pk−1 : V k−1 → V k .
17
18 CAPÍTULO 2. MULTIRRESOLUCIÓN DE HARTEN.
Rk : V k → F.
La principal novedad introducida por Harten consiste en que a este ope-
rador reconstrucción no se le exige que sea lineal.
Por motivos de consistencia, se requiere que los operadores discretización
y reconstrucción satisfagan la siguiente condición:
Dk Rk f k = f k , ∀f k ∈ V k ,
o expresado de otro modo:
Dk Rk = IV k ,
es decir, si tomamos la información reconstruida a partir de unos datos dis-
cretos con una cierta resolución y la discretizamos a ese mismo nivel de
resolución, la información discreta obtenida coincide con la original.
F
Rk Dk−1
R ?
Vk V k−1
6I
Dk Rk−1
F
k
Pk−1
Dkk−1 Pk−1
k
= Dk−1 Rk Dk Rk−1 = Dk−1 Rk−1 = IV k−1 .
Esta última relación lo que significa es que cuando utilizamos estos ope-
radores no inventamos información, es decir, si decimamos la información
obtenida a partir de la predicción realizada sobre una información con reso-
lución dada por V k−1 , obtenemos exactamente la misma información de par-
tida, sin introducir ningún elemento nuevo.
Consideremos ahora f k , la información discreta en el nivel de resolución k.
Si aplicamos el operador decimación sobre f k obtenemos f k−1 , es decir, la
información contenida en el nivel de resolución k − 1:
f k−1 = Dkk−1 f k .
20 CAPÍTULO 2. MULTIRRESOLUCIÓN DE HARTEN.
k
En este caso, podemos interpretar que Pk−1 f k−1 es una aproximación a
f k , con un error:
ek := IV k − Pk−1
k
Dkk−1 f k =: Qk f k ∈ V k .
k−1
k
Si definimos un operador Gk que asocie a cada
elemento e ∈ N Dk
su correspondiente conjunto de coeficientes dki , podemos establecer la
siguiente equivalencia:
f k ≡ f k−1 , dk ,
f k−1 = Dkk−1 f k
dk = Gk I − Pk−1
k
Dkk−1 f k ,
para obtener f k−1 , dk a partir de f k , y :
k
Pk−1 f k−1 + Ek dk = f k ,
21
en sentido inverso.
En este caso la equivalencia de información lo es también en cuanto a
número
k−1 kde elementos utilizados para codificar dicha información, ya que en
f , d tenemos Nk−1 +(Nk − Nk−1 ) = Nk elementos, los mismos que hay
k k
en f . Decimos entonces que los coeficientes di contienen la información
no redundante del error de predicción, y serán llamados detalles.
f L ≡ f 0 , dL , . . . , d1 ,
U U U
dL dL−1 ...
Por tanto, y para resumir, los algoritmos para las transformaciones direc-
ta e inversa de la multirresolución son los siguientes:
(Directa)
L L
0 1 L
Do k = L, . . . , 1
f → Mf = f , d , . . . , d f k−1
= Dkk−1 f k (2.4)
k
d = Gk (f k − Pk−1 k
f k−1 )
e
(Inversa)
L −1 L Do k = 1, . . . , L
Mf → M Mf (2.5)
f k = Pk−1
k
f k−1 + Ek dk
X k = {xkj }Jj=0
k
, xkj = jhk , hk = 2−k /J0 , Jk = 2k J0 ,
En otras palabras, (Rk f k )(x) es una función continua que interpola los
datos f k en X k .
Si se escribe (Rk f k )(x) = Ik (x; f k ), entonces uno puede definir las trans-
formadas directa (2.4) e inversa (2.5) de la multirresolución como:
Do k = L, . . . , 1
fjk−1 = f2jk
0 ≤ j ≤ Jk−1 ,
L L
f → Mf (2.9)
dk = f k − Ik−1 (xk ; f k−1 ) 1 ≤ j ≤ Jk−1 .
j 2j−1 2j−1
2.2. RECONSTRUCCIONES LINEALES Y NO LINEALES. 23
y
Do k = 1, . . . , L
f2j = fjk−1
k
M f L → M −1 M f L 1 ≤ j ≤ Jk−1 ,
f k = Ik−1 (xk 2j−1 ; f
k−1
) + dkj 0 ≤ j ≤ Jk−1 .
2j−1
(2.10)
para q = s − 2, . . . , 1.
En la Tabla 2.2.2 podemos ver el valor de estos coeficientes para s =
2, 3, 4.
i
Bs−1
s=2 {2}
s=3 {2, 6}
s=4 {2, 10, 12}
i
Cuadro 2.2: Coeficientes Bs−1 , s = 2, 3, 4.
También vamos a necesitar las medias p-power powerp (x, y), que se intro-
dujeron en [25] para cualquier número entero p ≥ 1, y cualquier pareja (x, y)
como:
x − y p
sign(x) + sign(y) x + y
powerp (x, y) = 1 − . (2.20)
2 2 x + y
Paso 1
Consideramos {fj−1 , fj , fj+1 , fj+2 }.
2.2. RECONSTRUCCIONES LINEALES Y NO LINEALES. 27
en otro caso
Ası́, definimos
Paso 2
Consideramos {fj−2 , f˜j−1 , f˜j , f˜j+1 , f˜j+2 , fj+3 }.
Si |∆4 f˜| ≤ |∆4 f˜| entonces
j−1 j
f˜j+3 := fj+1 +fj −fj−2 +B21 pow2s−2 (∆2j−1 f, ∆2j f )+B22 pow2s−4 (∆4j−2 f˜, ∆4j−1 f˜),
en otro caso
f˜j−2 := fj+1 +fj −fj+3 +B21 pow2s−2 (∆2j−1 f, ∆2j f )+B22 pow2s−4 (∆4j−2 f˜, ∆4j−1 f˜).
Ası́, definimos
(. . . , fj−3 , fj−2 , f˜j−1 , f˜j , f˜j+1 , f˜j+2 , f˜j+3 , fj+4 . . .) si |∆4j−2 f˜| ≤ |∆4j−1 f˜|,
f˜ :=
(. . . , fj−3 , f˜j−2 , f˜j−1 , f˜j , f˜j+1 , f˜j+2 , fj+3 , fj+4 . . .) en otro caso.
(2.23)
Y ası́ se realizarán sucesivos pasos hasta completar la modificación de
los 2s puntos.
la siguiente manera: para cada intervalo, xkj−1 , xkj , se consideran todos los
posibles conjuntos S con r + 1 ≥ 2 puntos incluyendo los puntos xkj−1 y xkj .
n o
SjEN O = xksj−1 , xksj , ..., xksj +r−1 ,
Set s0 = j
for l = 0, . . . , r − 2
if |f [xksl −2 , . . . , xksl +l ]| < |f [xksl −1 , . . . , xksl +l+1 ]|
sl+1 = sl − 1
else
sl+1 = sl
end
end
sj = sr−1
y,
(2) La selección no jerárquica del stencil considera las diferencias dividi-
das de mayor orden correspondientes a todos los stencils posibles, y calcula
el mı́nimo de entre todos los valores absolutos de dichas diferencias. El algo-
ritmo es el siguiente:
Sj3
Sj1
Sj2
Do k = 1, . . . , L
k
= fjk−1
f2j
k−1 k−1 k−1
+ fjk−1 ), si Sj1
k
− 5fj−1
dj + (5fj−3 + 15fj−2 (2.25)
k−1 k−1
+9fjk−1 −fj+1
k−1
k k −fj−2 +9fj−1
f = d + ( ), si Sj2
2j−1 j 16
dk + (5f k−1 + 15f k−1 − 5f k−1 + f k−1 ), si S 3
j j−1 j j+1 j+2 j
34 CAPÍTULO 2. MULTIRRESOLUCIÓN DE HARTEN.
Capı́tulo 3
Multirresolución de Harten
Vectorial
35
36 CAPÍTULO 3. MULTIRRESOLUCIÓN DE HARTEN VECTORIAL
f [x0 ] = f (x0 ),
f (x1 ) − f (x0 )
f [x0 , x1 ] = ,
x1 − x0
f [x1 , x2 ] − f [x0 , x1 ]
f [x0 , x1 , x2 ] = ,
x2 − x0
..........,
f (n+1) (θ)
|f (x) − p(x)| ≤ | (x − x0 ) · · · (x − xn )|,
(n + 1)!
3.1. INTERPOLACIÓN DE HERMITE 37
donde θ ∈ (x0 , xn ).
Como ejemplo vamos a construir el polinomio de tercer grado que pasa
por los puntos (0, 1),(2, 3),(4, 6) y (5, 10). La expresión de dicho polinomio
será
x f [xi ] f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [xi , xi+1 , xi+2 , xi+3 ]
3−1 3/2−1 1 5/6−1/8 34 17
0 1 2−0
=1 4−0
= 8 5−0
= 240
= 120
6−3 4−3/2
2 3 4−2
= 32 5−2
= 5
6
10−6
4 6 5−4
=4
5 10
De esta tabla nos interesa coger la primera fila para formar el polinomio
interpolador de Lagrange.
1 17
= 1 + x + x(x − 2) + x(x − 2)(x − 4).
8 120
f IV (θ)
|f (x) − p3 (x)| = | (x − 0)(x − 2)(x − 4)(x − 5)|.
4!
f IV (θ) f IV (θ)
|f (3) − p3 (3)| ≤ | ||3 − 0||3 − 2||3 − 4||3 − 5| = | |6 =
4! 4!
f IV (θ)
=| |,
4
con
θ ∈ (min{3, 0}, max{3, 5}) = (0, 5),
f (3) ≈ p3 (3).
En el siguiente apartado vamos a pasar a definir cómo llevar a cabo la
interpolación de Hermite haciendo uso de las diferencias divididas generali-
zadas. Para construir dichas diferencias divididas también es posible crear
una tabla del estilo de la vista en este apartado.
x0 x1 ... xm
p(x0 ) = f (x0 ) p(x1 ) = f (x1 ) ... p(xm ) = f (xm )
p0 (x0 ) = f 0 (x0 ) p0 (x1 ) = f 0 (x1 ) ... p0 (xm ) = f 0 (xm )
p00 (x0 ) = f 00 (x0 ) p00 (x1 ) = f 00 (x1 ) ... p00 (xm ) = f 00 (xm )
...
p(n0 ) (x0 ) = f (n0 ) (x0 ) p(n1 ) (x1 ) = f (n1 ) (x1 ). . . p(nm ) (xm ) = f (nm ) (xm )
Reiteramos que las derivadas deben ser consecutivas, se tiene que tener de
la primera a la última para cada nodo (cada columna). Las ni , ∀ i = 1, . . . , m
de cada derivada no tienen que ser las mismas.
Si contamos el número de condiciones que imponemos en cada punto
Condiciones en x0 ⇒ n0 + 1
Condiciones en x1 ⇒ n1 + 1
..
.
Condiciones en xi ⇒ ni + 1
El número de condiciones totales es por tanto N = n0 + n1 + n2 + ... +
nn + n + 1.
f [x0 , x0 ] = f 0 (x0 ),
f (x1 ) − f (x0 )
f [x0 , x1 ] = ⇒ cuando x1 → x0 , f [x0 , x0 ] = f 0 (x0 ),
x1 − x0
f 00 (x0 ) f 00 (ξ)
f [x0 , x0 , x0 ] = porque f [x0 , x1 , x2 ] = ,
2! 2!
siendo ξ ∈ (min(x0 , x1 , x2 ), max(x0 , x1 , x2 )).
f (n) (x0 )
f [x0 , x0 , ..., x0 ] = .
n!
Si el primero y el último son distintos (los demás pueden ser iguales),
40 CAPÍTULO 3. MULTIRRESOLUCIÓN DE HARTEN VECTORIAL
f (N ) (θ)
f (x) − p(x) = (x − x0 )n0 · · · (x − xi )ni · · · (x − xm )nm ,
N!
θ ∈ (min{x, xi }, max{x, xi }).
Cada factor (x − xi ) va elevado al número de condiciones sobre xi , y el
número de la derivada y el factorial coinciden con el número de condiciones
totales.
x0 x1 x2
p(x0 ) = f (x0 ) p(x1 ) = f (x1 ) p(x2 ) = f (x2 )
p0 (x1 ) = f 0 (x1 ) p0 (x2 ) = f 0 (x2 )
P 00 (x2 ) = f 00 (x2 )
Error de Hermite:
f (6) (θ)
f (x) − p5 (x) = (x − x0 )(x − x1 )2 (x − x2 )3 ,
6!
3.1. INTERPOLACIÓN DE HERMITE 41
Ejemplo Hermite 2:
xi f [xi ] f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [xi , xi+1 , xi+2 , xi+3 ]
x0 = 1 3 f [x0 , x0 ] = f 0 (1) = −1 f [x0 , x0 , x1 ] = −1 f [x0 , x0 , x1 , x1 ] = 3
x0 = 1 3 f [x0 , x1 ] = −2 f [x0 , x1 , x1 ] = 2
x1 = 2 1 f [x1 , x1 ] = f 0 (2) = 0
x1 = 2 1
Donde:
f [x0 , x1 ] − f [x0 , x0 ]
f [x0 , x0 , x1 ] = ,
x1 − x0
f [x0 , x1 , x1 ] − f [x0 , x0 , x1 ]
f [x0 , x0 , x1 , x1 ] = ,
x1 − x0
f [x1 , x1 ] − f [x0 , x1 ]
f [x0 , x1 , x1 ] = .
x1 − x0
42 CAPÍTULO 3. MULTIRRESOLUCIÓN DE HARTEN VECTORIAL
f 4 (θ)
f (x) − p3 (x) = (x − x1 )2 (x − x2 )2 ,
4!
θ ∈ (min{x, 1}, max{x, 2}).
3.2. MR VECTORIAL DE HERMITE: FUNCIÓN Y DERIVADA 43
fjk−1 = f2j
k
, j = 0, 1, ..., Jk−1 , (3.1)
(f 0 )k−1
j = (f 0 )k2j , j = 0, 1, ..., Jk−1 . (3.2)
0 m
vjm = v(xm
j ) = hm f (xj ).
Los espaciados de dos niveles sucesivos están relacionados por hk−1 = 2hk ,
y por tanto se puede reescribir (3.2) como
vjk−1 = 2v2j
k
, j = 0, 1, ..., Jk−1 . (3.3)
k−1 3 1
ṽj−1/2 = Ivk−1 (xk−1 k−1 k−1
j−1/2 ; [uj , vj ]) = (uk−1
j
k−1
+ uj−1 ) − (vjk−1 + vj−1
k−1
). (3.5)
2 4
Las proyecciones (3.1) y (3.3) son usadas para reescribir (3.4) y (3.5)
sobre la red X k :
1 1 k
ũk2j−1 = Iuk (xk2j−1 ; [uk2j , v2j
k
]) = (uk2j + uk2j−2 ) − (v2j k
+ v2j−2 ), (3.6)
2 4
k 3 1 k
ṽ2j−1 = Ivk (xk2j−1 ; [uk2j , v2j
k
]) = (uk2j + uk2j−2 ) − (v2j k
+ v2j−2 ). (3.7)
4 4
44 CAPÍTULO 3. MULTIRRESOLUCIÓN DE HARTEN VECTORIAL
descomposición
Algoritmo 1
for k = m, m − 1, . . . , n + 1
for j = 0, 1, . . . , Jk−1
uk−1
j = uk2j ,
vjk−1 = 2v2j k ,
end
for j = 1, 2, . . . , Jk−1
(ru )k−1
j = uk2j−1 − Iuk (xk2j−1 ; [uk2j , v2j
k ]),
k−1 k k k k k
(rv )j = v2j−1 − Iv (x2j−1 ; [u2j , v2j ]),
end
end
reconstrucción
Algoritmo 2
for k = n + 1, n + 2, . . . , m
for j = 0, 1, . . . , Jk−1
uk2j = ujk−1 ,
k = 1 v k−1 ,
v2j 2 j
end
for j = 1, 2, . . . , Jk−1
k ]) + (r )k−1 ,
uk2j−1 = Iuk (xk2j−1 ; [uk2j , v2j u j
v2j−1 = Iv (x2j−1 ; [u2j , v2j ]) + (rv )k−1
k k k k k
j ,
end
end
3.3. APROXIMANDO DERIVADAS 45
reconstrucción
Algoritmo 3
for k = n + 1, n + 2, . . . , m
for j = 0, 1, . . . , Jk−1
uk2j = uk−1
j ,
k 1 k−1
v2j = 2 vj ,
end
for j = 1, 1, . . . , Jk−1
uk2j−1 = Iuk−1 (xk−1
j−1/2 ; [uj , vj ]) + (ru )jk−1 ,
k−1 k−1
k−1
k
v2j−1 = 12 Ivk−1 (xj−1/2 ; [uk−1
j , vjk−1 ]) + (rv )k−1
j ,
end
end
c0 f 0
f000 2 f0000 3 f0IV 4 f V (θ) 5
c1 (f (x0 + h)) = c1 (f0 + f00 h + h + h + h + h ),
2 3! 4! 5!
f 00 f 000 f IV f V (θ)
c2 (f (x0 +2h)) = c2 (f0 +f00 (2h)+ 0 (2h)2 + 0 (2h)3 + 0 (2h)4 + (2h)5 ),
2 3! 4! 5!
f 00 f 000 f IV f V (θ)
c3 (f (x0 +3h)) = c3 (f0 +f00 (3h)+ 0 (3h)2 + 0 (3h)3 + 0 (3h)4 + (3h)5 ),
2 3! 4! 5!
f 00 f 000 f IV f V (θ)
c4 (f (x0 +4h)) = c4 (f0 +f00 (4h)+ 0 (4h)2 + 0 (4h)3 + 0 (4h)4 + (4h)5 ).
2 3! 4! 5!
con θ ∈ (x0 , x4 ).
c0 + c1 + c2 + c3 + c4 = 0,
c1 + 2c2 + 3c3 + 4c4 = 1,
c1 9
+ 2c2 + c3 + 8c4 = 0,
2 2
c1 4 9 32
+ c2 + c3 + c4 = 0,
6 3 2 3
c1 2 27 32
+ c2 + c3 + c4 = 0.
24 3 8 3
de donde obtenemos:
25
c0 = − 12 , c1 = 4, c2 = −3, c3 = 43 , c4 = − 14 .
25
− 12 f0 + 4f1 − 3f2 + 43 f3 − 14 f4 1 (V )
f 0 (x0 ) = − f (θ)h4 .
h 5
Por simetrı́a:
25
0 f
12 n
− 4fn−1 + 3fn−2 − 43 fn−3 + 41 fn−4 1 (V )
f (xn ) = + f (µ)h4 ,
h 5
con µ ∈ (xn−4 , xn ).
12
f 0 (xj−2 ) + 22f 0 (xj ) + f 0 (xj+2 ) = − [f (xj−1 ) − f (xj+1 )] (3.11)
h
1 (5)
− f (η)h4 , con xj−2 < η < xj+2 ,
30
donde h = xj+1 − xj .
48 CAPÍTULO 3. MULTIRRESOLUCIÓN DE HARTEN VECTORIAL
v0 + 22v2 + v4 = −24[f1 − f3 ], j = 2,
v2 + 22v4 + v6 = −24[f3 − f5 ], j = 4,
v4 + 22v6 + v8 = −24[f5 − f7 ], j = 6,
..
.
vn−4 + 22vn−2 + vn = −24[fn−3 − fn−1 ], j = n − 2, (3.12)
donde vj = 2hfj0 .
1 1
f1 = (f0 + f2 ) − (v2 + v0 ),
2 8
1
fj+1 = fj−1 + [vj−2 + 22vj + vj+2 ], j = 2, 4, ..., n − 2.
24
Capı́tulo 4
Algoritmos codificados en
Matlab.
49
50 CAPÍTULO 4. ALGORITMOS CODIFICADOS EN MATLAB.
if nargin==8
A=varargin{1};
n=size(A,2);
nd=size(A,1);
h=varargin{2}
elseif nargin==10
f=varargin{1};
extremos=varargin{2};
n=varargin{3};
nd=varargin{4};
h=(extremos(2)-extremos(1))/(n-1);
x=linspace(extremos(1),extremos(2),n);
for i=1:nd
A(i,:)=subs(diff(f,i-1),x);
end
else
display(’Número inadecuado de variables de entrada’);
return;
end
for i=1:nd
Ar(i,:)=A(i,:)+ruido(i)*rand(1,n);
end
%%%%%%%%%%%%%%%%%%%%%%%%%
% SALIDA DE RESULTADOS
%%%%%%%%%%%%%%%%%%%%%%%%%%
E AAp=abs(A-Ap);
E2 AAp=E AAp.^2;
% entre A y Ap
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SALIDA DE RESULTADOS A UN FICHERO
%%%%%%%%%%%%%%%%%%%%%%%%%%%
fid=fopen(’result MR Hermite.txt’,’w’);
fprintf(fid,’******************************************************\n’);
hora=clock;
fprintf(fid,’Resultado ejecutado el dı́a %d- %d- %d a las %d : %d : %d\n’,...
hora(3),hora(2),hora(1),hora(4),hora(5),fix(hora(6)));
fprintf(fid,’******************************************************\n\n’);
fprintf(fid,’ %f \n’,rat);
for i=1:nd
fprintf(fid,’ %e ’,norma1 AAp(i));
end
fprintf(fid,’ %e %e \n’, Eg medio AAp norma1,Eg maximo AAp norma1);
for i=1:nd
fprintf(fid,’ %e ’,norma2 AAp(i));
end
fprintf(fid,’ %e %e \n’,Eg medio AAp norma2,Eg maximo AAp norma2);
for i=1:nd
fprintf(fid,’ %e ’,normaI AAp(i));
end
fprintf(fid,’ %e %e \n’,Eg medio AAp normaI,Eg maximo AAp normaI);
fclose(fid);
for i=1:nd
figure(i);
hold on;
plot(A(i,:),’k’,’LineWidth’,1);
plot(Ap(i,:),’r’,’LineWidth’,1);
54 CAPÍTULO 4. ALGORITMOS CODIFICADOS EN MATLAB.
E AAp=abs(A-Ap);
E2 AAp=E AAp.^2;
E ArAp=abs(Ar-Ap);
E2 ArAp=E ArAp.^2;
% entre A y Ap
% entre Ar y Ap
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SALIDA DE RESULTADOS A UN FICHERO
%%%%%%%%%%%%%%%%%%%%%%%%%%%
fid=fopen(’result MR Hermite.txt’,’w’);
fprintf(fid,’******************************************************\n’);
hora=clock;
fprintf(fid,’Resultado ejecutado el dı́a %d- %d- %d a las %d : %d : %d\n’,...
hora(3),hora(2),hora(1),hora(4),hora(5),fix(hora(6)));
fprintf(fid,’******************************************************\n\n’);
fprintf(fid,’ %f \n’,rat);
for i=1:nd
fprintf(fid,’ %e ’,norma1 AAp(i));
end
fprintf(fid,’ %e %e \n’,Eg medio AAp norma1,Eg maximo AAp norma1);
for i=1:nd
fprintf(fid,’ %e ’,norma2 AAp(i));
end
fprintf(fid,’ %e %e \n’,Eg medio AAp norma2,Eg maximo AAp norma2);
for i=1:nd
fprintf(fid,’ %e ’,normaI AAp(i));
end
fprintf(fid,’ %e %e \n’,Eg medio AAp normaI,Eg maximo AAp normaI);
for i=1:nd
fprintf(fid,’ %e ’,norma1 ArAp(i));
56 CAPÍTULO 4. ALGORITMOS CODIFICADOS EN MATLAB.
end
fprintf(fid,’ %e %e \n’, Eg medio ArAp norma1,Eg maximo ArAp norma1);
for i=1:nd
fprintf(fid,’ %e ’,norma2 ArAp(i));
end
fprintf(fid,’ %e %e \n’, Eg medio ArAp norma2,Eg maximo ArAp norma2);
for i=1:nd
fprintf(fid,’ %e ’,normaI ArAp(i));
end
fprintf(fid,’ %e %e \n’, Eg medio ArAp normaI,Eg maximo ArAp normaI);
fclose(fid);
for i=1:nd
figure(i);
hold on;
plot(A(i,:),’k’,’LineWidth’,1);
plot(Ar(i,:),’b’,’LineWidth’,1);
plot(Ap(i,:),’r’,’LineWidth’,1);
legend(’Datos Originales’,’Datos con Ruido’,’Datos Aproximados’);
texto titulo=[’Derivada ’,num2str(i-1)];
title(texto titulo);
end
end
4.1.2. Descender.
Este algoritmo utiliza la predicción para descender en la pirámide de
multirresolución.
function [mrA]=descender(Ar,h,l,fron,met,pos)
for k=1:l
% actualizamos el espaciado h
h=2*h;
f1=Ar(1:nd,1:2:n);
if fron==’p’
end
elseif fron==’i’
for i=1:nif
[dp,ya]=Hermite(nodos,condiciones,xa);
pred(1)=ya;
60 CAPÍTULO 4. ALGORITMOS CODIFICADOS EN MATLAB.
f2(1,i)=Ar(1,2*i)-pred(1);
for j=2:nd
dp=diff(dp,1);
pred(j)=subs(dp,xa);
f2(j,i)=Ar(j,2*i)-pred(j);
end
end
elseif fron==’s’
end
elseif fron==’a’
datos=[2*f1(:,1)-f1(:,pf+1:-1:2),f1(:,1:pd)];
for j=1:num
for cf=1:met(j)
condiciones{j}(cf)=datos(cf,j)/factorial(cf-1);
end
end
[dp,ya]=Hermite(nodos,condiciones,xa);
pred(1)=ya;
f2(1,i)=Ar(1,2*i)-pred(1);
for j=2:nd
dp=diff(dp,1);
pred(j)=subs(dp,xa);
f2(j,i)=Ar(j,2*i)-pred(j);
end
end
elseif fron==’c’
end
end
for i=nif+1:nk1-nif-1
datos=f1(:,i-pos+1:i+num-pos);
for j=1:num
for cf=1:met(j)
condiciones{j}(cf)=datos(cf,j)/factorial(cf-1);
end
end
[dp,ya]=Hermite(nodos,condiciones,xa);
pred(1)=ya;
f2(1,i)=Ar(1,2*i)-pred(1);
for j=2:nd
dp=diff(dp,1);
pred(j)=subs(dp,xa);
f2(j,i)=Ar(j,2*i)-pred(j);
end
end
if fron==’p’
end
elseif fron==’i’
for i=nk1-1:-1:nk1-nif
[dp,ya]=Hermite(nodos,condiciones,xa);
pred(1)=ya;
f2(1,i)=Ar(1,2*i)-pred(1);
for j=2:nd
dp=diff(dp,1);
pred(j)=subs(dp,xa);
f2(j,i)=Ar(j,2*i)-pred(j);
end
end
elseif fron==’s’
end
elseif fron==’a’
end
elseif fron==’c’
% actualización de variables
mrA=Ar;
4.1. ALGORITMOS PARA LA MULTIRRESOLUCIÓN VECTORIAL DE HERMITE.67
4.1.3. Ascender.
Utilizamos esta función, para ir ascendiendo en la pirámide de multirre-
solución mediante la predicción dada por la interpolación de Hermite.
function Ap=ascender(mrAt,h,l,fron,met,pos)
% Ap=ascender(mrA,h,3,’p’,[2,2],1)
for k=l:-1:1
f1=mrAt(1:nd,1:nk1);
f2=mrAt(1:nd,nk1+1:n);
4.1. ALGORITMOS PARA LA MULTIRRESOLUCIÓN VECTORIAL DE HERMITE.69
%%%%%%%%%%%%%%%%%%%%%%%%
% valores significativos impares de la escala superior
%%%%%%%%%%%%%%%%%%%%%%%%
mrAt(1:nd,1:2:n)=f1(1:nd,1:nk1);
%%%%%%%%%%%%%%%%%%%%%%%%
% valores significativos pares de la escala superior
%%%%%%%%%%%%%%%%%%%%%%%%
if fron==’p’
end
elseif fron==’i’
70 CAPÍTULO 4. ALGORITMOS CODIFICADOS EN MATLAB.
for i=1:nif
[dp,ya]=Hermite(nodos,condiciones,xa);
pred(1)=ya;
mrAt(1,2*i)=pred(1)+f2(1,i);
for j=2:nd
dp=diff(dp,1);
pred(j)=subs(dp,xa);
mrAt(j,2*i)=pred(j)+f2(j,i);
end
end
elseif fron==’s’
end
end
[dp,ya]=Hermite(nodos,condiciones,xa);
pred(1)=ya;
mrAt(1,2*i)=pred(1)+f2(1,i);
for j=2:nd
dp=diff(dp,1);
pred(j)=subs(dp,xa);
mrAt(j,2*i)=pred(j)+f2(j,i);
end
end
elseif fron==’a’
end
72 CAPÍTULO 4. ALGORITMOS CODIFICADOS EN MATLAB.
elseif fron==’c’
end
end
for i=nif+1:nk1-nif-1
datos=f1(:,i-pos+1:i+num-pos);
for j=1:num
for cf=1:met(j)
condiciones{j}(cf)=datos(cf,j)/factorial(cf-1);
end
4.1. ALGORITMOS PARA LA MULTIRRESOLUCIÓN VECTORIAL DE HERMITE.73
end
[dp,ya]=Hermite(nodos,condiciones,xa);
pred(1)=ya;
mrAt(1,2*i)=pred(1)+f2(1,i);
for j=2:nd
dp=diff(dp,1);
pred(j)=subs(dp,xa);
mrAt(j,2*i)=pred(j)+f2(j,i);
end
end
if fron==’p’
end
74 CAPÍTULO 4. ALGORITMOS CODIFICADOS EN MATLAB.
elseif fron==’i’
for i=nk1-1:-1:nk1-nif
for j=1:num-pos-nk1+i
for cf=1:met(num-j+1)
condiciones{j}(cf)=datos(cf,j)/factorial(cf-1);
end
end
for j=num-pos+i-nk1+1:num
for cf=1:met(j-num+pos-i+nk1)
condiciones{j}(cf)=datos(cf,j)/factorial(cf-1);
end
end
[dp,ya]=Hermite(nodos,condiciones,xa);
pred(1)=ya;
mrAt(1,2*i)=pred(1)+f2(1,i);
for j=2:nd
dp=diff(dp,1);
pred(j)=subs(dp,xa);
mrAt(j,2*i)=pred(j)+f2(j,i);
end
end
elseif fron==’s’
end
elseif fron==’a’
end
76 CAPÍTULO 4. ALGORITMOS CODIFICADOS EN MATLAB.
elseif fron==’c’
end
end
% actualización de variables
nk1=n;
h=h/2;
end
Ap=mrAt;
4.1. ALGORITMOS PARA LA MULTIRRESOLUCIÓN VECTORIAL DE HERMITE.77
78 CAPÍTULO 4. ALGORITMOS CODIFICADOS EN MATLAB.
4.1.4. Factorial.
Esta rutina se utiliza tanto en el programa descender como en el programa
ascender. Realiza el factorial de un número entero n.
function nfac=factorial(n)
if n==0 — n==1
nfac=1;
else
nfac=n;
for i=n-1:-1:2
nfac=nfac*i;
end
end
4.1. ALGORITMOS PARA LA MULTIRRESOLUCIÓN VECTORIAL DE HERMITE.79
% número de nodos
n=length(nodos);
nc total=0;
for i=1:n
nc(i)=length(condiciones{i});
nc total=nc total+nc(i);
end
posicion=1;
for i=1:n
for j=1:nc(i)
tabla(posición,1)=nodos(i);
tabla(posición,2)=condiciones{i}(1);
posicion=posicion+1;
end
end
end
end
end
fila1=tabla(1,:);
4.1. ALGORITMOS PARA LA MULTIRRESOLUCIÓN VECTORIAL DE HERMITE.81
4.1.6. truncarvp.
Por último, la siguiente función ha sido utilizada para truncar los detalles
del vector multirresolucionado.
function [c,rat]=truncarvp(a,l,trun)
[nd,n]=size(a);
n1=(n-1)/2^l+1;
tol=trun(2:end);
ltol=length(tol);
rat=nz*100/(n-n1)/nd;
com=trun(2:end);
lcom=length(com);
num det=floor(com*(n-n1)*nd/100);
c=a(:,n1+1:n);
c=reshape(c,1,nd*(n-n1)); % interpreta la matriz c en forma de vec-
tor
[y,ind]=sort(abs(c),’descend’); % ordenamos los coeficientes de mayor
a menor valor absoluto
y=c(ind); % deja los coeficientes ordenados pero con signo
y(num det+1:end)=0; % eliminamos los menos significativos
c(ind)=y; % pone en posición los coeficientes ya truncados
c=reshape(c,nd,n-n1); % vuelve a forma de matriz
a(:,n1+1:n)=c; % copia en a los coeficientes truncados
for i=1:nd
end
4.1. ALGORITMOS PARA LA MULTIRRESOLUCIÓN VECTORIAL DE HERMITE.83
end
c=a;
nz=nnz(c(:,n1+1:n));
rat=nz*100/(n-n1)/nd;
end
84 CAPÍTULO 4. ALGORITMOS CODIFICADOS EN MATLAB.
Capı́tulo 5
Interfaz Gráfica.
“./PFC/Interfaz Gráfica”.
>> MR_Vectorial_De_Hermite.
85
86 CAPÍTULO 5. INTERFAZ GRÁFICA.
Ayuda
Este menú contiene un tutorial del manejo de la interfaz gráfica e in-
formación general acerca del proyecto (Figura 5.3).
• Tutorial
Seleccionando esta opción se abrirá un tutorial en formato pdf que
contiene indicaciones sobre el manejo de la interfaz gráfica.
5.2. DOCUMENTACIÓN DE LA INTERFAZ GRÁFICA 87
• Acerca de
Seleccionando esta opción recibiremos información general acerca
del proyecto (Figura 5.4).
Datos iniciales
Debemos empezar introduciendo como datos iniciales: la función a con-
88 CAPÍTULO 5. INTERFAZ GRÁFICA.
Ruido
Este cuadro hace referencia al nivel de ruido que se suma a los datos
iniciales, teniendo la posibilidad de introducir el mismo valor de ruido
para la función y sus derivadas, o un nivel de ruido distinto. (Figura
5.6). Si se elige la segunda opción, para introducir dicho ruido, se abre
una nueva ventana para ello.(Figura 5.7).
Tratamiento en la frontera
Como el nombre del campo indica, se debe elegir el tipo de tratamiento
que se quiere tomar en la frontera. (Figura 5.8).
Número de escalas
Se trata de introducir los niveles de multirresolución que desciendes.
(Figura 5.9).
Truncamiento
En este apartado, tenemos que introducir el nivel de truncamiento. Hay
dos opciones, introducir la tolerancia o el porcentaje de detalles guar-
dados. Dentro de estas dos opciones, se ofrece la posibilidad de que
el truncamiento sea igual o distinto según sean valores de función o
valores de derivadas.(Figura 5.10). Pulsando el botón “Introducir valo-
res”, se abrirá una nueva ventana que permita rellenar el truncamiento,
tanto por tolerancia como por porcentaje de detalles, en función de la
derivada. (Figura 5.11).(Figura 5.12)
Experimentos Numéricos.
6.1. Interfaz.
En el capı́tulo anterior hemos visto el funcionamiento de la interfaz gráfica
desarrollada. Vamos a ver ahora varios ejemplos de su utilización. Queremos
comprobar los diferentes errores que se producen a la hora de llevar a cabo
la multirresolución vectorial, en función del número de puntos que se tomen,
el numero de derivadas que usemos, el nivel de ruido introducido o el nivel
de truncamiento utilizado.
97
98 CAPÍTULO 6. EXPERIMENTOS NUMÉRICOS.
6.11. Trabajamos con la función f (x) = sin x en el intervalo [0, 2π] discreti-
zada con 129 puntos, exactamente igual que en los experimentos anteriores,
pero esta vez utilizamos como reconstrucción Hermite de cuatro puntos, con
información sobre la función y la primera en cada punto. Volvemos a hacer-
lo tanto sin ruido como con ruido. Como en los dos primeros experimentos,
vuelve a ser necesario guardarse diferente porcentaje de detalles.
En este caso, las gráficas obtenidas son las de las Figuras 6.12 y 6.13,
que corresponden a función y primera derivada. Los resultados numéricos los
vemos en la Figura 6.14.
Se puede ver como los errores son ligeramente más pequeños en el caso de
aproximar la primera derivada. Esto es debido a que, al guardarnos detalles
110 CAPÍTULO 6. EXPERIMENTOS NUMÉRICOS.
Mencionar también que los errores son del mismo orden en la función dis-
continua que en la suave. Esto ocurre debido a que la compresión es pequeña
y por tanto se guarda los detalles alrededor de la discontinuidad y aproxima
bien. Si comprimiéramos más, los errores en la función discontinua se dispa-
rarı́an, mientras que los de la función suave permanecerı́an dentro de unos
114 CAPÍTULO 6. EXPERIMENTOS NUMÉRICOS.
lı́mites aceptables.
Vemos como para la función suave, los errores son del mismo orden apro-
ximando la primera derivada en los puntos pares sólo o aproximándola para
6.2. APROXIMANDO DERIVADAS. 119
todos los puntos. Sin embargo, en el caso de una función discontinua, si que
mejoran bastante los errores aproximando la primera derivada en los puntos
pares sólo. Esto ocurre, porque debido a que nos guardamos menos valores
significativos, nos podemos guardar más coeficientes de detalle con la misma
compresión, y ası́ obtener menor error. Recordamos que en el caso de discon-
120 CAPÍTULO 6. EXPERIMENTOS NUMÉRICOS.
Conclusiones.
121
122 CAPÍTULO 7. CONCLUSIONES.
[1] I. Ali, J.C. Trillo and S. Amat, Point values Hermite multiresolution for
non-smooth noisy signals., Computing , 77(3), 223-236, (2006).
[2] F. Aràndiga and R. Donat, Stability through synchronization in non-
linear multiscale transformations, SIAM J. Sci. Comput., 29(1), 265-
289,(2007).
[3] S. Amat, Nonseparable multiresolution with error control. Appl. Math.
Comput., 145(1), 117-132, (2003).
[4] S.Amat, A review on the piecewise polynomial harmonic interpolation,
Appl. Num. Math., 58 (8), 1168-1185, (2008).
[5] S.Amat, F.Aràndiga, A.Cohen and R.Donat, Tensor product multire-
solution analysis with error control for compact image representation.
Signal Processing, 82(4), 587-608, (2002).
[6] S.Amat, F.Aràndiga, A.Cohen, R.Donat, G.Garcı́a and M.von Oehsen,
Data compression with ENO schemes: A case study, Appl. Comp. Harm.
Anal., 11, 273-288, (2001).
[7] S.Amat, S.Busquier and V.F.Candela, A polynomial approach to Piece-
wise Hyperbolic Method, Int. J. Comput. Fluid Dyn., 17 (3), 205-217,
(2003).
[8] S. Amat, S. Busquier, and J.C. Trillo., Stable Biorthogonal Multiresolu-
tion Transforms. Journal of Numerical Analysis, Industrial and Applied
Mathematics, 1(3), 229-239, (2006).
[9] S.Amat, K.Dadourian, J.Liandrat and J.C. Trillo, On a class of nonli-
near interpolatory subdivision schemes, submitted (2009).
[10] S.Amat, R.Donat and J.C.Trillo, On specific stability bounds for linear
multiresolution schemes based on piecewise polynomial Lagrange inter-
polation, Journal of Math. Anal. and Appl., 1, 18-27 , (2009).
123
124 BIBLIOGRAFÍA
[19] A.Harten, ENO schemes with subcell resolution., J. Comput. Phys., 83,
148-184, (1989).
[25] S.Serna and A.Marquina, Power ENO methods: a fifth order accurate
Weighted Power ENO method, J. Comput. Phys., 194, 632-658, (2004).