Der folgende Code erstellt ein Diagramm einer bestimmten Berechnung. Mein Problem ist, dass, obwohl die Begriffe im Nenner in einer netten Reihenfolge sind, nach dem Anwenden von Plus auf sie willkürlich neu angeordnet werden. Irgendwelche Vorschläge, wie man die ursprüngliche Reihenfolge zwingen kann, gehalten zu werden?Verhindern von „Plus“ von Neuanordnung Dinge
http://yaroslavvb.com/upload/ind-sets-grid.png
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]
Dies ist ein Duplikat, in der Absicht, wenn nicht zu bilden, der eine andere Frage (http://stackoverflow.com/questions/3947071/controlling-order-of-variables-in-an-expression). Sonst würde ich Ihnen nur +1 für die Grafik geben. Für was ist die Berechnung? – rcollyer
Ja, das ist ähnlich. Der Vorschlag ist, eigene Funktionen zu definieren, die nicht wie "myPlus" funktionieren, aber wie bekomme ich das Gleiche wie "Plus"? –
Die Berechnung ist pro-Stellenbesetzungswahrscheinlichkeiten harten Kern abstoßend lokalen Gas auf einem endlichen Gitter (dh großkanonische Gas mit harten Kern der Selbst Abstoßung und Hard-Core-Paar-Wechselwirkung) –