Asymptotic critical values example


The algorithm discussed was first announced in the following poster: Now see the submitted paper:

In Example 13 of the above paper we take the following polynomial mapping with entries in the polynomial ring ℂ[z1,z2,z1],

g = (z1z2,z1z3).

We compute an algebraic representation of a superset of its asymptotic critical values using Algorithm 1: Hyperspace Intersection, of the same paper, with our implementation in the Maple computer algebra system.

For an implementation of this algorithm in the Maple computer algebra system:

Here, we give this computation in full, including all inputs and outputs, starting with the case j=1:


> randomize();

34150116741

> A := LinearAlgebra:-RandomMatrix(3);

A := Matrix([[78, -46, 79],[29, 62, 64],[-87, 55, 57]])

> vars := [z1,z2,z3];

vars := [z1, z2, z3]

> Asubs := {seq(vars[i] = add(A[i,j]*vars[j], j=1..3),i=1..3)};

Asubs := {z1 = 78 z1 - 46 z2 + 79 z3, z2 = 29 z1 + 62 z2 + 64 z3, z3 = -87 z1 + 55 z2 + 57 z3}

> gA := subs(Asubs, g);

gA := {z1 = 78 z1 - 46 z2 + 79 z3, z2 = 29 z1 + 62 z2 + 64 z3, z3 = -87 z1 + 55 z2 + 57 z3}

> jacgA := VectorCalculus:-Jacobian(gA, vars);

jacgA := Matrix([[4524 z1 + 3502 z2 + 7283 z3, 3502 z1 - 5704 z2 + 1954 z3, 7283 z1 + 1954 z2 + 10112 z3],[-13572 z1 + 8292 z2 - 2427 z3, 8292 z1 - 5060 z2 + 1723 z3, -2427 z1 + 1723 z2 + 9006 z3]])

> dgA := jacgA[1..1,1..3];

dgA := [4524 z1 + 3502 z2 + 7283 z3, 3502 z1 - 5704 z2 + 1954 z3, 7283 z1 + 1954 z2 + 10112 z3]

> B := LinearAlgebra:-NullSpace(jacgA[2..2,1..3]);

B := [[-(2427 z1 - 1723 z2 - 9006 z3)/(3 (4524 z1 - 2764 z2 + 809 z3)), 0, 1],[-(-8292 z1 + 5060 z2 - 1723 z3)/(3 (4524 z1 - 2764 z2 + 809 z3)), 1, 0]]

> v1 := add(B[1][i]*dgA[i]*vars[1], i=1..3);

- ((2427 z1 - 1723 z2 - 9006 z3) z1 (4524 z1 + 3502 z2 + 7283 z3))/(3 (4524 z1 - 2764 z2 + 809 z3)) + z1 (7283 z1 + 1954 z2 + 10112 z3)

> v2 := add(B[2][i]*dgA[i]*vars[1], i=1..3);

- ((-8292 z1 + 5060 z2 - 1723 z3) z1 (4524 z1 + 3502 z2 + 7283 z3))/(3 (4524 z1 - 2764 z2 + 809 z3)) + z1 (3502 z1 - 5704 z2 + 1954 z3)

> tau := {z1 = 1/z1, z2 = z2/z1, z3 = z3/z1};

tau := {z1 = 1/z1, z2 = z2/z1, z3 = z3/z1}

> G := numer(subs(tau, [gA[1] - c1, gA[2] - c2, rand()*e - v1, rand()*e - v2]));

G := [-c1 z1^2 - 2852 z2^2 + 1954 z2 z3 + 5056 z3^2 + 3502 z2 + 7283 z3 + 2262, -c2 z1^2 - 2530 z2^2 + 1723 z2 z3 + 4503 z3^2 + 8292 z2 - 2427 z3 - 6786, -4768533231988164 e z1^2 z2 + 1395710341779459 e z1^2 z3 + 7804936447725924 e z1^2 + 10168622 z2^2 + 35018725 z2 z3 - 90132522 z3^2 + 34575450 z2 - 177983208 z3 - 87865128, -1282940430821028 e z1^2 z2 + 375506081235243 e z1^2 z3 + 2099863425844548 e z1^2 - 29577448 z2^2 + 60864210 z2 z3 - 17290967 z3^2 + 100306128 z2 - 103204530 z3 - 85042152]

> delta := jacgA[2,1];

delta := -13572 z1 + 8292 z2 - 2427 z3

> Gs := FGb:-fgb_gbasis_elim([op(G), l*numer(subs(tau,delta))*vars[1]-1], 0, [l], [op(vars),e,c1,c2]);

