Changeset f9edcc in git for Singular/LIB
- Timestamp:
- Jan 11, 1999, 2:00:04 PM (25 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- d2fb5627b9860b3fb2b77f2ea8fdb2d2632e2385
- Parents:
- eb84e2280f9f3c5793449b970a73c225493ab039
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/jordan.lib
reb84e2 rf9edcc 1 1 /////////////////////////////////////////////////////////////////////////////// 2 2 3 version="$Id: jordan.lib,v 1. 3 1998-12-28 14:30:54 mschulze Exp $";3 version="$Id: jordan.lib,v 1.4 1999-01-11 13:00:04 mschulze Exp $"; 4 4 info=" 5 5 LIBRARY: jordan.lib PROCEDURES TO COMPUTE THE JORDAN NORMAL FORM … … 7 7 email: mschulze@mathematik.uni-kl.de 8 8 9 jordan : eigenvalues, jordan block sizes and jordan basis 10 jordanmatrix : jordan matrix from eigenvalues and jordan block sizes 11 jordanform : jordan normal form 12 invmat : inverse matrix 9 jordan(M[,opt]); eigenvalues, jordan block sizes and jordan basis of 10 constant part of square matrix M 11 jordanmatrix(eb); jordan matrix with eigenvalues eb[1] and 12 jordan block sizes eb[2] 13 jordanform(M); jordan normal form of constant part of square matrix M 14 invmat(U); inverse matrix of constant part of matrix U 13 15 "; 14 16 … … 17 19 18 20 proc jordan(matrix M,list #) 19 USAGE: <list> ret=jordan(<matrix> M[,<int> opt=0]); 20 INPUT: <matrix> M : square matrix with factorizable characteristic 21 polynomial of the constant part 22 <int> opt : compute ret[2], iff opt<2 23 compute ret[3], iff opt>0 24 OUTPUT: <ideal> ret[1] : eigenvalues of the constant part of M 25 <list<intvec>> ret[2] : jordan block sizes of the constant part of M 26 <module> ret[3] : jordan basis for the constant part of M 21 USAGE: <list> ret=jordan(<matrix> M[,<int> opt=0]); 22 ASSUME: characteristic polynomial of the constant part of M factorizable 23 RETURN: <ideal> ret[1] : eigenvalues of the constant part of M 24 <intvec> ret[2] : jordan block sizes of the constant part of M 25 if opt<2 26 <module> ret[3] : jordan basis for the constant part of M 27 if opt>0 27 28 EXAMPLE: example jordan; shows an example 28 29 { … … 100 101 if(opt>0) 101 102 { 102 module V,K1,K2 ,sNi;103 module V,K1,K2; 103 104 matrix v[n][1]; 104 105 } … … 176 177 "EXAMPLE:"; 177 178 echo=2; 178 LIB "random.lib"; 179 ring r; 180 list eb=ideal(2,3),list(intvec(1,1,2,2,2),intvec(3,4,5)); 181 matrix J=jordanmatrix(eb); 182 print(J); 183 int n=nrows(J); 184 matrix U; 185 while(det(U)==0) 186 { 187 U=randommat(n,n,ideal(1)); 188 } 189 matrix invU=invmat(U); 190 matrix M=invU*J*U; 179 ring R=0,x,dp; 180 matrix M[3][3]=3,2,1,0,2,1,0,0,3; 191 181 print(M); 192 182 jordan(M); … … 195 185 196 186 proc jordanmatrix(list eb) 197 USAGE: <matrix> J=jordanmatrix(<list> eb); 198 INPUT: <ideal> eb[1] : eigenvalues 199 <list<intvec>> eb[2] : jordan block sizes 200 OUTPUT: <matrix> J : jordan matrix defined by eb 187 USAGE: <matrix> J=jordanmatrix(<list<ideal,list<intvec>> eb); 188 RETURN: <matrix> J : jordan matrix with eigenvalues eb[1] and 189 jordan block sizes eb[2] 201 190 EXAMPLE: example jordanmatrix; shows an example 202 191 { … … 217 206 return(); 218 207 } 219 int s=size(eJ);220 208 if(size(eJ)<size(bJ)) 221 209 { … … 249 237 matrix J[n][n]; 250 238 251 int k,l;239 int l; 252 240 for(i,l=1,1;i<=s;i++) 253 241 { … … 275 263 "EXAMPLE:"; 276 264 echo=2; 277 ring r; 278 list eb=ideal(2,3),list(intvec(1,1,2,2,2),intvec(3,4,5)); 279 eb; 280 matrix J=jordanmatrix(eb); 281 print(J); 265 ring R=0,x,dp; 266 print(jordanmatrix(list(ideal(2,3),list(intvec(1),intvec(2))))); 282 267 } 283 268 /////////////////////////////////////////////////////////////////////////////// 284 269 285 270 proc jordanform(matrix M) 286 USAGE: <matrix J> jordanform(<matrix M>); 287 INPUT: <matrix> M : square matrix with factorizable characteristic 288 polynomial of the constant part 289 OUTPUT: <matrix J> : jordan normal form of M 271 USAGE: <matrix> J=jordanform(<matrix> M); 272 ASSUME: characteristic polynomial of the constant part of M factorizable 273 RETURN: <matrix> J : jordan normal form of the constant part of M 290 274 EXAMPLE: example jordanform; shows an example 291 275 { … … 296 280 "EXAMPLE:"; 297 281 echo=2; 298 LIB "random.lib"; 299 ring r; 300 list eb=ideal(2,3),list(intvec(1,1,2,2,2),intvec(3,4,5)); 301 matrix J=jordanmatrix(eb); 302 print(J); 303 int n=nrows(J); 304 matrix U; 305 while(det(U)==0) 306 { 307 U=randommat(n,n,ideal(1)); 308 } 309 matrix invU=invmat(U); 310 matrix M=invU*J*U; 282 ring R=0,x,dp; 283 matrix M[3][3]=3,2,1,0,2,1,0,0,3; 311 284 print(M); 312 J=jordanform(M); 313 print(J); 285 print(jordanform(M)); 314 286 } 315 287 /////////////////////////////////////////////////////////////////////////////// … … 317 289 proc invmat(matrix U) 318 290 USAGE: <matrix> invU=invmat(<matrix> U); 319 INPUT: <matrix> U : matrix with invertible constant part 320 OUTPUT: <matrix> invU : inverse matrix of constant part of U291 ASSUME: constant part of U invertible 292 RETURN: <matrix> invU : inverse matrix of constant part of U 321 293 EXAMPLE: example invmat; shows an example 322 294 { … … 338 310 "EXAMPLE:"; 339 311 echo=2; 340 LIB "random.lib"; 341 ring r; 342 int n=10; 343 matrix U; 344 while(det(U)==0) 345 { 346 U=randommat(n,n,ideal(1)); 347 } 312 ring R=0,x,dp; 313 matrix U[3][3]=3,2,1,0,2,1,0,0,3; 348 314 print(U); 349 matrix invU=invmat(U); 350 print(invU*U); 351 } 352 /////////////////////////////////////////////////////////////////////////////// 315 print(invmat(U)); 316 } 317 ///////////////////////////////////////////////////////////////////////////////
Note: See TracChangeset
for help on using the changeset viewer.