Changeset c87dbd in git
- Timestamp:
- Apr 20, 2007, 2:21:12 PM (16 years ago)
- Branches:
- (u'spielwiese', '828514cf6e480e4bafc26df99217bf2a1ed1ef45')
- Children:
- 5411c83f97258af47096ddd35e1e76f1d12b9d3c
- Parents:
- adde988366fe79ac130279c9a15ff9741ba9b061
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/alexpoly.lib
radde988 rc87dbd 1 version="$Id: alexpoly.lib,v 1.1 5 2007-04-19 15:10:38Singular Exp $";1 version="$Id: alexpoly.lib,v 1.16 2007-04-20 12:21:12 Singular Exp $"; 2 2 category="Singularities"; 3 3 info=" … … 117 117 /// separated on the first exceptional divisor. Otherwise split_graph should not be applied! 118 118 /////////////////////////////////////////////////////////////////////////////////////////////// 119 /// If #[1]="tau", then totalmultiplicities is called for the use in tau_es - thus it returns119 /// If #[1]="tau", then totalmultiplicities is called for the use in tau_es2 - thus it returns 120 120 /// the prolonged resolutiongraphs of the branches, their multiplicity sequences and their 121 121 /// contact matrix - sorted appropriately. … … 279 279 } 280 280 /////////////////////////////////////////////////////////////////////////////// 281 // Check, if the procedure is called from inside tau_es .281 // Check, if the procedure is called from inside tau_es2. 282 282 int check_tau; 283 283 if (size(#)==1) … … 289 289 } 290 290 ///////////////////////////////////////////////////////////////////////////////// 291 // The procedure tau_es expects the branches to be ordered according to their291 // The procedure tau_es2 expects the branches to be ordered according to their 292 292 // contact during the resolution process. 293 293 ///////////////////////////////////////////////////////////////////////////////// … … 305 305 } 306 306 /////////////////////////////////////////////////////////////////////////////////// 307 /// If the procedure is called from inside tau_es , the output will be the prolonged307 /// If the procedure is called from inside tau_es2, the output will be the prolonged 308 308 /// resolutiongraphs of the branches, their multiplicity sequences and their contact matrix. 309 309 if (check_tau==1) … … 2123 2123 "USAGE: delete_row(M,i); M intmat, i int 2124 2124 RETURN: intmat, which is derived from M by removing the ith row 2125 NOTE: This procedure is only for internal use; it is called in move_row and tau_es .2125 NOTE: This procedure is only for internal use; it is called in move_row and tau_es2. 2126 2126 " 2127 2127 { … … 2185 2185 "USAGE: find_last_non_one (v,k); intvec v, int k 2186 2186 RETURN: int i, the last index i>=k such that v[i]!=1, or k-1 if no such i exists. 2187 NOTE: This procedure is only for internal use; it is called in tau_es .2187 NOTE: This procedure is only for internal use; it is called in tau_es2. 2188 2188 " 2189 2189 { … … 2206 2206 "USAGE: intmat_minus_one(M); intmat M 2207 2207 RETURN: intmat, all non-zero entries of M deminuished by 1. 2208 NOTE: This procedure is only for internal use; it is called in tau_es .2208 NOTE: This procedure is only for internal use; it is called in tau_es2. 2209 2209 " 2210 2210 { … … 2228 2228 or the output of @code{hnexpansion(f[,\"ess\"])}, or the list @code{hne} in 2229 2229 the ring created by @code{hnexpansion(f[,\"ess\"])}, or the output of 2230 @code{develop(f)} resp. of @code{extdevelop(f,n)}, or a list containing 2231 the contact matrix and a list of integer vectors with the characteristic exponents 2230 @code{develop(f)} resp. of @code{extdevelop(f,n)}, or a list containing 2231 the contact matrix and a list of integer vectors with the characteristic exponents 2232 2232 of the branches of a plane curve singularity, or an integer vector containing the 2233 characteristic exponents of an irreducible plane curve singularity, or the resolution 2233 characteristic exponents of an irreducible plane curve singularity, or the resolution 2234 2234 graph of a plane curve singularity (i.e. the output of resolutiongraph or 2235 2235 the first entry in the output of totalmultiplicities). 2236 RETURN: list, of three integer matrices. The first one is the proximity matrix of 2237 the plane curve defined by the INPUT, i.e. the entry i,j is 1 if the 2238 infinitely near point corresponding to row i is proximate to the infinitely 2239 near point corresponding to row j. The second integer matrix is the incidence matrix of the 2240 resolution graph of the plane curve. The entry on the diagonal in row i is -s-1 2241 if s is the number of points proximate to the infinitely near point corresponding 2242 to the ith row in the matrix. The third integer matrix is the incidence matrix of 2243 the Enriques diagram of the plane curve singularity, i.e. each row corresponds to 2236 RETURN: list, of three integer matrices. The first one is the proximity matrix of 2237 the plane curve defined by the INPUT, i.e. the entry i,j is 1 if the 2238 infinitely near point corresponding to row i is proximate to the infinitely 2239 near point corresponding to row j. The second integer matrix is the incidence matrix of the 2240 resolution graph of the plane curve. The entry on the diagonal in row i is -s-1 2241 if s is the number of points proximate to the infinitely near point corresponding 2242 to the ith row in the matrix. The third integer matrix is the incidence matrix of 2243 the Enriques diagram of the plane curve singularity, i.e. each row corresponds to 2244 2244 an infinitely near point in the minimal standard resolution, including the 2245 2245 strict transforms of the branches, the diagonal element gives … … 2248 2248 for other purposes as well it is better to calculate this first 2249 2249 with the aid of @code{hnexpansion} and use it as input instead of 2250 the polynomial itself. 2250 the polynomial itself. 2251 2251 @* 2252 If you are not sure whether the INPUT polynomial is reduced or not, use 2252 If you are not sure whether the INPUT polynomial is reduced or not, use 2253 2253 @code{squarefree(INPUT)} as input instead. 2254 2254 @* 2255 If the input is a smooth curve, then the output will consist of 2255 If the input is a smooth curve, then the output will consist of 2256 2256 three one-by-one zero matrices. 2257 2257 @* 2258 For the definitions of the computed objects see e.g. the book 2259 Eduardo Casas-Alvero, Singularities of Plane Curves. 2258 For the definitions of the computed objects see e.g. the book 2259 Eduardo Casas-Alvero, Singularities of Plane Curves. 2260 2260 SEE ALSO: develop, hnexpansion, totalmultiplicities, alexanderpolynomial 2261 2261 EXAMPLE: example proximitymatrix; shows an example … … 2267 2267 intmat resgr=INPUT; 2268 2268 } 2269 else 2269 else 2270 2270 { 2271 2271 intmat resgr=totalmultiplicities(INPUT)[1]; … … 2278 2278 //////// Calculate the proximity resolution graph //////////// 2279 2279 int i,j; 2280 int n=nrows(resgr); 2280 int n=nrows(resgr); 2281 2281 intvec diag; // Diagonal of the Enriques diagram. 2282 2282 int si; // number of points proximate to the point corresponding to the ith row … … 2295 2295 resgr[i,i]=resgr[j,j]+1; 2296 2296 } 2297 } 2297 } 2298 2298 // Set the weights in the resolution graph to the blowing up level in the resolution. 2299 2299 for (i=1;i<=n;i++) … … 2301 2301 resgr[i,i]=resgr[i,i]-1; 2302 2302 diag[i]=resgr[i,i]; // The level of the corresponding infinitely near point. 2303 } 2304 // Replace the weights in the resolution graph by 2303 } 2304 // Replace the weights in the resolution graph by 2305 2305 // -s-1, where s is the number of points which are proximate to the point. 2306 2306 for (i=1;i<=n;i++) 2307 2307 { 2308 si=-1; 2308 si=-1; 2309 2309 // Find the points of higher weight which are connected to the ith row. 2310 2310 for (j=i+1;j<=n;j++) … … 2367 2367 " 2368 2368 { 2369 for (int k=1;k<=ncols(M);k++) 2370 { 2371 M[j,k]=kj*M[j,k]+ki*M[i,k]; 2372 } 2369 int k=ncols(M); 2370 M[j,1..k]=kj*M[j,1..k]+ki*M[i,1..k]; 2373 2371 return(M); 2374 2372 } … … 2393 2391 { 2394 2392 if (M[n,n]<0) 2395 { 2393 { 2396 2394 M=addmultiplrows(M,n,n,-1,0); 2397 2395 } … … 2415 2413 RETURN: list, the first entry is an integer matrix containing the total 2416 2414 multiplicities and the second entry is an integer matrix containing 2417 the multiplicies of the resolution given by rg, where the zeros 2415 the multiplicies of the resolution given by rg, where the zeros 2418 2416 corresponding to the strict transforms of the branches of the curve 2419 2417 have been replaced by the (total) multiplicities of the infinitely near … … 2462 2460 2463 2461 proc intmat_inverse (intmat M) 2464 "USAGE: intmat_inverse(M); intmat M 2462 "USAGE: intmat_inverse(M); intmat M 2465 2463 ASSUME: M is a lower triangular integer matrix with diagonal entries 1 or -1 2466 2464 RETURN: intmat, the inverse of M … … 2472 2470 int n=nrows(M); 2473 2471 intmat U[n][n]; 2472 U=U+1; 2474 2473 for (i=1;i<=n;i++) 2475 2474 { 2476 U[i,i]=1;2477 }2478 for (i=1;i<=n;i++)2479 {2480 2475 if (M[i,i]==-1) 2481 { 2476 { 2482 2477 M=addmultiplrows(M,i,i,-1,0); 2483 2478 U=addmultiplrows(U,i,i,-1,0); 2484 2479 } 2485 2480 for (j=i+1;j<=n;j++) 2486 { 2481 { 2487 2482 U=addmultiplrows(U,i,j,-M[j,i],M[i,i]); 2488 2483 M=addmultiplrows(M,i,j,-M[j,i],M[i,i]); 2489 } 2484 } 2490 2485 } 2491 2486 return(U);
Note: See TracChangeset
for help on using the changeset viewer.