我已经将 Euler-Maruyama 方法的 Richardson 外推到 4 阶,以估计 SDE 的矩。
Euler-Maruyama 有效,我希望 Richardson 外推也有效,因为当我抑制噪声贡献时,它会在得到的常微分方程中给出正确的解。
但是,当我添加噪声项时,我没有得到我期望的矩(特别是方差),就像我使用常规欧拉方法所做的那样,所以显然我做错了什么。
这是我用于外推的 MATLAB 代码:
function [t, y] = Richardson_weak_4th_order(a, b, t_interval, y0, h)
[t1, y1] = euler_maruyama(a, b, t_interval, y0, h);
[~, y2] = euler_maruyama(a, b, t_interval, y0, h/2);
[~, y3] = euler_maruyama(a, b, t_interval, y0, h/4);
[~, y4] = euler_maruyama(a, b, t_interval, y0, h/8);
% Extrapolation
y2 = y2(1:2:end,:);
y3 = y3(1:4:end,:);
y4 = y4(1:8:end,:);
t = t1;
y = 1/21*(64*y4 - 56*y3 + 14*y2 - y1);
为简单起见,我正在使用 Ornstein-Uhlenbeck 过程进行测试
为此和. Euler 方法的结果还可以,但外推法的方差要大得多。我错过了什么?
编辑:问题是理查森外推没有在估计的时刻(应该)上实现,而是在过程的实现上实现。