wolfram-mathematica - 防止 "Plus"重新排列东西

标签 wolfram-mathematica

下面的代码创建了一个特定计算的图表。我的问题是,即使分母中的项的顺序很好,但在对其应用 Plus 后,它们会被任意重新排列。任何建议如何强制保留原始订单?


(来源:yaroslavvb.com)

r[i_] := 楼层[(i - 1)/n] + 1;
c[i_] := Mod[i, n, 1];
adj[a_, b_] := Abs[r[a] - r[b]] + Abs[c[a] - c[b]] == 1;
indsetQ[s_] := Not[Or @@ (adj @@@ Subsets[s, {2}])];
indsets[k_] := Select[Subsets[Range[n^2], {k}], indsetQ];
twoColorGraph[g_, seen_, lbl_] := Module[{radius = .22},
vcoords = # -> {c[#], n - r[#]} &/@ Range[n^2];
fv = 函数[{p, v}, {EdgeForm[Thick],
If[MemberQ[seen, v], Pink, White], Disk[p, radius]}];
GraphPlot[g, VertexLabeling -> True, VertexRenderingFunction -> fv,
PlotLabel -> Style[lbl, 20], LabelStyle -> Directive[Bold],
VertexCoordinateRules -> vcoords, ImageSize -> 80]
];
n = 2;
g = Array[Boole[adj[#1, #2]] &, {n^2, n^2}];
weight[set_] := Times @@ (Subscript[\[Lambda], c[#], r[#]] &/@ set);
分母 =
twoColorGraph[g, #, weight[#]] &/@
加入@@ (indsets[#] &/@ Range[2]);
numerator = twoColorGraph[g, {1}, weight[{1}]];
样式[分子/(加@@ 分母),字体大小 -> 30]

最佳答案

格式化类似 myPlus 的技巧至 喜欢 Plus输出是使用 Format .这是一个让您入门的简单示例:

Format[myPlus[expr__]] := Row[Riffle[{expr}, "+"]]

然后,您将在笔记本中直观地看到:
In[7]:= x = myPlus[3, 2, 1]
Out[7]= 3+2+1

... 但是 x还是会有头myPlus .

这是一个 tutorial来自有关格式化输出、运算符优先级等更多详细信息的文档。

希望有帮助!

关于wolfram-mathematica - 防止 "Plus"重新排列东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4109306/

相关文章:

optimization - NMinimize 吃掉所有不必要的符号工作的内存 b/c

language-features - 优雅地更改变量列表 : Generalization of AddTo, TimesBy 等

wolfram-mathematica - 带有 Manipulate 的数学绘图显示没有输出

algorithm - secret 圣诞老人 - 生成 'valid' 排列

wolfram-mathematica - 将 1D 列表转换为 3D 列表

wolfram-mathematica - Mathematica,FrameTicks 在不同类型的图中不一致

c# - 在与统计/模拟软件交互时,C# 和 Java 中哪一个更容易、更快速?

wolfram-mathematica - 测试表达式是否为函数?

types - Mathematica 是一种无类型语言吗?

wolfram-mathematica - 使用 Mathematica 求解递推关系