伊藤随机过程的编码

时间:2013-08-14 04:23:42

标签: matlab wolfram-mathematica stochastic-process stochastic

我正在尝试在mathematica / matlab中实现一个随机过程的例程。这里编写的任何代码都是针对mathematica的,但是如果有人可以帮我在matlab中对它进行编码(如果他们对此更熟悉)那么那也没关系。但是,如果可能,mathematica是优先考虑的事项。

我将在首先讨论方程之后说出我想要得到的东西。

以下是我感兴趣的Ito随机过程(z(t)=[x(t),y(t)]:

enter image description here

具有以下数量:

enter image description here

我们还有以下内容(从现在起我将输入x(t),y(t) as x,y ):

enter image description here

其中,enter image description here是第一个退出时间和         GT(x)x的平滑函数(请在最后看到)

目标:我希望仅Q0enter image description here获得x

=============================================== ================================ 要查找第一个退出时间enter image description here,可以使用以下内容(b.gatessucks提供)。请注意,以下是mathematica代码。

退出时间的约束

enter image description here

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[]]

找到退出时间:

SeedRandom[3] 
sim = RandomFunction[proc, {0, 1, 0.001}];
First@Select[sim[[2, 1, 1]], #[[4]] == 0 &]

输出{t, x[t], y[t], Boole[const[x[t], y[t]]]}

我需要能够使用上面的代码来查找退出时间,然后在Q0中使用它。找到退出时间的上述代码段会为正确选择的enter image description here生成非零时间。

=============================================== =================================

需要设置以查找Q0(x)的数字任务:

- &GT;我们从这个表达式中的积分项开始。首先找到enter image description here的许多初始条件(现在说100个 - 即100个退出时间)从域内开始(可能是通过使用本文中已经提到的片段)。现在,可以针对xenter image description here的函数,为100个退出时间中的每一个计算积分enter image description here

- &GT;现在,Q0中积分的期望值是之前评估的所有100个积分的样本平均值(通过大数定律)。因此,可以找到Q0,它应该只是xenter image description here的函数。

=============================================== =================================

我的问题:

  1. 上面的退出时间代码似乎只为适当选择的初始条件产生非零退出时间。如果有人能够阐明如何选择合适的enter image description here以便产生足够的退出时间,那么这将是值得赞赏的。我真的想按照上面const[x_, y_]中的规定保留我的约束,但如果似乎没有希望找到易处理的结果,那么我不介意放松它。

  2. GT(x)下面的代码会产生奇点 - 我收到DSolve关于不确定表达式的错误消息...... b0 [xc]和DrhoDy [xc]都变得不确定,所以DSolve给出了使用初始条件GT [xc]时的问题,因为它变得不确定......任何解决这个问题的方法都会很高兴。

  3. 最后,我真的需要某人的帮助来有效地评估mathematica中的100个积分(因为这些术语很大)对于之前发现的每个退出时间并且都是期望的。我不确定如何正确找到退出时间。

  4. =============================================== ================================= 找到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]
    

    ODE:

    enter image description here

    满足初始条件:

    enter image description here

    其中,

    enter image description here

    enter image description here

0 个答案:

没有答案