[랜덤프로세스] Brownian motion simulation

2023. 7. 24. 16:58·확률 및 랜덤프로세스 Random process

Stochastic process를 이해하기 위한 중요한 개념 중 하나는 brownian motion이다.

정확히는 Random walk (Wiener process)를 이해하고 보면 좋을 것 같은데 여기에서는 차치하고 설명한다.

 

 

 

Brownian motion은 연속 시간 시스템일 때 다음과 같이 정의된다. 

$d\beta = w\; dt$

$w$는 zero mean white noise이다.

 

이 시스템은 초기값이 0이고 초기 분산이 0이다. $(\beta(0)=0, \operatorname{Var}(\beta)(0)=0)$

$w$가 zero mean white noise이므로 다음과 같은 성질을 만족한다.

$\mathbb{E}[w(t+\tau)w(t)^{\top}]=Q_{c}(t)\delta(\tau)$

 

여기서 $\delta$는 우리가 알고 있는 그 direc delta function와 동일하다. 또한 $Q_{c}$는 연속 시간 시스템에서 알려진 노이즈의 분산이다.

$\delta(\tau)=\left\{ \begin{matrix} 1 \text{ if }\tau=0 \\ 0 \text{ if }\tau \neq 0 \end{matrix} \right.$

 

또한 brownian motion에서 state의 variance를 구하면 다음과 같다.

$\begin{gathered}\mathbb{E}\left[\left(\beta\left(\tau \right)-\beta\left(0\right)\right)\left(\beta\left(\tau \right)-\beta\left(0 \right)\right)^T\right]=\mathbb{E} \left[\int_{0}^{\tau} w(\gamma) d \gamma * \int_{0}^{\tau} w(\sigma) d \sigma\right] \\ =\mathbb{E} \left[\int_{0}^{\tau} \int_{0}^{\tau} w(\gamma) w(\sigma) d \gamma d \sigma\right]=\int_{0}^{\tau} \int_{0}^{\tau} Q_{c}(\gamma) \delta(\gamma-\sigma) d \gamma d \sigma \\ =\int_{0}^{\tau} Q_{c}(\gamma) d \gamma=Q_{c}\tau, \text { Assuming Constant } Q_{c}\end{gathered}$

 

이제 연속시간에서의 brownian motion의 분산이 시간에 비례하게 증가한다는 것을 알았다.

 

위의 경우는 연속 시간 시스템인 경우이다. 우리가 brownian motion을 이산 시간 시스템으로 생각할 경우를 보면,

 

$\beta_{k}=\beta_{0}+w_{1}+w_{2}+\cdots+w_{k}$

$\mathbb{E}[w_{k}w_{k}^{\top}]=Q_{d}$라고 하자.

 

$P_{k}=\mathbb{E}(\beta_{k}\beta_{k}^{\top})=k Q_{d}$

$\mathbb{E}(\beta_{0}\beta_{0}^{\top})=0$이고 노이즈의 경우 $\mathbb{E}(w_{s}w_{k}^{\top})=0 \;(s\neq k)$이므로 위와 같이 스텝 $k$에 따라 분산이 증가하는 것을 알 수 있다.

 

 

 

다시 돌아와서 연속 시간 시스템을 적분하는 것을 생각해보자.

 

$\beta_{k+1}=\beta_{k}+w_{k}\Delta t$

여기서는 오일러 적분 방식으로 이산화하였다. (이산화 방법에 대해서는 다른 글 참고)

 

여기서 $\mathbb{E}[w_{k}w_{k}^{\top}]=Q_{s}$라고 하자. $Q_{s}$는 적분하는 시스템에서 우리가 정한 노이즈의 분산이다.

 

$\mathbb{E}[\beta_{k+1} \beta_{k+1}^{\top}]=\mathbb{E}[\beta_{k} \beta_{k}]+\mathbb{E}[w_{k}w_{k}^{\top}]\Delta t^{2}$

$k Q_{s} \Delta t^{2}=k (Q_{s}\Delta^{2}) = Q_{s}\Delta t * \tau \quad (k\Delta t = tau)$

위의 식에서 연속 시간에서의 분산을 동일하게 맞추려면

 

$Q_{s}\Delta t = Q_{c}$

$Q_{s}\Delta t^2=Q_{d}$

라는 것을 알 수 있다.

 

따라서 연속 시간 시뮬레이션을 위해서는 $Q_{s}=\dfrac{Q_{c}}{\Delta t}$로 설정해줘야 한다.

이산 시간 시뮬레이션을 위해서는 $Q_{s}=\dfrac{Q_{d}}{\Delta t^{2}}$으로 설정해줘야 한다.

 

 

 

 

Example

 

$\dot{x}=w$를 100,000개의 샘플에 대해서 시뮬레이션을 돌렸을 때 다음과 같다.

$Q_{s}=1$로 동일하다.

 

1) dt = 0.01 일 때

 

$Q_{s}=\dfrac{1}{dt}$로 설정하였다.

 

위 그림을 보면 평균은 계속 0이고, 분산은 $t=10$일 때 $P=10$으로 정확하게 구현된 것을 확인할 수 있다.

 

2) dt = 0.1일 때

 

마찬가지로 $Q_{s}=\dfrac{1}{dt}$로 설정하였다.

 

 

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'확률 및 랜덤프로세스 Random process' 카테고리의 다른 글

[확률] 랜덤 숫자를 생성하는 방법 (1) Uniform distribution  (0) 2023.07.05
'확률 및 랜덤프로세스 Random process' 카테고리의 다른 글
  • [확률] 랜덤 숫자를 생성하는 방법 (1) Uniform distribution
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (458)
      • 공지 (1)
      • 영어 공부 English Study (40)
        • 텝스 TEPS (7)
        • 글 Article (21)
        • 영상 Video (10)
      • 연구 Research (99)
        • 최적화 Optimization (3)
        • 데이터과학 Data Science (7)
        • 인공지능 Artificial Intelligent (40)
        • 제어 Control (45)
      • 프로그래밍 Programming (103)
        • 매트랩 MATLAB (25)
        • 파이썬 Python (33)
        • 줄리아 Julia (2)
        • C++ (3)
        • 리눅스 우분투 Ubuntu (6)
      • 항공우주 Aeronautical engineeri.. (21)
        • 항법 Navigation (0)
        • 유도 Guidance (0)
      • 기계공학 Mechanical engineering (13)
        • 열역학 Thermodynamics (0)
        • 고체역학 Statics & Solid mechan.. (10)
        • 동역학 Dynamics (1)
        • 유체역학 Fluid Dynamics (0)
      • 수학 Mathematics (34)
        • 선형대수학 Linear Algebra (18)
        • 미분방정식 Differential Equation (3)
        • 확률및통계 Probability & Sta.. (2)
        • 미적분학 Calculus (1)
        • 복소해석학 Complex Analysis (5)
        • 실해석학 Real Analysis (0)
      • 수치해석 Numerical Analysis (21)
      • 확률 및 랜덤프로세스 Random process (2)
      • 추론 & 추정 이론 Estimation (3)
      • 기타 (26)
        • 설계 프로젝트 System Design (8)
        • 논문작성 Writing (55)
        • 세미나 Seminar (2)
        • 생산성 Productivity (3)
      • 유학 생활 Daily (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    matplotlib
    인공지능
    IEEE
    Numerical Analysis
    MATLAB
    고체역학
    텝스
    pytorch
    딥러닝
    에러기록
    Dear abby
    논문작성법
    우분투
    Julia
    수치해석
    수식삽입
    Statics
    옵시디언
    Linear algebra
    WOX
    텝스공부
    논문작성
    teps
    LaTeX
    Python
    JAX
    생산성
    Zotero
    ChatGPT
    obsidian
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
보통의공대생
[랜덤프로세스] Brownian motion simulation
상단으로

티스토리툴바