Le code suivant crée un diagramme d'un certain calcul. Mon problème est que même si les termes du dénominateur sont dans un bon ordre, après avoir appliqué Plus, ils sont réarrangés arbitrairement. Des suggestions pour forcer la commande d'origine à conserver?Empêcher "Plus" de réarranger les choses
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]
Ceci est un doublon, dans l'intention, si ce n'est pas la forme, d'une autre question (http://stackoverflow.com/questions/3947071/controlling-order-of-variables-in-an-expression). Sinon, je vous donnerais un +1 pour les graphiques seuls. À quoi sert le calcul? – rcollyer
Oui, c'est similaire. La suggestion est de définir sa propre fonction qui n'est pas sans ordre comme "myPlus", mais comment l'obtenir pour rendre le même que "Plus"? –
Le calcul consiste à trouver des probabilités d'occupation par site de gaz local répulsif à noyau dur sur une grille finie (c.-à-d. Gaz grand canonique avec auto-répulsion et interaction de noyau dur) –