在 Matlab 中模拟非线性 SDE

Simulating non-linear SDE in Matlab

我有一个看起来像 GBM 的非线性过程,但不是因为平方根噪声。两个 Mu 都是常数,l(在一个 Mu 和 sigma 前面)是一个参数。西格玛也是一个常数。 N是增加的人口。

这不容易解析解决。

最终,我有兴趣在 Matlab 中以 "continous" 时间步开始这些人,改变每个过程的参数 l,看看它是什么样子。

由于我从未在 Matlab 中使用 SDE 做过任何事情,所以我有点迷茫。我看过不同的 SDE 求解器,但我似乎无法让它们工作。如前所述,我不希望解决任何问题,只是操纵不同的人口规模、时间和这个参数 l。

谁能给我指出正确的方向?

基于 Desmond J. Higham,我最终采用了这种看起来有点丑陋的方法。这很慢。如果有人对我如何矢量化或包含 SDE 求解器有任何建议,例如 SDETools 以更快地模拟它,我将不胜感激。

clear;
clc;

clf
T = 35; 
N = 2^12; 
Delta = T/N;           
lambda = 0.1; 
sigma = 4; 
Xzero = 1;  
P = 500;

Xem = zeros(1,N+1);    
Xem(1) = Xzero;

for i = 1:P
    for j = 1:N

        if log(Xem(j)) < 0
            Xem(j) = nan;
        end

        Winc = sqrt(Delta)*randn;
        Xem(j+1) = Xem(j) + lambda*Delta*Xem(j) + sigma*sqrt(Xem(j))*Winc;

    end
    plot(0:Delta:T,log(Xem))
    xlabel('t','FontSize',16), ylabel('X','FontSize',16)
    hold on;
end