ABSTRACT (original article): We study numerically, the distribution of the zeros of the grand partition function of k-mers on a k×L strip in the complex fugacity (z) plane. Using transfer matrix methods, we find that our results match the analytical predictions of Heilmann and Leib for k=2. However, for k=3, the zeros are confined within a bounded region, suggesting a fundamental difference in critical behavior. This indicates that trimers belong to a distinct universality class in some finite geometries. We observe that the density of zeros along multiple line segments in the complex plane reveals a richer structure than in the dimer case. Our findings emphasize the role of geometric constraints in shaping the statistical mechanics of k-mer models and set the stage for further studies in higher-dimensional lattices. CITATION (original article): Sarma, S. (2025). A numerical study of the zeros of the grand partition function of k-mers on strips of width k. Journal of Physics A: Mathematical and Theoretical, 58(16), 165001. DOI: https://doi.org/10.1088/1751-8121/adc9e8
This Mathematica notebook contains calculations for finding the zeros of the partition function of configurations of
k
-mers on
kL
strips, the results of which are published, see arXiv:2409.07744. We first check some preliminary functions to find zeroes of polynomials with binomial coefficients, and then using transfer matrix methods, we find the zeros for dimers (k = 2) and trimers (k = 3) on
2L
and
3L
strips and plot them on the complex fugacity plane. We also plot the ratio of real to complex roots, the modulus of the roots with the largest and smallest negative real values as a function of strip length L for the trimers case.

Some warmup calculations of the roots of the polynomial
L+1
(1+z)
.

