Matlab Ito随机过程的编码
我试图在mathematica/matlab中实现一个随机过程的例程。这里写的任何代码都是为mathematica编写的,但是如果有人能帮助我在matlab中进行编码(如果他们更熟悉的话),那也可以。然而,如果可能的话,mathematica是优先考虑的 我会先说明我想在复习完方程式后得到什么 下面是我感兴趣的Ito随机过程(其中Matlab Ito随机过程的编码,matlab,wolfram-mathematica,stochastic-process,stochastic,Matlab,Wolfram Mathematica,Stochastic Process,Stochastic,我试图在mathematica/matlab中实现一个随机过程的例程。这里写的任何代码都是为mathematica编写的,但是如果有人能帮助我在matlab中进行编码(如果他们更熟悉的话),那也可以。然而,如果可能的话,mathematica是优先考虑的 我会先说明我想在复习完方程式后得到什么 下面是我感兴趣的Ito随机过程(其中z(t)=[x(t),y(t)]: 数量如下: 我们还有以下内容(从现在开始,我将x(t),y(t)键入x,y): 其中,是第一次退出的时间和时间 GT(x)是x
z(t)=[x(t),y(t)]:
数量如下:
我们还有以下内容(从现在开始,我将x(t),y(t)键入x,y
):
其中,是第一次退出的时间和时间
GT(x)
是x
的平滑函数(请参见末尾)
目标:我只想在x
方面获得Q0
===============================================================================
要找到第一次退出时间,可能可以使用以下内容(由b.GatesChecks提供)。请注意,以下是mathematica代码
退出时间限制:
const[x_, y_] := And[10^-8 <= y <= 10^-3, 0.9*(Uc) <= a1*x^2/2 - a3*x^4/4 <= 1.1*(Uc)]
x0 = 0.1; (* starting point for x[t] *) y0 = 0.1; (* starting point for y[t] *)
proc = ItoProcess[ {\[DifferentialD]x[t] == y[t] \[DifferentialD]t, \[DifferentialD]y[t] == (-G*y[t] - (a1*x[t] - a3*x[t]^3) - eps*b3b*y[t]^3) \[DifferentialD]t + Sqrt[2*eps*G] \[DifferentialD]w[t]}, {t, x[t], y[t], Boole[const[x[t], y[t]]]}, {{x, y}, {x0, y0}}, {t, 0}, w \[Distributed] WienerProcess[]]
输出{t,x[t],y[t],Boole[const[x[t],y[t]]}
我需要能够使用上面的代码找到退出时间,然后在Q0
中使用它。上面找到退出时间的代码片段为正确选择的时间生成非零时间
================================================================================
需要设置以查找Q0(x)
:
b1b = 0.9; b3b = .8; a1b = 0.1; a3b = 0.2; G = (1/0.1^2)*
b1b; a1 = (1/.1^2)*a1b; a3 = (1/.1^2)*a3b; xc = Sqrt[a1/a3]; Uc =
a1*xc^2/2 - a3*xc^4/4; L = (G + Sqrt[G^2 + 4*(-(a1 - 3*a3*xc^2))])/2;
y[x_] := (x *a1 - x^3*a3)/(G + L)
b0[x_] := (y[
x]*(a1*x \[Minus]
a3*x ^3)*(1 \[Minus] (a1 \[Minus] 3*a3*x ^2)) \[Minus]
G*y[x]*(a1 \[Minus] 3*a3*x ^2)) /(y[
x] ^2 + (\[Minus]G*y[x] + a1*x \[Minus] a3*x ^3) ^2)
DrhoDy [x_] :=
Sqrt[y[x]^ 2 /(y[x] ^2 + (\[Minus]G*y[x] + a1*x \[Minus] a3*x ^3) ^2)]
linearequation =
y[x]*GT '[x] + b0[x]*GT[x] == G*DrhoDy [x]^2 *GT[x]^ 3;
GT[x] =
DSolve[{linearequation, GT[xc] == Sqrt[b0[xc]/( G*DrhoDy [xc]^2 )]},
GT, x]
-->我们从这个表达式中的积分项开始。首先,从域内部开始(可能使用本文中已经提到的代码片段)找到许多初始条件的值(比如现在为100,即100个退出时间)。现在,可以对100个退出时间中的每一个进行积分计算,作为x
和的函数
-->现在,Q0
中的积分期望值是之前计算的所有100个积分的样本平均值(根据大数定律)。因此,可以找到Q0
,它应该是x
和的函数
================================================================================
我的问题:
b1b = 0.9; b3b = .8; a1b = 0.1; a3b = 0.2; G = (1/0.1^2)*
b1b; a1 = (1/.1^2)*a1b; a3 = (1/.1^2)*a3b; xc = Sqrt[a1/a3]; Uc =
a1*xc^2/2 - a3*xc^4/4; L = (G + Sqrt[G^2 + 4*(-(a1 - 3*a3*xc^2))])/2;
y[x_] := (x *a1 - x^3*a3)/(G + L)
b0[x_] := (y[
x]*(a1*x \[Minus]
a3*x ^3)*(1 \[Minus] (a1 \[Minus] 3*a3*x ^2)) \[Minus]
G*y[x]*(a1 \[Minus] 3*a3*x ^2)) /(y[
x] ^2 + (\[Minus]G*y[x] + a1*x \[Minus] a3*x ^3) ^2)
DrhoDy [x_] :=
Sqrt[y[x]^ 2 /(y[x] ^2 + (\[Minus]G*y[x] + a1*x \[Minus] a3*x ^3) ^2)]
linearequation =
y[x]*GT '[x] + b0[x]*GT[x] == G*DrhoDy [x]^2 *GT[x]^ 3;
GT[x] =
DSolve[{linearequation, GT[xc] == Sqrt[b0[xc]/( G*DrhoDy [xc]^2 )]},
GT, x]
cons中所述t[x,y][/code>,但如果似乎没有希望找到可处理的结果,那么我不介意放松它
GT(x)
的代码导致奇点——我收到了来自DSolve的关于不确定表达式的错误消息……b0[xc]和DrhoDy[xc]都变得不确定,因此DSolve在使用初始条件GT[xc]时会出现问题由于它变得不确定以及…任何围绕这件事的方式将很高兴感谢b1b = 0.9; b3b = .8; a1b = 0.1; a3b = 0.2; G = (1/0.1^2)*
b1b; a1 = (1/.1^2)*a1b; a3 = (1/.1^2)*a3b; xc = Sqrt[a1/a3]; Uc =
a1*xc^2/2 - a3*xc^4/4; L = (G + Sqrt[G^2 + 4*(-(a1 - 3*a3*xc^2))])/2;
y[x_] := (x *a1 - x^3*a3)/(G + L)
b0[x_] := (y[
x]*(a1*x \[Minus]
a3*x ^3)*(1 \[Minus] (a1 \[Minus] 3*a3*x ^2)) \[Minus]
G*y[x]*(a1 \[Minus] 3*a3*x ^2)) /(y[
x] ^2 + (\[Minus]G*y[x] + a1*x \[Minus] a3*x ^3) ^2)
DrhoDy [x_] :=
Sqrt[y[x]^ 2 /(y[x] ^2 + (\[Minus]G*y[x] + a1*x \[Minus] a3*x ^3) ^2)]
linearequation =
y[x]*GT '[x] + b0[x]*GT[x] == G*DrhoDy [x]^2 *GT[x]^ 3;
GT[x] =
DSolve[{linearequation, GT[xc] == Sqrt[b0[xc]/( G*DrhoDy [xc]^2 )]},
GT, x]
颂歌:
满足初始条件的:
在哪里,
及
@OlegKomarov你现在能看看这个吗?希望这个没问题。谢谢!@HighPerformanceMark你能看看这个吗?谢谢!这是一个关于数学、Mathematica和Matlab的很长的故事。请试着把它切碎。在Mathematica SE上问数学问题,在Mathematica SE上问数学问题,并隔离其他程序g问题(或有关matlab的问题)并在此处提问。如果可能,确保编程问题包含一个易于复制的示例。