---------------------------------------------------------------------------- -- INVERSE (EXAMPLES) ----------------------------------------------------------------------------- -- Current ring is R = Q[x,y,z] ------------------------------- H1 := DensePoly(2) + 1; H2 := H1 + x^2 * y^2 * z^2; Alpha1 := [1, 1, 1]; Alpha2 := [2, 2, 2]; Inverse(H1,Alpha1); -xy - xz - yz + 1 ------------------------------- Trunc(Alpha1,It*H1); 1 ------------------------------- Inverse(H1,Alpha1) = Inverse(H2,Alpha1); TRUE ------------------------------- Inverse(H1,Alpha2) = Inverse(H2,Alpha2); FALSE ------------------------------- --Ein Beipiel zur Abhaengigkeit der Rechengeschwindigkeit von den Koeffizienten: H:=DensePoly(4)+DensePoly(3)+DensePoly(2)+1; Alpha:=[3,4,5]; Inverse(H,Alpha); -4476x^3y^4z^5 + 366x^3y^4z^4 + 395x^3y^3z^5 + 398x^2y^4z^5 + 892x^3y^4z^3 + 892 x^3y^3z^4 + 747x^2y^4z^4 + 664x^3y^2z^5 + 664x^2y^3z^5 + 414xy^4z^5 + 157x^3y^4z ^2 + 203x^3y^3z^3 + 157x^2y^4z^3 + 157x^3y^2z^4 + 157x^2y^3z^4 + 76xy^4z^4 + 61x ^3yz^5 + 99x^2y^2z^5 + 61xy^3z^5 + 10y^4z^5 - 69x^3y^4z - 94x^3y^3z^2 - 84x^2y^4 z^2 - 94x^3y^2z^3 - 94x^2y^3z^3 - 69xy^4z^3 - 69x^3yz^4 - 84x^2y^2z^4 - 69xy^3z^ 4 - 33y^4z^4 - 31x^3z^5 - 57x^2yz^5 - 57xy^2z^5 - 31y^3z^5 - 16x^3y^4 - 43x^3y^3 z - 36x^2y^4z - 59x^3y^2z^2 - 59x^2y^3z^2 - 36xy^4z^2 - 43x^3yz^3 - 59x^2y^2z^3 - 43xy^3z^3 - 16y^4z^3 - 16x^3z^4 - 36x^2yz^4 - 36xy^2z^4 - 16y^3z^4 - 12x^2z^5 - 19xyz^5 - 12y^2z^5 + 3x^3y^3 + 3x^2y^4 + x^3y^2z + x^2y^3z + 3xy^4z + x^3yz^2 - 2x^2y^2z^2 + xy^3z^2 + 3y^4z^2 + 3x^3z^3 + x^2yz^3 + xy^2z^3 + 3y^3z^3 + 3x^2z ^4 + 3xyz^4 + 3y^2z^4 + 3xz^5 + 3yz^5 + 6x^3y^2 + 6x^2y^3 + 4xy^4 + 8x^3yz + 10x ^2y^2z + 8xy^3z + 4y^4z + 6x^3z^2 + 10x^2yz^2 + 10xy^2z^2 + 6y^3z^2 + 6x^2z^3 + 8xyz^3 + 6y^2z^3 + 4xz^4 + 4yz^4 + 2z^5 + x^3y + 2x^2y^2 + xy^3 + x^3z + 3x^2yz + 3xy^2z + y^3z + 2x^2z^2 + 3xyz^2 + 2y^2z^2 + xz^3 + yz^3 - x^3 - x^2y - xy^2 - y^3 - x^2z - xyz - y^2z - xz^2 - yz^2 - z^3 - x^2 - xy - y^2 - xz - yz - z^2 + 1 ------------------------------- Cpu time = 2.15, User time = 2 ------------------------------- Trunc(Alpha,It*H); 1 ------------------------------- Cpu time = 0.17, User time = 0 ------------------------------- H:=Randomized(DensePoly(4))+Randomized(DensePoly(3))+Randomized(DensePoly(2))+Rand(); Alpha:=[3,4,5]; Inverse(H,Alpha); --interessant ist vor allem die Zeit! Cpu time = 276.76, User time = 277 ------------------------------- Trunc(Alpha,It*H); 1 ------------------------------- Cpu time = 3.25, User time = 4 ------------------------------- --Das Beispiel zur Empfehlung "erst invertieren, dann multiplizieren": Use R::=Q[t,x,y,z]; H1:=1+x+x^2; H2:=1+y+y^2; H3:=1+z+z^2; H4:=1+t+t^2; A:=[3,3,3,3]; I1:=Inverse(H1,A)*Inverse(H2,A)*Inverse(H3,A)*Inverse(H4,A); Cpu time = 0.16, User time = 0 ------------------------------- Trunc(A,I1*H1*H2*H3*H4); 1 ------------------------------- I2:=Inverse(H1*H2*H3*H4,A); Cpu time = 7.47, User time = 8 ------------------------------- I1=I2; TRUE ------------------------------- --und in verschaerfter Form: H1:=Randomized(H1); A:=[3,3,3,3]; I1:=Inverse(H1,A)*Inverse(H2,A)*Inverse(H3,A)*Inverse(H4,A); Cpu time = 0.22, User time = 0 ------------------------------- Trunc(A,I1*H1*H2*H3*H4); 1 ------------------------------- Cpu time = 0.06, User time = 0 ------------------------------- I2:=Inverse(H1*H2*H3*H4,A); Cpu time = 48.90, User time = 49 ------------------------------- I1=I2; TRUE ------------------------------- ----------------------------------------------------------------------------- NPchar_0 (EXAMPLES) ----------------------------------------------------------------------------- Use R::=Q[x[1..4]]; I:=Ideal(x[3]^2+x[1]x[3]+1,x[1]x[2]x[3]x[4]+1); Dim(R/I); 2 ------------------------------- Elim([x[3],x[4]],I); Ideal(0) ------------------------------- TO_for_NP(2); Mat[ [0, 0, 0, 1], [0, 0, 1, 0], [1, 1, 0, 0], [0, -1, 0, 0] ] ------------------------------- Use R::=Q[x[1..4]], Ord(Mat[ [0, 0, 0, 1], [0, 0, 1, 0], [1, 1, 0, 0], [0, -1, 0, 0] ]); I:=Ideal(x[3]^2+x[1]x[3]+1,x[1]x[2]x[3]x[4]+1); G:=ReducedGBasis(I); NPchar_0(G,2,2,2); [[x[4] + x[3]^5 + 2x[1]x[3]^4 - x[2]x[3]^4 + x[1]^2x[3]^3 - x[1]x[2]x[3]^3 + 3x[ 3]^3 + 4x[1]x[3]^2 - 2x[2]x[3]^2 + x[1]^2x[3] - x[1]x[2]x[3] + 3x[3] + x[1] - x[ 2], x[3]^6 + 2x[1]x[3]^5 - x[2]x[3]^5 + x[1]^2x[3]^4 - x[1]x[2]x[3]^4 + 3x[3]^4 + 4x[1]x[3]^3 - 2x[2]x[3]^3 + x[1]^2x[3]^2 - x[1]x[2]x[3]^2 + 4x[3]^2 + 2x[1]x[3 ] - x[2]x[3] + 1], Mat[ [1, 0, 0, -1], [0, 1, 0, -1], [0, 0, 1, 0], [0, 0, 0, 1] ]] ------------------------------- --nochmal das gleiche Beispiel: NPchar_0(G,2,2,2); [[x[4] + 2x[3]^5 + 4x[1]x[3]^4 + 2x[2]x[3]^4 + 2x[1]^2x[3]^3 + 2x[1]x[2]x[3]^3 + 6x[3]^3 + 8x[1]x[3]^2 + 4x[2]x[3]^2 + 2x[1]^2x[3] + 2x[1]x[2]x[3] + 3x[3] + 2x[ 1] + 2x[2], x[3]^6 + 2x[1]x[3]^5 + x[2]x[3]^5 + x[1]^2x[3]^4 + x[1]x[2]x[3]^4 + 3x[3]^4 + 4x[1]x[3]^3 + 2x[2]x[3]^3 + x[1]^2x[3]^2 + x[1]x[2]x[3]^2 + 5/2x[3]^2 + 2x[1]x[3] + x[2]x[3] + 1], Mat[ [1, 0, 0, -1/2], [0, 1, 0, 1/2], [0, 0, 1, 0], [0, 0, 0, 1] ]] ------------------------------- Cpu time = 0.22, User time = 0 ------------------------------- NPchar_0(G,2,10,2); [[x[4] - 1/6x[3]^5 - 1/3x[1]x[3]^4 - 1/2x[2]x[3]^4 - 1/6x[1]^2x[3]^3 - 1/2x[1]x[ 2]x[3]^3 - 1/2x[3]^3 - 2/3x[1]x[3]^2 - x[2]x[3]^2 - 1/6x[1]^2x[3] - 1/2x[1]x[2]x [3] - 10/3x[3] - 1/6x[1] - 1/2x[2], x[3]^6 + 2x[1]x[3]^5 + 3x[2]x[3]^5 + x[1]^2x [3]^4 + 3x[1]x[2]x[3]^4 + 3x[3]^4 + 4x[1]x[3]^3 + 6x[2]x[3]^3 + x[1]^2x[3]^2 + 3 x[1]x[2]x[3]^2 + 21x[3]^2 + 2x[1]x[3] + 3x[2]x[3] + 1], Mat[ [1, 0, 0, 6], [0, 1, 0, -2], [0, 0, 1, 0], [0, 0, 0, 1] ]] ------------------------------- Cpu time = 0.16, User time = 0 ------------------------------- ---------------------------------------------------------------------------- RESIDUE2 (EXAMPLES) ----------------------------------------------------------------------------- --Berechnung von Schnittmultiplizitaeten: Use R::=Q[x,y,z]; F1:=x^5+y^3+z^2-1; F2:=x^2+y^2+z-1; F3:=x^6+y^5+z^3-1; F:=[F1,F2,F3]; G:=Eval(F,[x+1,y,z]); Jac:=Det(Jacobian(G)); Residue2(Jac,G); 3 ------------------------------- Cpu time = 31.10, User time = 31 ------------------------------- G:=Eval(F,[x,y+1,z]); Jac:=Det(Jacobian(G)); Residue2(Jac,G); 4 ------------------------------- Cpu time = 11.98, User time = 12 ------------------------------- G:=Eval(F,[x,y,z+1]); Jac:=Det(Jacobian(G)); Residue2(Jac,G); 6 ------------------------------- Cpu time = 11.09, User time = 11 ------------------------------- G:=Eval(F,[x-1,y+1,z-1]); Jac:=Det(Jacobian(G)); Residue2(Jac,G); 1 ------------------------------- Cpu time = 9.29, User time = 9 ------------------------------- --Mit Jacobi-Kriterium: Cpu time = 0.00, User time = 0 ------------------------------- ----------------------------------------------------------------------------- SCHWERPUNKT (EXAMPLES) ----------------------------------------------------------------------------- Use R::=Q[xy]; --Schwerpunkt bei Translationen: F1:=x^2-y+10; F2:=y^2-x+10; Schwerpunkt([F1,F2]); [0,0] ------------------------------- F1:=Eval(F1,[x+1,y]); Schwerpunkt([F1,F2]); [-1,0] ------------------------------- F1:=Eval(F1,[x+1,y]); Schwerpunkt([F1,F2]); [-2,0] ------------------------------- --Schwerpunkt bei Dilatationen: F1 := (x-2)^2 + y^2 - 4; F2 := y^2 - x + 10; Schwerpunkt([F1, F2]); [3/2,0] ------------------------------- F1 := Eval(F1,[2 * x, 2 * y]); Schwerpunkt([F1, F2]); [2,0] ------------------------------- F1 := Eval(F1,[2 * x, 2 * y]); Schwerpunkt([F1, F2]); [0,0] ------------------------------- F1 := Eval(F1,[2 * x, 2 * y]); Schwerpunkt([F1, F2]); [-16,0] ------------------------------- ---------------------------------------------------------------------------- SPUR (EXAMPLES) ---------------------------------------------------------------------------- --Das Beispiel aus der Arbeit: Use R::=Q[x[1..4]], Ord(Mat[ [0, 0, 0, 1], [0, 0, 1, 0], [1, 1, 0, 0], [0, -1, 0, 0] ]); I:=Ideal(x[3]^2+x[1]x[3]+1,x[1]x[2]x[3]x[4]+1); G:=GBasis(I); NPII(G,2,2,2); [[x[4] - x[3]^5 - 2x[1]x[3]^4 - x[2]x[3]^4 - x[1]^2x[3]^3 - x[1]x[2]x[3]^3 - 3x[3]^3 - 4x[1]x[3]^2 - 2x[2]x[3]^2 - x[1]^2x[3] - x[1]x[2]x[3] - 3x[3] - x[1] - x[2], x[3]^6 + 2x[1]x[3]^5 + x[2]x[3]^5 + x[1]^2x[3]^4 + x[1]x[2]x[3]^4 + 3x[3]^4 + 4x[1]x[3]^3 + 2x[2]x[3]^3 + x[1]^2x[3]^2 + x[1]x[2]x[3]^2 + 4x[3]^2 + 2x[1]x[3] + x[2]x[3] + 1], Mat[ [1, 0, 0, 1], [0, 1, 0, -1], [0, 0, 1, 0], [0, 0, 0, 1] ]] ------------------------------- --Beachte, die einfache Form der Matrix! Use S::=Q[x[1..4]t]; I:=Ideal(x[4]-x[3]^5-2x[1]x[3]^4-x[2]x[3]^4-x[1]^2x[3]^3-x[1]x[2]x[3]^3 -3x[3]^3-4x[1]x[3]^2-2x[2]x[3]^2-x[1]^2x[3]-x[1]x[2]x[3]-3x[3]-x[1]-x[2], x[3]^6+2x[1]x[3]^5+x[2]x[3]^5+x[1]^2x[3]^4+x[1]x[2]x[3]^4+3x[3]^4+4x[1]x[3]^3 +2x[2]x[3]^3+x[1]^2x[3]^2+x[1]x[2]x[3]^2+4x[3]^2+2x[1]x[3]+x[2]x[3]+1, x[3]-t); Elim([x[3],x[4]],I); Ideal(-x[1]^2t^4 - x[1]x[2]t^4 - 2x[1]t^5 - x[2]t^5 - t^6 - x[1]^2t^2 - x[1]x[2]t^2 - 4x[1]t^3 - 2x[2]t^3 - 3t^4 - 2x[1]t - x[2]t - 4t^2 - 1) ------------------------------- Gens(It); [-x[1]^2t^4 - x[1]x[2]t^4 - 2x[1]t^5 - x[2]t^5 - t^6 - x[1]^2t^2 - x[1]x[2]t^2 - 4x[1]t^3 - 2x[2]t^3 - 3t^4 - 2x[1]t - x[2]t - 4t^2 - 1] ------------------------------- Deg(First(It),Indet(5)); 6 ------------------------------- --Der Grad der entstehenden Koerpererweiterung ist also 6. Use R::=Q[x[1..4]]; F:=[x[4] - x[3]^5 - 2x[1]x[3]^4 - x[2]x[3]^4 - x[1]^2x[3]^3 - x[1]x[2]x[3]^3 - 3x[3]^3 - 4x[1]x[3]^2 - 2x[2]x[3]^2 - x[1]^2x[3] - x[1]x[2]x[3] - 3x[3] - x[1] - x[2], x[3]^6 + 2x[1]x[3]^5 + x[2]x[3]^5 + x[1]^2x[3]^4 + x[1]x[2]x[3]^4 + 3x[3]^4 + 4x[1]x[3]^3 + 2x[2]x[3]^3 + x[1]^2x[3]^2 + x[1]x[2]x[3]^2 + 4x[3]^2 + 2x[1]x[3] + x[2]x[3] + 1]; B:=[1, x[3], x[3]^2, x[3]^3, x[3]^4, x[3]^5]; --B ist eine Basis der Koerpererweiterung. D:=2; --Die Spur von 1 ist der Grad der Koerpererweiterung: Spur(F,B,1,D); 6 ------------------------------- Spur(F,B,x[4],D); -2x[1] + 2x[2] ------------------------------- --Die Spur ist Q[x[1],x[2]]-linear: Spur(F,B,x[2]x[4],D)=x[2]*Spur(F,B,x[4],D); TRUE ------------------------------- Spur(F,B,x[2],D)+Spur(F,B,x[1],D)=Spur(F,B,x[2]+x[1],D); TRUE ------------------------------- Spur(F,B,1/x[3],D); -2x[1] - x[2] -------------------------------