我想實現條件期望運算符。我將使用資本epsilon E
來表示運營商。我期望至少下列輸入(下劃線表示下標)Mathematica中的符號條件期望
E_2[a]
E_2[x_1]
E_2[x_1 + y_5]
E_1[3 a + b - 4 + 2 x_]
E_6[x_5 x_7]
E_t[x_t]
E_t[3 x_{t - 1} x_{t + 2}]
以產生以下輸出上述
a
x_1
E_2[y_5] + x_1
-4 + 3 a + b + 2 E_2[x_5]
E_6[x_7] x_5
x_t
3 E_t[x_{t + 2}] x_{t - 1}
這些實施例不應我需要產生唯一的輸入/輸出對,而是服務作爲我喜歡的語法的測試和說明。
我有這麼多。 ce
表示條件期望,其第三個組成部分是「期望傳播」是否已完成(否則無限遞歸發生在產品規則中),mv
代表可測量變量。
Notation[Subscript[E, t_][y_] ==> ce[y_, t_, False]];
Notation[Subscript[E, t_][y_] <== ce[y_, t_, _]];
Notation[Subscript[x_, t_] <==> mv[x_, t_]];
(* Atomic Elements and Measurable Variables *)
ce[x_, t_, _] := x /; (AtomQ[x] || Head[x] === mv && 0 <= t - x[[2]]);
(* Distribution over Addition *)
ce[x_ + y__, t_, s_] := ce[x, t, s] + Plus @@ (ce[#, t, s] & /@ {y});
(* Distribution over Product *)
ce[x__Times, t_, False] := Module[{v, m, n},
(* All Variables in the Product *)
v = List @@ x;
(* Measurable Among Them *)
m = Select[v, AtomQ[#] || Head[#] === mv && 0 <= t - #[[2]] &];
(* The Rest is not Measurable *)
n = Complement[v, m];
Times[Times @@ m, ce[Times @@ n, t, True]]
];
我不認爲這一切都會很有意義。如果你想讓函數定義給出上面的輸出給出上面的輸入,你可以將第一個框設置爲第二個。 'Subscript [E,0] [a] = a','Subscript [E,0] [Subscript [x,0]] = Subscript [x,0]'等等,你的例子可以工作,但它不會概括。 PS E是保留字(自然對數的基礎)。 – 2011-03-23 16:50:13
下劃線用於模式匹配......不要在符號名稱 – 2011-03-23 17:50:57
@belisarius中使用它,但是他確實提到他將它用作'Subscript'的縮寫。 – rcollyer 2011-03-23 18:01:48