En matemáticas , el método de Milstein es una técnica para la solución numérica aproximada de una ecuación diferencial estocástica . Lleva el nombre de Grigori N. Milstein, quien publicó por primera vez el método en 1974. [1] [2]
Descripción
Considere la ecuación diferencial estocástica autónoma de Itō :
con condición inicial , dónde representa el proceso de Wiener , y supongamos que deseamos resolver este SDE en algún intervalo de tiempo . Entonces la aproximación de Milstein a la verdadera soluciónes la cadena de Markov definido como sigue:
- particionar el intervalo dentro subintervalos iguales de ancho :
- colocar
- definir recursivamente por por:
dónde denota la derivada de con respecto a y:
son variables aleatorias normales independientes e idénticamente distribuidas con valor esperado cero y varianza . Luego se aproximará por y aumentando producirá una mejor aproximación.
Tenga en cuenta que cuando , es decir, el término de difusión no depende de , este método es equivalente al método de Euler-Maruyama .
El esquema de Milstein tiene un orden de convergencia fuerte y débil, , que es superior al método de Euler-Maruyama , que a su vez tiene el mismo orden débil de convergencia,, pero orden de convergencia fuerte inferior, . [3]
Derivación intuitiva
Para esta derivación, solo veremos el movimiento browniano geométrico (GBM), cuya ecuación diferencial estocástica viene dada por:
con constantes reales y . Usando el lema de Itō obtenemos:
Por tanto, la solución al GBM SDE es:
dónde
Consulte la solución numérica que se presenta arriba para tres trayectorias diferentes. [4]
Implementación informática
El siguiente código de Python implementa el método de Milstein y lo usa para resolver el SDE que describe el movimiento browniano geométrico definido por
# - * - codificación: utf-8 - * -# Método Milsteinimportar numpy como npimportar matplotlib.pyplot como pltnum_sims = 1 # Un ejemplo# Un segundo y mil puntos de cuadrículat_init = 0t_end = 1N = 1000 # Calcular 1000 puntos de cuadrículadt = flotar ( t_end - t_init ) / N## Condiciones inicialesy_init = 1mu = 3sigma = 1# dw Proceso aleatoriodef dW ( delta_t ): "" "" Distribución normal de muestra aleatoria "" " return np . al azar . normal ( loc = 0.0 , escala = np . sqrt ( delta_t ))# vectores para llenarts = np . arange ( t_init , t_end + dt , dt )ys = np . ceros ( N + 1 )ys [ 0 ] = y_init# Círculopara _ en rango ( num_sims ): para i en gama ( 1 , ts . tamaño ): t = ( i - 1 ) * dt y = ys [ i - 1 ] # Método Milstein ys [ i ] = y + mu * dt * y + sigma * y * dW ( dt ) + 0.5 * sigma ** 2 * y * ( dW ( dt ) ** 2 - dt ) plt . trama ( ts , ys )# Gráficoplt . xlabel ( "tiempo (s)" )plt . cuadrícula ()h = plt . ylabel ( "y" )h . set_rotation ( 0 )plt . mostrar ()
Ver también
Referencias
- ^ Mil'shtein, GN (1974). "Integración aproximada de ecuaciones diferenciales estocásticas" . Teoriya Veroyatnostei i ee Primeneniya (en ruso). 19 (3): 583–588.
- ^ Mil'shtein, GN (1975). "Integración aproximada de ecuaciones diferenciales estocásticas". Teoría de la probabilidad y sus aplicaciones . 19 (3): 557–000. doi : 10.1137 / 1119062 .
- ^ V. Mackevičius, Introducción al análisis estocástico , Wiley 2011
- ^ Umberto Picchini, SDE Toolbox: simulación y estimación de ecuaciones diferenciales estocásticas con Matlab. http://sdetoolbox.sourceforge.net/
Otras lecturas
- Kloeden, PE y Platen, E. (1999). Solución numérica de ecuaciones diferenciales estocásticas . Springer, Berlín. ISBN 3-540-54062-8.CS1 maint: varios nombres: lista de autores ( enlace )