二维布朗运动matlab绘图
时间: 2023-07-13 16:07:17 浏览: 328
二维布朗运动是一种随机运动,可以用 Matlab 的随机数生成函数实现。以下是一个简单的二维布朗运动 Matlab 绘图代码示例:
```matlab
% 设置参数
N = 10000; % 时间步数
dt = 0.01; % 时间间隔
dx = 0.1; % x方向扩散系数
dy = 0.1; % y方向扩散系数
x0 = 0; y0 = 0; % 初始位置
% 生成随机数
dWx = sqrt(dt*dx)*randn(1,N-1);
dWy = sqrt(dt*dy)*randn(1,N-1);
% 计算位置
x = [x0,cumsum(dWx)];
y = [y0,cumsum(dWy)];
% 绘图
figure();
plot(x,y);
xlabel('x');
ylabel('y');
title('2D Brownian Motion');
```
该代码使用了 randn 函数生成 N-1 个标准正态分布的随机数,然后通过累加计算出每个时间步的位置。最后使用 plot 函数绘制出轨迹图。
相关问题
布朗运动matlab
在Matlab中模拟布朗运动可以使用随机数生成和循环结构来实现。首先,设置一些参数,如正态分布的均值、点的个数、速度等。然后,初始化x和y的初始值为0,并使用plot函数绘制这些点的初始位置。接下来,通过循环进行1000步的模拟。在每一步循环中,通过在当前位置(x,y)上加上服从正态分布且标准差为0.005的随机变量来计算每个点的新的x和y坐标。然后,使用set函数更新绘图对象的数据,并使用drawnow函数重新绘制点的位置。最终,就可以得到一个包含1000个图片的动画,展示布朗运动的轨迹。以下是一个示例的Matlab代码:
```matlab
% 清除命令,清空工作区,关闭所有窗口
clc,clear,close all;
% 设置正态分布的均值
mean = 0;
% 点的个数
n = 100;
% 速度
s = 0.01;
% x, y的初始值
x = zeros([n, 1]);
y = zeros([n, 1]);
h = plot(x, y, '.');
title('模拟布朗运动');
for i = 1:1000
x = x + normrnd(mean, 0.005, [n,1]) * s;
y = y + normrnd(mean, 0.005, [n,1]) * s;
set(h,'XData',x,'YData',y) % 重新绘点
drawnow;
end
```
这段代码会将布朗运动的100个点在二维坐标系下进行模拟,并使用动画的方式展示出1000步的轨迹。通过每一步循环计算每个点的新的x和y坐标,并更新绘图数据,最终得到布朗运动的动画效果。
布朗运动是英国植物学家在观察液体中浮游微粒的运动发现的随机现象,现在已成为随机过程理论最重要的概念之一。下列M函数brwnm.m给出了一维布朗运动(或称维纳过程),使用格式 [t,w]=brwnm(t0,tf,h) 其中[t0,tf]为时间区间,h为采样步长,w(t)为布朗运动。 function [t,w]=brwnm(t0,tf,h) t=t0:h:tf; x=randn(size(t))*sqrt(h); w(1)=0; for k=1:length(t)-1, w(k+1)=w(k)+x(k); end 若w1(t), w2(t)都是一维布朗运动且相互独立,那么(w1(t), w2(t))是一个二维布朗运动。试给出二维布朗运动模拟作图程序。
以下是二维布朗运动模拟作图程序:
```matlab
% 二维布朗运动模拟作图程序
t0 = 0; tf = 1; h = 0.001; % 时间区间和采样步长
[t, w1] = brwnm(t0, tf, h); % 生成第一个布朗运动
[~, w2] = brwnm(t0, tf, h); % 生成第二个布朗运动
figure; plot(w1, w2); % 作图
xlabel('w1(t)'); ylabel('w2(t)');
title('二维布朗运动');
```
运行该程序,即可得到二维布朗运动的模拟作图结果。
阅读全文