Changeset 76b4bd in git for Singular/eigenval_ip.cc
- Timestamp:
- Mar 4, 2004, 11:08:24 AM (20 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- cec18c94b438d2504bc3c731cea94331af31cd83
- Parents:
- c4097df6269597fe0c7c72d02451429687a8b584
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
Singular/eigenval_ip.cc
rc4097d r76b4bd 2 2 * Computer Algebra System SINGULAR * 3 3 *****************************************/ 4 /* $Id: eigenval .cc,v 1.13 2002-05-31 09:00:12Singular Exp $ */4 /* $Id: eigenval_ip.cc,v 1.1 2004-03-04 10:06:50 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: eigenvalues of constant square matrices … … 22 22 #include "clapsing.h" 23 23 #include "eigenval.h" 24 25 26 matrix evSwap(matrix M,int i,int j) 27 { 28 if(i==j) 29 return(M); 30 31 for(int k=1;k<=MATROWS(M);k++) 32 { 33 poly p=MATELEM(M,i,k); 34 MATELEM(M,i,k)=MATELEM(M,j,k); 35 MATELEM(M,j,k)=p; 36 } 37 38 for(int k=1;k<=MATCOLS(M);k++) 39 { 40 poly p=MATELEM(M,k,i); 41 MATELEM(M,k,i)=MATELEM(M,k,j); 42 MATELEM(M,k,j)=p; 43 } 44 45 return(M); 46 } 24 #include "eigenval_ip.h" 47 25 48 26 … … 74 52 return TRUE; 75 53 } 76 77 78 matrix evRowElim(matrix M,int i,int j,int k)79 {80 if(MATELEM(M,i,k)==NULL||MATELEM(M,j,k)==NULL)81 return(M);82 83 poly p=pNSet(nDiv(pGetCoeff(MATELEM(M,i,k)),pGetCoeff(MATELEM(M,j,k))));84 pNormalize(p);85 86 for(int l=1;l<=MATCOLS(M);l++)87 {88 MATELEM(M,i,l)=pSub(MATELEM(M,i,l),ppMult_qq(p,MATELEM(M,j,l)));89 pNormalize(MATELEM(M,i,l));90 }91 for(int l=1;l<=MATROWS(M);l++)92 {93 MATELEM(M,l,j)=pAdd(MATELEM(M,l,j),ppMult_qq(p,MATELEM(M,l,i)));94 pNormalize(MATELEM(M,l,j));95 }96 97 pDelete(&p);98 99 return(M);100 }101 102 54 103 55 BOOLEAN evRowElim(leftv res,leftv h) … … 134 86 } 135 87 136 137 matrix evColElim(matrix M,int i,int j,int k)138 {139 if(MATELEM(M,k,i)==0||MATELEM(M,k,j)==0)140 return(M);141 142 poly p=pNSet(nDiv(pGetCoeff(MATELEM(M,k,i)),pGetCoeff(MATELEM(M,k,j))));143 pNormalize(p);144 145 for(int l=1;l<=MATROWS(M);l++)146 {147 MATELEM(M,l,i)=pSub(MATELEM(M,l,i),ppMult_qq(p,MATELEM(M,l,j)));148 pNormalize(MATELEM(M,l,i));149 }150 for(int l=1;l<=MATCOLS(M);l++)151 {152 MATELEM(M,j,l)=pAdd(MATELEM(M,j,l),ppMult_qq(p,MATELEM(M,i,l)));153 pNormalize(MATELEM(M,j,l));154 }155 156 pDelete(&p);157 158 return(M);159 }160 161 162 88 BOOLEAN evColElim(leftv res,leftv h) 163 89 { … … 192 118 return TRUE; 193 119 } 194 195 196 matrix evHessenberg(matrix M)197 {198 int n=MATROWS(M);199 if(n!=MATCOLS(M))200 return(M);201 202 for(int k=1,j=2;k<n-1;k++,j=k+1)203 {204 while(j<=n&&MATELEM(M,j,k)==0)205 j++;206 207 if(j<=n)208 {209 M=evSwap(M,j,k+1);210 211 for(int i=j+1;i<=n;i++)212 M=evRowElim(M,i,k+1,k);213 }214 }215 216 return(M);217 }218 219 120 220 121 BOOLEAN evHessenberg(leftv res,leftv h)
Note: See TracChangeset
for help on using the changeset viewer.