version 1.6, 2000/12/13 05:37:31 |
version 1.10, 2000/12/15 01:34:31 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/lib/bfct,v 1.5 2000/12/11 02:00:42 noro Exp $ |
* $OpenXM$ |
*/ |
*/ |
/* requires 'primdec' */ |
/* requires 'primdec' */ |
|
|
/* annihilating ideal of F^s */ |
/* annihilating ideal of F^s */ |
|
|
def ann(F) |
def ann(F) |
{ |
{ |
V = vars(F); |
V = vars(F); |
W = append([y1,y2,t],V); |
|
N = length(V); |
N = length(V); |
B = [1-y1*y2,t-y1*F]; |
D = newvect(N); |
|
|
|
for ( I = 0; I < N; I++ ) |
|
D[I] = [deg(F,V[I]),V[I]]; |
|
qsort(D,compare_first); |
|
for ( V = [], I = N-1; I >= 0; I-- ) |
|
V = cons(D[I][1],V); |
|
|
for ( I = N-1, DV = []; I >= 0; I-- ) |
for ( I = N-1, DV = []; I >= 0; I-- ) |
DV = cons(strtov("d"+rtostr(V[I])),DV); |
DV = cons(strtov("d"+rtostr(V[I])),DV); |
|
|
|
W = append([y1,y2,t],V); |
DW = append([dy1,dy2,dt],DV); |
DW = append([dy1,dy2,dt],DV); |
|
|
|
B = [1-y1*y2,t-y1*F]; |
for ( I = 0; I < N; I++ ) { |
for ( I = 0; I < N; I++ ) { |
B = cons(DV[I]+y1*diff(F,V[I])*dt,B); |
B = cons(DV[I]+y1*diff(F,V[I])*dt,B); |
} |
} |
|
|
|
/* homogenized (heuristics) */ |
dp_nelim(2); |
dp_nelim(2); |
G0 = dp_weyl_gr_main(B,append(W,DW),0,0,6); |
G0 = dp_weyl_gr_main(B,append(W,DW),1,0,6); |
G1 = []; |
G1 = []; |
for ( T = G0; T != []; T = cdr(T) ) { |
for ( T = G0; T != []; T = cdr(T) ) { |
E = car(T); VL = vars(E); |
E = car(T); VL = vars(E); |
|
|
return G4; |
return G4; |
} |
} |
|
|
def indicial1(F) |
/* |
|
* compute J_f|s=r, where r = the minimal integral root of global b_f(s) |
|
* ann0(F) returns [MinRoot,Ideal] |
|
*/ |
|
|
|
def ann0(F) |
{ |
{ |
V = vars(F); |
V = vars(F); |
|
N = length(V); |
|
D = newvect(N); |
|
|
|
for ( I = 0; I < N; I++ ) |
|
D[I] = [deg(F,V[I]),V[I]]; |
|
qsort(D,compare_first); |
|
for ( V = [], I = 0; I < N; I++ ) |
|
V = cons(D[I][1],V); |
|
|
|
for ( I = N-1, DV = []; I >= 0; I-- ) |
|
DV = cons(strtov("d"+rtostr(V[I])),DV); |
|
|
|
/* XXX : heuristics */ |
|
W = append([y1,y2,t],reverse(V)); |
|
DW = append([dy1,dy2,dt],reverse(DV)); |
|
WDW = append(W,DW); |
|
|
|
B = [1-y1*y2,t-y1*F]; |
|
for ( I = 0; I < N; I++ ) { |
|
B = cons(DV[I]+y1*diff(F,V[I])*dt,B); |
|
} |
|
|
|
/* homogenized (heuristics) */ |
|
dp_nelim(2); |
|
G0 = dp_weyl_gr_main(B,WDW,1,0,6); |
|
G1 = []; |
|
for ( T = G0; T != []; T = cdr(T) ) { |
|
E = car(T); VL = vars(E); |
|
if ( !member(y1,VL) && !member(y2,VL) ) |
|
G1 = cons(E,G1); |
|
} |
|
G2 = map(subst,G1,dt,1); |
|
G3 = map(b_subst,G2,t); |
|
G4 = map(subst,G3,t,-1-s); |
|
|
|
/* G4 = J_f(s) */ |
|
|
|
V1 = cons(s,V); DV1 = cons(ds,DV); V1DV1 = append(V1,DV1); |
|
G5 = dp_weyl_gr_main(cons(F,G4),V1DV1,0,1,0); |
|
Bf = weyl_minipoly(G5,V1DV1,0,s); |
|
|
|
FList = cdr(fctr(Bf)); |
|
for ( T = FList, Min = 0; T != []; T = cdr(T) ) { |
|
LF = car(car(T)); |
|
Root = -coef(LF,0)/coef(LF,1); |
|
if ( dn(Root) == 1 && Root < Min ) |
|
Min = Root; |
|
} |
|
return [Min,map(subst,G4,s,Min)]; |
|
} |
|
|
|
def indicial1(F,V) |
|
{ |
W = append([y1,t],V); |
W = append([y1,t],V); |
N = length(V); |
N = length(V); |
B = [t-y1*F]; |
B = [t-y1*F]; |
|
Line 160 def indicial1(F) |
|
B = cons(DV[I]+y1*diff(F,V[I])*dt,B); |
B = cons(DV[I]+y1*diff(F,V[I])*dt,B); |
} |
} |
dp_nelim(1); |
dp_nelim(1); |
G0 = dp_weyl_gr_main(B,append(W,DW),0,0,6); |
|
|
/* homogenized (heuristics) */ |
|
G0 = dp_weyl_gr_main(B,append(W,DW),1,0,6); |
G1 = map(subst,G0,y1,1); |
G1 = map(subst,G0,y1,1); |
Mat = newmat(2,2,[[-1,1],[0,1]]); |
Mat = newmat(2,2,[[-1,1],[0,1]]); |
G2 = map(psi,G1,t,dt); |
G2 = map(psi,G1,t,dt); |
Line 140 def compare_first(A,B) |
|
Line 212 def compare_first(A,B) |
|
|
|
def bfct(F) |
def bfct(F) |
{ |
{ |
G4 = indicial1(F); |
|
V = vars(F); |
V = vars(F); |
N = length(V); |
N = length(V); |
D = newvect(N); |
D = newvect(N); |
|
|
for ( I = 0; I < N; I++ ) |
for ( I = 0; I < N; I++ ) |
D[I] = [deg(F,V[I]),V[I]]; |
D[I] = [deg(F,V[I]),V[I]]; |
qsort(D,compare_first); |
qsort(D,compare_first); |
|
|
for ( I = N-1, DV = []; I >= 0; I-- ) |
for ( I = N-1, DV = []; I >= 0; I-- ) |
DV = cons(strtov("d"+rtostr(V[I])),DV); |
DV = cons(strtov("d"+rtostr(V[I])),DV); |
V1 = cons(s,V); DV1 = cons(ds,DV); |
V1 = cons(s,V); DV1 = cons(ds,DV); |
G0 = dp_weyl_gr_main(G4,append(V1,DV1),0,1,0); |
|
Minipoly = weyl_minipoly(G0,append(V1,DV1),0,s); |
G0 = indicial1(F,reverse(V)); |
|
G1 = dp_weyl_gr_main(G0,append(V1,DV1),0,1,0); |
|
Minipoly = weyl_minipoly(G1,append(V1,DV1),0,s); |
return Minipoly; |
return Minipoly; |
} |
} |
|
|
Line 291 def weyl_nf_mod(B,G,PS,Mod) |
|
Line 365 def weyl_nf_mod(B,G,PS,Mod) |
|
|
|
def weyl_hen_ttob(T,NF,LHS,V,MOD) |
def weyl_hen_ttob(T,NF,LHS,V,MOD) |
{ |
{ |
if ( length(T) == 1 ) |
|
return car(T); |
|
T0 = time()[0]; M = etom(weyl_leq_nf(T,NF,LHS,V)); TE = time()[0] - T0; |
T0 = time()[0]; M = etom(weyl_leq_nf(T,NF,LHS,V)); TE = time()[0] - T0; |
T0 = time()[0]; U = henleq(M,MOD); TH = time()[0] - T0; |
T0 = time()[0]; U = henleq(M,MOD); TH = time()[0] - T0; |
if ( dp_gr_print() ) { |
if ( dp_gr_print() ) { |