- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我第一次研究随机微分方程。我希望在二维中模拟和求解随机微分方程。
模型如下:
dp=F(t,p)dt+G(t,p)dW(t)
哪里:
我写的代码如下:
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 anNVARS
-by-1 drift-rate vector when called with two inputs:
- A real-valued scalar observation timet
.
- AnNVARS
-by-1 state vectorXt
.
为 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/
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
Julia的新手,试图测试ODE求解器的速度。我在本教程中使用了Lorenz方程 using DifferentialEquations using Plots function lorenz(t,u
我来这里是因为我一直在尝试使用 sympy 求解微分方程,不幸的是到目前为止我还没有成功。到目前为止我所做的是: 1)插入微分方程,赋值并求解: import sympy as sp from IPy
我不知道问这个地方是否合适,因为我的问题是关于如何使用微分方程增长和衰减方法计算计算机科学算法的复杂性。 我想证明的算法是二分查找排序数组,其复杂度为log2(n) 算法说:如果要搜索的目标值等于中间
我想知道是否有人可以帮助我使用 MatLab 求解 Lotka-Volterra 方程。我的代码似乎不起作用。我执行以下操作: 第 1 步 - 我创建了一个名为 pred_prey_odes.m 的文
我是一名优秀的程序员,十分优秀!