Gs := [403969200263580509 c1 z1^2 + 1044818848977173056204 z2 z3 - 1794362805852101553046 z3^2 + 1830017835268849972894 z2 - 4914506069705622744403 z3 - 3103073720673267345342, 403969200263580509 c2 z1^2 + 931051497721197805468 z2 z3 - 1598979746086404926782 z3^2 - 471333760157303284698 z2 - 769274994996227594247 z3 + 799218115049340352314, 18582583212124703414 z2^2 - 29583462359551764045 z2 z3 - 4001701140009056459 z3^2 - 52334160880514659926 z2 + 31812877164289772538 z3 + 35311215962533036032, 8176437585622633221548461809889965722 c1 z2 + 1150537363526390647236384103544143154 c2 z3 - 8643895990208446603487232624758739129 c1 + 2015185596486588504268924048683727469 c2, 20240249950460821858 c1 z3 - 22713453238634196874 c2 z3 - 10246386090376158363 c1 - 39782996418888042889 c2, 403969200263580509 c2 z2 + 50654444810241221 c2 z3 - 452707896955551744 c2, 2300766985693514249382527539200 e - 10120124975230410929 c1 + 11356726619317098437 c2]

> V := FGb:-fgb_gbasis_elim([op(Gs), vars[1], e], 0, [op(vars),e], [c]);

V := [c1, c2]

This concludes the case j=1. The computation is complete once we also consider the case j = 2:


> dgA := jacgA[2..2,1..3];

dgA := [-13572 z1 + 8292 z2 - 2427 z3, 8292 z1 - 5060 z2 + 1723 z3, -2427 z1 + 1723 z2 + 9006 z3]

> B := LinearAlgebra:-NullSpace(jacgA[1..1,1..3]);

B := [[-(7283 z1 + 1954 z2 + 10112 z3)/(4524 z1 + 3502 z2 + 7283 z3), 0, 1],[-(3502 z1 - 5704 z2 + 1954 z3)/(4524 z1 + 3502 z2 + 7283 z3), 1, 0]]

> v1 := add(B[1][i]*dgA[i]*vars[1], i=1..3);

- ((7283 z1 + 1954 z2 + 10112 z3) z1 (-13572 z1 + 8292 z2 - 2427 z3))/(4524 z1 + 3502 z2 + 7283 z3) + z1 (-2427 z1 + 1723 z2 + 9006 z3)

> v2 := add(B[2][i]*dgA[i]*vars[1], i=1..3);

- ((3502 z1 - 5704 z2 + 1954 z3) z1 (-13572 z1 + 8292 z2 - 2427 z3))/(4524 z1 + 3502 z2 + 7283 z3) + z1 (8292 z1 - 5060 z2 + 1723 z3)

> G := numer(subs(tau, [gA[1] - c1, gA[2] - c2, rand()*e - v1, rand()*e - v2]));

G := [-c1 z1^2 - 2852 z2^2 + 1954 z2 z3 + 5056 z3^2 + 3502 z2 + 7283 z3 + 2262, -c2 z1^2 - 2530 z2^2 + 1723 z2 z3 + 4503 z3^2 + 8292 z2 - 2427 z3 - 6786, 1276547953830186 e z1^2 z2 + 2654796901126569 e z1^2 z3 + 1649087076849732 e z1^2 + 10168622 z2^2 + 35018725 z2 z3 - 90132522 z3^2 + 34575450 z2 - 177983208 z3 - 87865128, 3221690396468590 e z1^2 z2 + 6700048874209235 e z1^2 z3 + 4161886737185580 e z1^2 - 29577448 z2^2 + 60864210 z2 z3 - 17290967 z3^2 + 100306128 z2 - 103204530 z3 - 85042152]

> delta := jacgA[1,1];

delta := 4524 z1 + 3502 z2 + 7283 z3

> Gs := FGb:-fgb_gbasis_elim([op(G), l*numer(subs(tau,delta))*vars[1]-1], 0, [l], [op(vars),e,c1,c2]);

Gs := [437744782898206949 c1 z1^2 - 1477184045962763516236 z2 z3 + 2536903035457789517014 z3^2 - 1238133683547377200850 z2 + 4631150360550833763773 z3 + 2099444072102074384050, 39794980263473359 c2 z1^2 - 118714391331034528032 z2 z3 + 203879063372863645968 z3^2 - 306201867783257904558 z2 + 727166740841262340143 z3 + 519211862762915577294, 20136260013317519654 z2^2 + 10029528067413986095 z2 z3 - 76615171899856836309 z3^2 - 4755621712292637654 z2 - 126116864748362499570 z3 - 49832625338997072624, 4142265652616386927713726928072859696 c1 z2 + 10381096093300600685668981663442993562 c2 z3 - 17625037786622367513769293878571157539 c1 + 8701139699136419945805862008948547575 c2, 28388224013943039312 c1 z3 - 32112696651364424266 c2 z3 + 73222185774257325003 c1 - 26915949642334286975 c2, 437744782898206949 c2 z2 + 969812302529833371 c2 z3 + 638879812038424008 c2, 482678056344513682544882528865 e + 14194112006971519656 c1 - 16056348325682212133 c2]

> V := FGb:-fgb_gbasis_elim([op(Gs), vars[1], e], 0, [op(vars),e], [c]);

V := [c1, c2]

Thus, our output is the list [c1, c2], implying a possible asymptotic critical values at (0,0).