布朗运动-北太天元学习32
在北太天元学习31中,我们介绍了泊松过程。现在,我们再简单介绍一下维纳过程(Wiener process)。 这是一种应用很广的也很有名的随机过程, 又被称为布朗运动(Brownian motion)。
我们先介绍一维的布朗运动,假设 X(0) = 0, X(t), t \in [0,\infty) 是一个随机过程, 布朗运动区别于其它的随机过程的一个特点是对于任意的 0<s<t, X(t) - X(s) 服从正态分布,
X(t)-X(s) ~ N(0,simga^2 *(t-s)), 这里的sigma 是常数,不依赖于t和s. 参数 sigma = 1 的布朗运动称为标准布朗运动。
我们利用上面的知识,可以用北太天元计算并画出布朗运动的轨迹。布朗运动X(t) 的t 属于 [0,\infty), 我们选择 [0,T] 来观察布朗运动的轨迹,而且也只能选择一些时间点来观察。 我们每一次模拟获得一个轨迹, 得到的图像如下

使用的北太天元的代码如下:
%北太天元 模拟 布朗运动
close all
clc
clear all
hold on
num模拟 = 5;
sigma = 1 % 设值根方差
T = 10; % 设置观察的时间区间[0,T];
h = 0.01; % 设置时间步长
n = floor( T/h) ;
for k = 1:num模拟
x = zeros( n +1 ,1);
t = (0:n) * h ; % 计算的所有时间点
for i= 1:n
x(i+1) = x(i) + randn*sigma*sqrt(h);
end
plot(t, x, 'LineWidth', 5);
end
title("北太天元 画 一维布朗运动的运动轨迹")
xlabel("时间")
ylabel("位置")
hold off
然后,我们再计算一下二维的布朗运动,此时对应于一个时间t的是一个随机向量,有两个随机变量组成, [X(t), Y(t)], 其中X(t) 和Y(t) 都是一维的布朗运动。
我们不再画时间了,而是把每一个时刻的位置画出来,得到了二维布朗运动的轨迹,

所用的北太天元的脚本如下:
%北太天元 画 二维布朗运动的轨迹
close all
clc
clear all
sigma = struct();
sigma.x = 1;
sigma.y = 1;
T = 10;
h = 0.1;
N = floor(T/h);
t = (0:N)*h;
particle = struct();
particle.x = [0; cumsum( sigma.x*sqrt(h) * randn(N, 1) )];
particle.y = [0; cumsum( sigma.y *sqrt(h) * randn(N, 1) )];
plot(particle.x, particle.y,'LineWidth', 4);
text(particle.x(1), particle.y(1), '起点');
text(particle.x(N+1), particle.y(N+1), '终点');
ylabel('Y');
xlabel('X');
title('北太天元模拟粒子做二维布朗运动的轨迹');