Matlab 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

我试图在mathematica/matlab中实现一个随机过程的例程。这里写的任何代码都是为mathematica编写的,但是如果有人能帮助我在matlab中进行编码(如果他们更熟悉的话),那也可以。然而,如果可能的话,mathematica是优先考虑的

我会先说明我想在复习完方程式后得到什么

下面是我感兴趣的Ito随机过程(其中
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]时会出现问题由于它变得不确定以及…任何围绕这件事的方式将很高兴感谢

  • 最后,我真的需要有人帮助我有效地计算mathematica中的100个积分(因为这些项非常庞大),计算之前发现的每一个退出时间和期望值。我不确定如何正确地找到退出时间

  • ================================================================================ 查找GT(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]
    
    颂歌:

    满足初始条件的:

    在哪里,


    @OlegKomarov你现在能看看这个吗?希望这个没问题。谢谢!@HighPerformanceMark你能看看这个吗?谢谢!这是一个关于数学、Mathematica和Matlab的很长的故事。请试着把它切碎。在Mathematica SE上问数学问题,在Mathematica SE上问数学问题,并隔离其他程序g问题(或有关matlab的问题)并在此处提问。如果可能,确保编程问题包含一个易于复制的示例。