오일러-마루야마법

Euler–Maruyama method

Itô 미적분학에서 오일러-마루야마법(일명 오일러법)은 확률적 미분방정식(SSE)의 대략적인 수치해결을 위한 방법이다.일반적인 미분방정식을 확률적 미분방정식으로 확장한 이다.레온하르트 오일러와 마루야마 기지로의 이름을 따서 지은 것이다.불행하게도, 어떤 임의의 결정론적 방법에 대해서도 동일한 일반화를 할 수 없다.[1]

확률적 미분 방정식을 고려한다(It it 미적분법 참조).

초기0 조건 X = x, 여기0 Wt Wiener 프로세스를 의미하며, 일정 시간 간격으로 이 SDE를 해결하고자 한다고 가정한다 [0, T]. 후, 참 솔루션 X에 대한 오일러-마루야마 근사치는 다음과 같이 정의된 마르코프 체인 Y이다.

  • 간격 [0, T]을 너비 > N등분할로 분할 :
  • Y0 = x 설정0
  • 0 ≤ nN-1에 대한 Yn 재귀적으로 정의한다.
어디에

랜덤 변수 ΔW는n 독립적이며 기대값이 0이고 분산 인 동일한 분포의 정규 랜덤 변수 입니다.

수치 시뮬레이션

확률적 과정으로 모델링된 유전자 표현

SSDE의 혜택을 크게 받은 분야는 생물학 또는 보다 정밀하게 수학적 생물학이다.대부분의 모델들이 비선형적이고 수치적인 체계를 요구하기 때문에, 여기서 확률적 모델의 사용에 관한 출판물의 수는 증가했다.

그래픽은 오일러 체계를 사용하여 해결되는 확률적 미분 방정식을 묘사한다.결정론적 상대방은 또한 보여진다.

컴퓨터 구현

다음 파이톤 코드는 오일러-마루야마 방법을 구현하고, 이를 사용하여 오렌슈타인-마루야마법을 해결한다.Uhlenbeck 공정 정의:

의 랜덤 번호는 NumPy 수학 패키지를 사용하여 생성된다.

# -*- 코드: utf-8 -*- 수입하다 불결한 로서 np 수입하다 매플리브피플롯 로서 plt  num_sims = 5  # 5회 주행 표시  t_init = 3 t_end  = 7 N      = 1000  # 1000 그리드 포인트 계산 dt     = 둥둥 뜨다(t_end - t_init) / N y_init = 0  c_theta = 0.7 c_mu    = 1.5 c_sigma = 0.06  반항하다 (y, t):     """오른슈타인 구현-"울렌벡 뮤."  # = \theta(\mu-Y_t)     돌아오다 c_theta * (c_mu - y)  반항하다 시그마(y, t):     """오른슈타인 구현-"울렌벡 시그마."""  # = \sigma     돌아오다 c_sigma  반항하다 dW(델타_t):     """"각 통화 시 무작위 번호를 샘플링하십시오."""     돌아오다 np.무작위의.정상의(로케=0.0, 저울=np.sqrt(델타_t))  ts = np.아랑주름하다(t_init, t_end + dt, dt) ys = np.0(N + 1)  ys[0] = y_init  을 위해 _  범위(num_sims):     을 위해 i  범위(1, ts.사이즈를 맞추다):         t = t_init + (i - 1) * dt         y = ys[i - 1]         ys[i] = y + (y, t) * dt + 시그마(y, t) * dW(dt)     plt.음모를 꾸미다(ts, ys)  plt.xlabel("시간(s)") h = plt.ylabel("Y") h.set_set(0) plt.보여 주다() 

Euler–Maruyama Example

다음은 단순히 위의 코드를 MATLAB(R2019b) 프로그래밍 언어로 번역한 것이다.

%% 초기화 및 유틸리티 가까운. 전부; 분명한 전부;  Numsims = 5;            런 수 5개 표시 비율 tBounds = [3 7];        % t의 한계 N      = 1000;          % 1000 그리드 포인트 계산 dt     = (tBounds(2) - tBounds(1)) / N ; y_init = 1;             % 초기 y 조건   pd = 마키스트('정상',0,sqrt(dt)); % 에 대한 확률 분포 초기화                          평균이 0인 % 랜덤 변수 및                          sqrt(dt)의 % stdev  c = [0.7, 1.5, 0.06];   각각 % Theta, Mu, Sigma  ts    = 빈 공간(tBounds(1), tBounds(2), N); t0-->t1부터 N점까지 % ys    = 0(1,N);     0의 행렬(%) 1xN  ys(1) = y_init; %% 프로세스 컴퓨팅 을 위해 j = 1:Numsims     을 위해 i = 2:무감각하게 하다(ts)         t = tBounds(1) + (i-1) .* dt;         y = ys(i-1);               = c(1) .* (c(2) - y);         시그마   = c(3);         dW      = 무작위의(pd);                  ys(i) = y +  .* dt + 시그마 .* dW;     종지부를 찍다     형상을 나타내다()     보유하다 에 관하여;     음모를 꾸미다(ts, ys, 'o') 종지부를 찍다 

참고 항목

참조

  1. ^ Kloeden, P.E. & Platen, E. (1992). Numerical Solution of Stochastic Differential Equations. Springer, Berlin. ISBN 3-540-54062-8.