2 votos

¿Por qué mi error de discretización de Euler aumenta con el número de pasos?

Estoy tratando de ver cómo se comporta el error de discretización de Euler con respecto al número de pasos. Para ello estoy simulando un movimiento geométrico browniano y compararlo con su solución "exacta". Sin embargo, al utilizar el error medio cuadrático como medida del error, éste aumenta con el número de pasos, lo que es muy extraño. Así que ahora estoy confundido si he hecho un error de codificación o simplemente me estoy perdiendo algo. Se agradece la ayuda.

Aquí está mi código de matlab, espero que sea autoexplicativo. (El problema es que los elementos de meanvec están aumentando mientras se espera que disminuyan)

X0=100;
mu=0.04;
sigma=0.2;
T=10;
M=10^5;
meanvec=zeros(6,1);

for i=1:6
    N=2^i;
    dt=T/N;

    t=0;
    X=X0;
    for k=1:N
        dW = sqrt(dt)*randn(M,1);
        dX = mu*X*dt + sigma*X.*dW;
        X  = X + dX;
        t  = t + dt;
    end
    Y=100.*exp((mu-sigma^2/2)*T+sigma.*sqrt(T).*randn(M,1));

    meanvec(i)=sqrt(mean((X-Y).^2))/mean(Y);
end

1voto

frank Puntos 61

Después de pensarlo un poco más me he dado cuenta de cuál es el problema. Y se genera con incrementos diferentes a los de X, mientras que debería usar los mismos. He arreglado esto y sé que está disminuyendo.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X