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 . Recibe su nombre de Grigori Milstein , quien lo publicó por primera vez en 1974. [ 1 ] [ 2 ]
Descripción
Consideremos la ecuación diferencial estocástica autónoma de Itō : con condición inicial, dóndedenota el proceso de Wiener , y supongamos que deseamos resolver esta EDE en algún intervalo de tiempo. . Luego, la aproximación de Milstein a la solución verdaderaes la cadena de Markovdefinido de la siguiente manera:
- Dividir el intervaloensubintervalos iguales de ancho:
- Colocar
- Definir recursivamenteparapor:dóndedenota la derivada decon respecto ay:son variables aleatorias normales independientes e idénticamente distribuidas con valor esperado cero y varianza. Entoncesse aproximaráparay en aumentodará como resultado 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 tanto orden de convergencia débil como fuerte.que es superior al método de Euler-Maruyama , que a su vez tiene el mismo orden de convergencia débil.pero orden de convergencia fuerte inferior. [ 3 ]
Derivación intuitiva
Para esta derivación, solo consideraremos el movimiento browniano geométrico (GBM), cuya ecuación diferencial estocástica viene dada por: con constantes realesyUtilizando el lema de Itō obtenemos:
Por lo tanto, la solución al SDE de GBM es: dónde
La solución numérica se presenta en el gráfico para tres trayectorias diferentes. [ 4 ]

Implementación informática
El siguiente código Python implementa el método de Milstein y lo utiliza para resolver la EDE que describe el movimiento browniano geométrico definido por
# -*- coding: utf-8 -*-# Método Milsteinimport numpy as npimport matplotlib.pyplot as pltClase Modelo :"""Constantes del modelo estocástico."""mu = 3sigma = 1definición dW ( dt ):"Distribución normal de muestra aleatoria."return np.random.normal ( loc = 0.0 , scale = np.sqrt ( dt ) )def ejecutar_simulación ():""" Devuelve el resultado de una simulación completa."""# Un segundo y mil puntos de la cuadrículaT_INIT = 0T_END = 1N = 1000 # Calcular 1000 puntos de la cuadrículaDT = flotante ( T_END - T_INIT ) / NTS = np.arange ( T_INIT , T_END + DT , DT )Y_INIT = 1# Vectores para rellenarys = np.zeros ( N + 1 )ys [ 0 ] = Y_INICIOpara i en rango ( 1 , TS . tamaño ):t = ( i - 1 ) * DTy = ys [ i - 1 ]dw = dW ( DT )# Resumir los términos como en el método Milsteinys [ i ] = y + \ Modelo . mu * y * DT + \ Modelo . sigma * y * dw + \ ( Modelo . sigma ** 2 / 2 ) * y * ( dw ** 2 - DT )devolver TS , ysdef plot_simulations ( num_sims : int ):"""Representa varias simulaciones en una sola imagen."""para _ en rango ( num_sims ):plt.plot ( * run_simulation ( ) )plt.xlabel ( "tiempo (s ) " )plt.ylabel ( " y " )plt.grid ( )plt.show ( )Si __name__ == "__main__" :NUM_SIMS = 2trazar_simulaciones ( NUM_SIMS )Véase 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". Theory of Probability & Its Applications . 19 (3): 557– 000. doi : 10.1137/1119062 .
- ↑ Mackevičius, V. (2011). Introducción al análisis estocástico . Wiley. ISBN 978-1-84821-311-1.
- ↑ Picchini, Umberto. "SDE Toolbox: simulación y estimación de ecuaciones diferenciales estocásticas con Matlab" .
Lecturas adicionales
- Kloeden, PE ; Platen, E. (1999). Solución numérica de ecuaciones diferenciales estocásticas . Berlín: Springer. ISBN 3-540-54062-8.
- Ecuaciones diferenciales numéricas
- Ecuaciones diferenciales estocásticas