моделирование броуновского движения в MathCad

Dima73

народ, попросили помочь сделать, да чтот нагуглить сходу не получается код, а самому писать времени нет, если ктонть писал подобное и остались исходники, скиньте, не в падлу)

sverum

А что нужно сделать? Сгенерировать траекторию?

Dima73

да, визуализацию 2д с шагом по гауссу

sverum

% brownian_2d.m simulates a two-dimensional Brownian motion
N=10000; % number of steps to take
T=70; % maximum time
h=T/N; % time step
t=(0:h:T); % t is the vector [0 1h 2h 3h ... Nh]
sigma = 1.0; % strength of noise
x=zeros(size(t; % place to store x locations
y=zeros(size(t; % place to store y locations
x(1)=0.0; % initial x location
y(1)=0.0; % initial y location
for i=1:N % take N steps
x(i+1)=x(i)+sigma*sqrt(h)*randn;
y(i+1)=y(i)+sigma*sqrt(h)*randn;
end;
plot(x,y);
grid on % add a grid to axes
% axis([0 T -3 8]); % set axis limits

sverum

% wiener(N) simulates a one-dimensional Wiener motion on [0,1] using
% normally distributed steps
function [W] = wiener(N)
clf; % clear the entire figure
t = (0:1:N)'/N; % t is the column vector [0 1/N 2/N ... 1]
W = [0; cumsum(randn(N,1]/sqrt(N); % S is running sum of N(0,1/N) variables
plot(t,W); % plot the path
hold on
plot(t,0*t,':')
axis([0 1 -2 2])
title([int2str(N) '-step version of the Wiener process and its mean'])
hold off

sverum

% brownian(N,b,sigma,T) simulates a one-dimensional Brownian motion on [0,1]
% using normally distributed steps
function [B] = brownian(N,b,sigma,T)
clf; % clear the entire figure
t = (0:1:N)'/N; % t is the column vector [0 1/N 2/N ... 1]
W = [0; cumsum(randn(N,1]/sqrt(N); % S is running sum of N(0,1/N) variables
t = t*T;
W = W*sqrt(T);
B = b*t + sigma*W;
plot(t,B); % plot the path
hold on
plot(t,b*t,':');
axis([0 T min(-sigmab-2*sigma)*T) max(sigmab+2*sigma)*T)])
title([int2str(N) '-step version of Brownian motion and its mean'])
xlabel(['Drift ' num2str(b) ', diffusion coefficient ' num2str(sigma)])
hold off
Оставить комментарий
Имя или ник:
Комментарий: