在Matlab中模拟非线性SDE

时间:2015-08-13 15:04:13

标签: matlab ode

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

dynamic

这不容易通过分析解决。

最终,我有兴趣在Matlab中用#34;连续"开始这些人。时间步长,改变每个过程的参数l,看看它是什么样的。

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

任何可以指引我朝正确方向前进的人?

1 个答案:

答案 0 :(得分:0)

基于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