常见同分异构体计数
引言
计算
烷基自由基计数
我们从卤代烃$C_nH_{2n+1}X$ 开始, X是卤素, 当然也可以是别的取代基.
Planarisomers
设 Free radicals count ,$\mathtt{Fr}(x)$
三个取代基的置换群若不考虑手性为 S_3 ;若考虑手性为 A_3
\cong{}
\mathbb{\Z{}}_3
$$\mathbb{Z}(\mathcal{S}_3)=\frac 16 (2s_3+3s_2s_1+s_1^3)$$
补上剩下的一个碳
$$\begin{aligned} A(x)&=1+x\mathbb{Z}[\mathcal{S}_3,A(x)]\\ &=1+\dfrac{x}{6}[A^3(x)+3A(x)A(x^2)+2A(x^3)] \end{aligned}$$
当然这个函数方程怎么展开是个大问题, 我们可以使用附录中级数的复合与反演来解决.
A[z_]:=Evaluate@Normal@Fold[ Series[1+z/6(#^3+3# ComposeSeries[#,z^2+O[z]^#2]+2 ComposeSeries[#,z^3+O[z]^#2]),{z,0,#2}]&, 1+O[z],Range@Floor@n ];
Stereoisomers
三个取代基的置换群若考虑手性为循环群 $\mathcal{C}_3$
$$\mathbb{Z}(\mathcal{C}_3)=\frac13(s_1^3+2 s_3)$$
A[z_]:=Evaluate@Normal@Fold[ Series[1+z/3(#^3+2 ComposeSeries[#,z^3+O[z]^#2]),{z,0,#2}]&, 1+O[z],Range@Floor[n/2] ];
烷烃计数
接下来考虑从烷基自由基组合生成烷烃 $C_nH_{2n+2}$
$$p^*-q^*+s=1$$
点的等价类数-边的等价类数+对称边数=1
碳的不同标记方法数-键的不同标记方法数+对称键数=1
let Alkane Count,$\mathtt{Ac}$
\mathtt{\Ac{}}
(z)=P(z)-Q(z)+S(z)
Planarisomers
$$\begin{aligned} P(x)&=x\mathbb{Z}[\mathcal{S}_4,A(x)]\\ &=\frac{1}{24}x(A^4(x)+6A^2(x)A(x^2)+3A^2(x^2)+8A(x)A(x^3)+6A(x^4))\\ Q(x)&=\mathbb{Z}[\mathcal{S}_2,A(x)-1]\\ &=\frac 12((A(x)-1)^2+A(x^2)-1)\\ S(x)&=A(z^2)-1 \end{aligned}$$
AlkaneSeries[n_Integer]:=Block[ {A,P,Q,S,G}, A[z_]:=Evaluate@Normal@Fold[ Series[1+z/6(#^3+3# ComposeSeries[#,z^2+O[z]^#2]+2 ComposeSeries[#,z^3+O[z]^#2]),{z,0,#2}]&, 1+O[z],Range@Floor[n/2] ]; P[z_]=z CycleIndexPolynomial[SymmetricGroup[4],Array[A[z^#]&,4]]; Q[z_]=CycleIndexPolynomial[SymmetricGroup[2],Array[A[z^#]-1&,2]]; S[z_]=A[z^2]; Series[P[z]-Q[z]+S[z]-1,{z,0,n}] ];
Stereoisomers
同样的 $p^*$ 由对称群$\mathcal{S}_4$ 变为交错群$\mathcal{A}_4$ .
$$\mathbb{Z}(\mathcal{A}_4)=\frac{1}{12}(s_1^4+8 s_3 s_1+3 s_2^2)$$
$$Q(x)=\mathbb{Z}[\mathcal{A}_4,A(x)]=\frac{1}{12}\left(8 A\left(z^3\right) A(z)+3 A\left(z^2\right)^2+A(z)^4\right)$$
AlkaneSeries[n_Integer]:=Block[ {A,P,Q,S,G}, A[z_]:=Evaluate@Normal@Fold[ Series[1+z/3(#^3+2 ComposeSeries[#,z^3+O[z]^#2]),{z,0,#2}]&, 1+O[z],Range@Floor[n/2] ]; P[z_]=z CycleIndexPolynomial[AlternatingGroup[4],Array[A[z^#]&,4]]; Q[z_]=CycleIndexPolynomial[SymmetricGroup[2],Array[A[z^#]-1&,2]]; S[z_]=A[z^2]; Series[P[z]-Q[z]+S[z]-1,{z,0,n}] ];
苯环
pg = GroupDirectProduct[AlternatingGroup@5, CyclicGroup@2]; A[z_, i_] := Evaluate[#^i & /@ (1 + a + b + c + d)] CycleIndexPolynomial[pg, Array[A[z, #] &, 60]]; Coefficient[%, a b c d]
附录
旋转群与指标多项式
S,C,A,D
级数复合与反演
拉格朗日反演, 比起比较两边系数高到不知道哪里去了.
群直积与积群
GroupDirectProduct[g1_,g2_]:=With[ {order1=GroupOrder@g1,order2=GroupOrder@g2,r,pd}, r=Thread[Range[order2]->(order1+Range[order2])]; pd=Outer[PermutationProduct,GroupElements[g1],GroupElements[g2]/.r]; PermutationGroup@Flatten@pd ]
我刚开始以为Mathematica没有计算群直积的函数, 然后写了个GroupDirectProduct
.
后来才发现确实没有这个函数, 因为群直积居然划分在群属性里.
GroupDirectProduct[AlternatingGroup@5,CyclicGroup@2] FiniteGroupData[{"DirectProduct", { {"AlternatingGroup",5}, {"CyclicGroup",2} } },"PermutationGroupRepresentation"]