gpt4 book ai didi

matlab - 二维随机微分方程 (SDE)

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:17 26 4
gpt4 key购买 nike

我第一次研究随机微分方程。我希望在二维中模拟和求解随机微分方程。

模型如下:

dp=F(t,p)dt+G(t,p)dW(t)

哪里:

  • p 是一个 2×1 向量:p=(theta(t); phi(t))
  • F是一个列向量:F=(sin(theta)+Psi* cos(phi); Psi*cot(θ)*sin(phi))
  • G 是一个 2×2 矩阵:G=(D 0;0 D/sin(theta))
  • Psi为参数,D为扩散常数

我写的代码如下:

function MDL=gyro_2dim(Psi,D)
% want to solve for 2-by-1 vector:
%p=[theta;phi];
%drift function
F=@(t,theta,phi) [sinth(theta)+Psi.*cos(phi)-D.*cot(theta);Psi.*cot(theta).*sin(phi)];
%diffusion function
G=@(t,theta,phi) [D 0;0 D./sin(theta)];
MDL=sde(F,G)
end

然后我使用以下脚本调用该函数:

params.t0   = 0;               % start time of simulation
params.tend = 20; % end time
params.dt =0.1; % time increment
D=0.1;
nPeriods=10; % # of simulated observations
Psi=1;
MDL=gyro_2dim(Psi,D);
[S,T,Z]=simulate(MDL, nPeriods,'DeltaTime',params.dt);
plot(T,S)

当我运行代码时,我收到此错误消息:

Drift rate invalid at initial conditions or inconsistent model dimensions.

知道如何解决这个错误吗?

最佳答案

来自 sde 的文档:

User-defined drift-rate function, denoted by F. DriftRate is a function that returns an NVARS-by-1 drift-rate vector when called with two inputs:
- A real-valued scalar observation time t.
- An NVARS-by-1 state vector Xt.

Diffusion 函数提供了类似的规范。但是,您将状态向量的元素作为标量传递,因此具有三个而不是两个输入。您可以尝试将模型创建函数更改为:

function MDL=gyro_2dim(Psi,D)
% State vector: p = [theta;phi];
F = @(t,p)[sin(p(1))+Psi.*cos(p(2))-D.*cot(p(1));
Psi.*cot(p(1)).*sin(p(2))]; % Drift
G = @(t,p)[D 0;
0 D./sin(p(1))]; % Diffusion
MDL = sde(F,G);
MDL.StartTime = 0; % Set initial time
MDL.StartState = ... % Set initial conditions

我还将 sinth(theta) 更改为 sin(p(1)) 因为没有 sinth 函数。我无法对此进行测试,因为我没有财务工具箱(很少有)。

关于matlab - 二维随机微分方程 (SDE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35268094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com