In[]:=
L=3;​​f[z_]=SumBinomial[L-n+1,n]
n
z
,n,0,
(L+1)
2
​​s=Roots[f[z]==0,z]//FullSimplify;​​t=NRoots[f[z]==0,z]//FullSimplify;
Out[]=
1+3z+
2
z
In[]:=
Solve[f[z]==0,z]//FullSimplify;
In[]:=
Solve[N[s[[2]],10]](*Checkingfortheroots*)
Out[]=
{{z-0.381966011}}
In[]:=
g[z_]=SumBinomial[L-n+1,n]
n
z
,n,1,
(L+1)
2
;​​k=Roots[g[z]==0,z]//FullSimplify;​​Solve[N[k[[2]],10]]
Out[]=
{{z-3.000000000}}
We take the 3 × 3 transfer matrix of the dimers on a ladder scenario [Sec. II. B, Eq. (19)], exponentiate it, and multiply it with an initial vector
v
i
(
Z
L
(2) in the paper). The first element of the final vector obtained is the partition function. We plot its roots in the complex plane.
In[]:=
Clear[z]
In[]:=
l=25;
In[]:=
T=
1+y
1
1
2y
y
0
2
y
0
0
;​​t=Eigenvalues[T];​​w=Eigenvectors[T];​​
v
i
={1+y,2y,
2
y
};​​v=MatrixPower[T,l-1].
v
i
;​​f[y_]=y;​​g[y_]=v[[1]]//Expand​​j=Roots[g[y]==0,y]//FullSimplify;
Out[]=
1+73y+2486
2
y
+52484
3
y
+769991
4
y
+8340715
5
y
+69191458
6
y
+450025410
7
y
+2330671763
8
y
+9708734933
9
y
+32730048126
10
y
+89567993976
11
y
+199052281544
12
y
+358551303670
13
y
+521287815678
14
y
+607714810652
15
y
+562938292231
16
y
+409378631641
17
y
+230098439272
18
y
+97969184844
19
y
+30782211558
20
y
+6893852746
21
y
+1048772300
22
y
+100861716
23
y
+5416441
24
y
+121393
25
y
In[]:=
data=Table[f[y]/.Solve[N[j[[i]],10]],{i,1,l}]
{{-13.62161864},{-9.043410265},{-5.694413460},{-3.708136343},{-2.546460502},{-1.838374442},{-1.384229725},​​{-1.078760513},{-0.8645596278},{-0.7088480340},{-0.5920354307},{-0.5019219293},{-0.4306448654},​​{-0.3730126729},{-0.3255651182},{-0.2860155372},{-0.2528812316},{-0.2251997250},{-0.2023018977},​​{-0.1836554762},{-0.1687875812},{-0.1572677008},{-0.1487194494},{-0.1428372672},{-0.1393980338}}
In[]:=
datafin=data[[40;;50]]
{{-0.6426109234},{-0.6142449832},{-0.5877441033},{-0.5629417880},{-0.5396891611},{-0.5178528420},​​{-0.4973131226},{-0.4779623986},{-0.4597038186},{-0.4424501162},{-0.4261226008}}
​
In[]:=
ComplexListPlot[data]
Out[]=
The exact same is also done for trimers on a 3 × L strip.
In[]:=
Clear[z]​​Clear[L]
In[]:=
L=500;​​T=
1+z
0
0
0
1
1
1
2
z
+2z
z
2
2
z
3z
0
0
0
2z
z
0
4
2
z
2
2
z
0
3
2
z
0
0
0
2
z
0
0
2
3
z
3
z
2
4
z
3
z
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
;
In[]:=
v
i
={1+z,3z,3
2
z
,
3
z
,0,0,0,0,0,0};​​v=MatrixPower[T,L-1].
v
i
;​​g[z_]=v[[1]]//Expand;​​f[z_]=z;​​j=Roots[g[z]==0,z]//FullSimplify;
Timing[data=Table[f[z]/.Solve[N[j[[i]],10]],{i,1,L}]]​​ComplexListPlot[data,AspectRatio->Full]//Short[#,5]&
Out[]//Short=
{0.03125,{{-11.85331359},{-11.26126910},{-10.71876310},{-10.17350191},193,{-0.1581491314+0.0370146454},{-0.1581078510-0.0366127702},{-0.1581078510+0.0366127702}}}
Out[]=
For the roots obtained, we compute the ratio of real roots to complex roots (Fig. 5 of the paper) for different values of L
func1[x_]:=x[[1]];​​data2=func1/@data;​​num_real=Length[Cases[data2,_Real]];​​num_complex=Length[Cases[data2,_Complex]];​​g2[data_]:=Length[Cases[func1/@data,_Real]]/Length[Cases[func1/@data,_Complex]]​​N[g2[data]]
Out[]=
2.75
myfunc1[data_]:=​​Module[{y},​​y=data;​​func1[x_]:=x[[1]];​​data2=func1/@y;​​N[Length[Cases[data2,_Real]]/Length[Cases[data2,_Complex]]]​​]
In[]:=
myfunc1[data]
Out[]=
1.25
In[]:=
myfunc2[L_]:=​​Module{p},​​T=
1+z
0
0
0
1
1
1
2
z
+2z
z
2
2
z
3z
0
0
0
2z
z
0
4
2
z
2
2
z
0
3
2
z
0
0
0
2
z
0
0
2
3
z
3
z
2
4
z
3
z
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
;​​
v
i
={1+z,3z,3
2
z
,
3
z
,0,0,0,0,0,0};​​p=MatrixPower[T,L-1].
v
i
;​​g[z_]:=p[[1]];​​f[z_]:=z;​​j=Roots[g[z]==0,z];​​data=Table[f[z]/.Solve[N[j[[i]],10]],{i,1,L}];​​myfunc1[data]
We compute the magnitude of the leftmost root, or the root which has the most negative real value (Fig. 7 of the paper) for different values of L
We compute the magnitude of the rightmost root, or the root which has the least negative real value (Fig. of the paper) for different values of L
Some code to transform into the new basis

CITE THIS NOTEBOOK

A numerical study of the zeros of the grand partition function of k-mers on strips of width k​
by Soumyadeep Sarma​
Wolfram Community, STAFF PICKS, May 14, 2025
​https://community.wolfram.com/groups/-/m/t/3460470