Я довольно новичок в MatLab, и недавно я изучил броуновское движение и применил его к стохастической динамике населения. Я пытаюсь вычислить среднее время, необходимое для того, чтобы значения упали ниже порогового значения. В частности, чтобы достичь 1 или ниже, потому что в этот момент население наверняка исчезнет.
Код, который мне нужен для генерации этих данных, выводит график с траекториями функций во времени с заданным количеством временных шагов и итераций. Есть ли какой-нибудь способ подсчитать время для достижения этого числа для каждой из моих траекторий, чтобы я потом взял среднее?
Любые идеи с благодарностью. Я могу предоставить свои коды, если это уместно. Заранее спасибо!
Мой код выглядит следующим образом:
function [x] = myBrownianMotion3(N, nPaths)
% N = number of steps
% nPaths = number of paths
x = zeros(nPaths,N);
dt = 0.1;
sdt = sqrt(dt);
x(:,1) = 10*ones(nPaths,1); %initial population sizes are 10
t(1) = 0;
for n = 1:N
a = randn(nPaths,1)*sdt;
% a = sign(randn(nPaths,1))*sdt; %sign of a normally
% distributed random number
% returns -1, 0, or 1
mu = 0;
sig = 0.2*x(:,n);
x(:,n+1) = x(:,n) + mu*dt + sig.*a; %adds new value to current location
t(n+1) = t(n) + dt; %time dep on steps
end
plot(t,x)
xlabel('Time'), ylabel('Population size'), title('Stochastic Population Model')
end
=======
Теперь я знаю, что это захватывает конечные точки:
A = myBrownianMotion3(n, nPaths);
A(:,end);
B = A(:,end);
Но я не вижу, как рассчитать фактическое время, чтобы упасть ниже 1. Надеюсь, это понятно.