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 之类的内容格式化为 look 之类的技巧,例如 Plus输出是使用Format.下面是一个让您入门的简单示例:格式[myPlus[expr__]] := Row[Riffle[{expr}, "+"]]然后,您将在笔记本中直观地看到:In[7]:= x = myPlus[3, 2, 1]出[7]= 3+2+1...但是 x 仍然会有头部 myPlus.这是文档中的教程,其中介绍了有关格式的更多详细信息输出、运算符优先级等希望有帮助!The following code creates a diagram of a certain calculation. My problem is that even though the terms in denominator are in a nice order, after applying Plus on it, they get rearranged arbitrarily. Any suggestions how to force the original order to be kept?r[i_] := Floor[(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 = Function[{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);denominator = twoColorGraph[g, #, weight[#]] & /@ Join @@ (indsets[#] & /@ Range[2]);numerator = twoColorGraph[g, {1}, weight[{1}]];Style[numerator/(Plus @@ denominator), FontSize -> 30] 解决方案 The trick to formatting something like myPlus to look like Plus on output is to use Format. Here's a simple example to get you started:Format[myPlus[expr__]] := Row[Riffle[{expr}, "+"]]Then, what you will see visually in the notebook is:In[7]:= x = myPlus[3, 2, 1]Out[7]= 3+2+1... but x will still have head myPlus.Here is a tutorial from the documentation that goes into more details about formatting output, operator precedence, etc.Hope that helps! 这篇关于防止“加"从重新安排事物的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-23 14:23