restart; with(LinearAlgebra): # Define indeterminates QParam := [q1,q2,q3,q4,q5,q6,q7]: PParam := Matrix([[p1],[p2],[p3],[p4],[p5],[p6],[p7],[p8]]): # Special Fourier parameterization and inverse F := Matrix([ [1,1,1,1,1,1,1,1], [1,1/2,0,1/3,-1/6,0,-1/3,-1/3], [1,0,1,-1/3,0,-1/3,1,-1/3], [1,0,0,-1/3,0,0,-1/3,1/3], [1,0,-1,0,0,0,1,0], [1,-1/2,0,1/3,1/6,0,-1/3,-1/3], [1,-1,1,1,-1,1,1,1]]): FI := Matrix([ [1/64,3/16,3/32,3/8,1/8,3/16,1/64], [1/8,3/4,0,0,0,-3/4,-1/8], [1/16,0,3/8,0,-1/2,0,1/16], [3/32,3/8,-3/16,-3/4,0,3/8,3/32], [3/8,-3/4,0,0,0,3/4,-3/8], [3/16,0,-3/8,0,0,0,3/16], [3/64,-3/16,9/32,-3/8,3/8,-3/16,3/64], [3/32,-3/8,-3/16,3/4,0,-3/8,3/32]]): # List of polynomial parametrizations P0 := [ d0^4+2*d1^4+d2^4, 8*d0^3*d1+8*d0*d1^3+8*d1^3*d2+8*d1*d2^3, 4*d0^3*d2+4*d0*d2^3+8*d1^4, 12*d0^2*d1^2+12*d1^2*d2^2, 24*d0^2*d1*d2+24*d0*d1^3+24*d0*d1*d2^2+24*d1^3*d2, 12*d0^2*d1^2+24*d0*d1^2*d2+12*d1^2*d2^2, 6*d0^2*d2^2+6*d1^4, 24*d0*d1^2*d2]: # Substitutions based on the model P := P0: P := subs(d0 = 1-2*d1-d2, P): # Check that the polynomial parametrization lies in the probability simplex suma := 0: for i from 1 to nops(P) do suma := suma + P[i]: od: normal(expand(suma)); # Ideal of Invariants in Fourier coordinates Invariants := Matrix([ q6^2-q5*q7, q3*q6-q2*q7, q4^2-q3*q5, q4^2-q2*q6, q3^2-q1*q7, q2*q3-q1*q6, q2^2-q1*q5]): # Ideal of Invariants in probability coordinates Fourier := MatrixMatrixMultiply(F,PParam): PInvariants := Invariants: for i from 1 to nops(QParam) do PInvariants := subs(QParam[i] = Fourier[i, 1], PInvariants): od: # Evaluation of Invariants at the polynomial/rational parametrization num := op(PInvariants[1,1..-1])[1]: for j from 1 to num do coordpoly := PInvariants[1, j]: for i from 1 to op(PParam[1..-1,1])[1] do coordpoly := subs(PParam[i, 1] = P0[i], coordpoly): od: coordpoly :=expand(coordpoly): lprint(j,coordpoly); od: