Teoría del algoritmo

 de Interpolación

 

 

 

 

INTRODUCCIÓN

En el método del Punto Medio y en el de las Adiciones la resolución en Δt es mejorada por un factor r=½ en cada paso. Se va a poder modificar el segundo método mencionado introduciendo otro factor 0<r<1. Por este propuesto, uno interpolaría X(t) en tiempos ti=irΔt a los ejemplos en la etapa anterior. Por lo que un elemento aleatorio Dn sería sumado a todos los puntos interpolados, Dn debe de tener una varianza proporcional a (rn)2H.

 

Δn2 α (rn)2H

 

Cambiando el valor de r se cambia la apariencia del fractal. En el algoritmo que hemos implementado hemos usado una interpolación lineal simple, pero pueden usarse otros tipos de interpolación.

            

ALGORITMO

Siguiendo la idea del algoritmo del Punto Medio, nosotros fijamos VH(0)=0, e igualamos VH(1) a una variable Gaussiana aleatoria con varianza σ2.

 

            Se puede deducir de la misma forma que antes que

 

 

Δn2 = ½ (1-r2-2H)(rn)2Hσ2

 

Asumiendo por simplicidad que tenemos VH(0) y algunos VH(T) hallados previamente donde T≈rn-1. Entonces VH(t) con t≈rn es interpolada mediante

 

VH(t) = VH(0) + t/T (VH(T) – VH(0))

 

 

Entonces, todos los puntos VH(0), VH(t), VH(2t), etc..., son desplazados por una variable aleatoria Gaussiana D con varianza Δ2. Los antiguos valores VH(0) y VH(T) satisfacen la siguiente relación

 

 

var (VH(T) – VH(0)) = T2Hσ2

 

 

se debe seleccionar la varianza Δ2 tal que se mantenga la siguiente relación

 

var (VH(T) – VH(0)) = t2Hσ2

 

por lo que se precisa

 

 

t2Hσ2 = (t/T)2T2Hσ2+2Δ2

 

 

de esta manera

 

 

Δ2=1/2 σ2(1- 1/22-2H) 1/22Hn

 

 

APPLET

 

PSEUDOCÓDIGO

            A continuación se muestra el pseudocódigo del algoritmo para que pueda ser implementado en cualquier lenguaje de programación.

 

Algoritmo Interpolacion (X,N,r,sigma,H,semilla)

 

Argumentos

         X [ ]                   Vector de reales de tamaño N

         N                        Nº de elementos en X

          r                         Factor de escala para la resolución

         sigma                Desviación típica

         H                        0 < H < 1  Dimensión fractal  D = 2 – H

         semilla               valor de la semilla para el generador de nº aleatorio  

                  Variables

             i,index              Enteros  

            h,delta              Reales  

            Y[]                     Vector de reales de tamaño N para interpolar a X  

            mT,mt               Enteros,nº de elementos en los vectores X e Y  

            T,t                      Reales

  Código del programa

  BEGIN

          InitGauss(semilla)

          X[0] := 0

          X[1] := sigma*Gauss()

          mt:=2

          T=1.0

          WHILE (mT<N) DO

                  mt:=mT/r

                  IF (mt=mT) THEN mt:=mT + 1

                  IF (mt>N) THEN mt:=N

                  t:=1/(mt-1)

                  Y[0]:=X[0]

                  Y[mt-1]:=X[mT-1]

                  FOR i:=1 TO mt-2 DO

                          index:=integer(i*t/T)

                           h:=i*t/T-index

                           Y[i]:=(1-h)*X[index]+h*X[index+1]

                  END FOR

                  delta:=sqrt(0.5) * tH * sigma * sqrt(1.0 – (t/T) 2-2H)                

                  FOR i:=0 TO mt-1

    X[i]:=Y[i] + delta * Gauss()

END FOR

mT:=mt

T=1/mT

             END WHILE

END