- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想实现条件期望运算符。我将使用资本epsilon E
来表示运营商。我希望至少有以下输入(下划线表示下标)
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]]
];
最佳答案
我想我可以让你接近你想要的;不过,我不会全部完成,因为这可能很棘手,但我会为您指明正确的方向。
首先,在 Mathematica 中使用下标来表示不同的变量是很棘手的,因为它解释了 E
0
如 Subscript[E,0]
和两者 E
和 Subscript
被保留。 (正如 Sjoerd 所说, E = 2.718...
。)让 Mathematica 识别 <anything>
<something>
作为一个独特的符号,您需要通过 <<Notations`
加载 Notations 包.然后使用符号调色板,Symbolize
Subscript[E,0]
. (请注意,不要在不使用调色板正确设置代码的情况下尝试这样做,否则可能无法正常工作。)
根据需要对所有变量进行符号化后,您需要设置适当的转换规则。前两个最简单,输入
E_0[a] = a
E_0[x_0] = x_0
E_0[x_Plus]:=Distribute[E_0[x]]
E_0[x_Times]:=Distribute[E_0[x], Times]
Set
也不是
SetDelayed
将在这里工作,因为正在评估的外部符号是
Dt
,并且您无法将新规则与其关联,因为它是
Protected
.但是,有两种方法可以将此类表达式与内部符号相关联:
UpSet (^=)
(或
UpSetDelayed (^:=)
)或
TagSet (/:)
.我更喜欢使用
TagSet
因为它更明确,但两者都应该有效。
E_0 /: Dt[ E_0[ x_ ], y_ ] := E_0[ Dt[x,y] ]
E_0[x_ + y__]:= E_0[x] + Plus@@( E_0 /@ {y} )
E_0[x_ y__ ] := E_0[x] Times@@( E_0 /@ {y} )
E_0[D[x_1[t_1,q_0], t_1]] E_0[Dt[t_1, y_0]]
+ E_0[D[x_1[t_1,q_0], q_0]] E_0[Dt[q_0,y]]
Dt
的结果规则和规则 4. 获得
E_0
不分发
D
和
Dt
留作练习。
Notation
.不过,我建议您对产品分发进行一些更改。首先,我会使用
x__Times
而不是条件(
/; Head[x] == Times
),因为它更容易阅读,我相信(但尚未测试)它可能更快,即处理它的开销更少。二、代替你使用
Table
与
List @@ x
,其中
@@
,称为
Apply
, 替换
Times
与
List
,它再次更容易阅读和写作。为您定义
n
,考虑使用
Complement
;我不知道它是否更快,但我倾向于为这种类型的事物设置理论结构。最后,除非你需要一个变量为
reevaluated whenever it is used ,请勿使用
SetDelayed
(
:=
), 使用
Set
(
=
)。通过使用
:=
, m 被评估了两次,v 被评估了 3 次!
Notation
每次使用它时,调色板都会在某些时候变得烦人。虽然,调色板可以通过设置
AutoLoadNotationPalette = False
来处理。在加载 Notation 包之前。
关于wolfram-mathematica - Mathematica 中的符号条件期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5408149/
我记得 WRI 的某个人在 official newsgroup 中说出于兼容性目的,Mathematica 7 仍然有一个来自 Mathematica 5 的老式 Mathematica 帮助浏览器
除非巫师先生在度假,否则很难击败这种似乎具有无所不在和无所不知的现象。我们如何使用 Mathematica 和 StackOverflow API 超越他? 最佳答案 这是 Sjoerd 解决方案的一
您好,我无法理解以下函数的输出。 ListPointPlot3D[Table[Sin[x^2 + y], {x, 0, 3, 0.15}, {y, 0, 3
我在图形中显示了一组点: alt text http://img69.imageshack.us/img69/874/plc1k1lrqynuyshgrdegvfy.jpg 我想知道是否有任何命令可以
让 S是具有唯一元素的向量,并且 s它的一个子集,也有独特的元素;例如,S={1,2,3,4,5,6}和 s={1,3,4,6} .现在给出另一个向量 c={7,8,9,7} ,如何创建矢量 C=[7
我想知道如果给定多个替换规则,mma 如何确定在发生碰撞时首先应用哪个规则。一个例子是: x^3 + x^2*s + x^3*s^2 + s x /. {x -> 0, x^_?OddQ -> 2}
在mathematica 中(我使用的是 mma 5.0(猜猜很老)),如果我将以下内容作为一行输入: Needs["Graphics`Master`"]; Animate[Plot[Sin[n x]
如果我有一个字母表,假设 sigma = {1,2,3,4,a,b,c,d,e,f,g} 并且想要生成所有长度为 n 的单词,有没有办法做到这一点? 我可以做 Flatten[Outer[Functi
生成参数列表的素数列表的最简单函数是什么?想出这样的函数并不难,比如: foo[n_] := Block[{A = {}, p = 2}, While[p All] 关于wol
在此示例中,将函数定义为“functionB”时,这是一个奇怪的结果。有人可以解释吗?我想绘制functionB[x]和functionB[Sqrt[x]],它们必须不同,但是此代码显示functio
如何在 Mathematica 中对列表进行数值微分而不先将其拟合为数学表达式(即使用 FindFit )? 具体来说,我想在列表中找到最大斜率的点。 我已经考虑使用 Differences并找到最大
我正在寻找 Mathematica 中原子对象的完整列表(其中 AtomQ 产生 True)。 我知道 Symbol String Integer Real Rational Complex Spar
最近发现了一些old post在 MathGroup 上使用未记录的命令行选项 -batchinput和 -batchoutput显示: If test.mma contains the follo
Mathematica 似乎缺少此功能,或者无论如何我都找不到它。 Series function 可以对多个变量进行连续扩展,但它似乎无法进行完整的多元扩展。 有谁知道如何做到这一点? 谢谢 最佳答
我有兴趣运行相同的函数,该函数以并行方式在多核上使用不同的参数值进行一些蒙特卡罗评估。我还想确保整个函数在同一个内核上运行,而函数内的计算不会跨内核分布。例如,假设我有一个函数(故意简化) f[a_,
我怎样才能从 Range[96] 中不重复地获得 48 个随机对的两个不同元素?即 96 个元素只使用一次。 当我尝试将元组/子集与 Select 结合使用时,我觉得必须有一种更直接的方法来实现这一点
我正在评估 Wolfram Mathematica 8 的大学类(class)项目。 我很难定义目标编程模型。 首先是因为我在数学方面真的很匮乏 :) 其次,因为我在 official documen
我开发了一些代码来从 LogNormalDistribution 和 StableDistribution 的乘积生成随机变量: LNStableRV[{\[Alpha]_, \[Beta]_, \[
我有一个想要优化的字符串验证函数。该字符串的长度为 2n,由 0 和 1 组成,例如 str="100001"。我想测试一下: 1) 字符串中奇数索引位置的 1 的数量(必须不少于 1)是否等于偶数索
请考虑: Function[subID, pointSO[subID] = RandomInteger[{1, 4}, {5, 2}]] /@ {"subA", "subB"}; M
我是一名优秀的程序员,十分优秀!