trsna(3)
π NAME
trsna β trsna: eig condition numbers (yes bestie, that's the whole name, it's giving minimalist icon behavior β¨)
π¦ SYNOPSIS
Functions
subroutine ctrsna (job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr,
s, sep, mm, m, work, ldwork, rwork, info)
CTRSNA
subroutine dtrsna (job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr,
s, sep, mm, m, work, ldwork, iwork, info)
DTRSNA
subroutine strsna (job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr,
s, sep, mm, m, work, ldwork, iwork, info)
STRSNA
subroutine ztrsna (job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr,
s, sep, mm, m, work, ldwork, rwork, info)
ZTRSNA
πΈ Detailed Description
Okay so this is the LAPACK girlie page for the *TRSNA family β four flavors, one per precision/type combo, and they all do the same job: reciprocal condition numbers for eigenvalues and/or right eigenvectors of a triangular (or quasi-triangular) matrix. Each one gets its own deep dive below. π
π Function Documentation
subroutine ctrsna β the complex one, our main character π
subroutine ctrsna (character job, character howmny, logical, dimension( * )
select, integer n, complex, dimension( ldt, * ) t, integer ldt, complex,
dimension( ldvl, * ) vl, integer ldvl, complex, dimension( ldvr, * ) vr,
integer ldvr, real, dimension( * ) s, real, dimension( * ) sep, integer
mm, integer m, complex, dimension( ldwork, * ) work, integer ldwork,
real, dimension( * ) rwork, integer info)
CTRSNA
β¨ Purpose
So like β CTRSNA estimates reciprocal condition numbers for specified eigenvalues and/or right eigenvectors of a complex upper triangular matrix T (or of any matrix Q*T*Q**H with Q unitary). That's it, that's the whole vibe. π«Ά
π₯ Parameters
JOBβJOBisCHARACTER*1. It specifies whether condition numbers are required for eigenvalues (S) or eigenvectors (SEP):= 'E': for eigenvalues only (S);= 'V': for eigenvectors only (SEP);= 'B': for both eigenvalues and eigenvectors (SandSEP).
HOWMNYβHOWMNYisCHARACTER*1.= 'A': compute condition numbers for all eigenpairs;= 'S': compute condition numbers for selected eigenpairs specified by the arraySELECT.
SELECTβSELECTisLOGICALarray, dimension(N). IfHOWMNY = 'S',SELECTspecifies the eigenpairs for which condition numbers are required. To select condition numbers for the j-th eigenpair,SELECT(j)must be set to.TRUE.. IfHOWMNY = 'A',SELECTis not referenced. (She said "not referenced," periodt. π)NβNisINTEGER. The order of the matrixT.N >= 0.TβTisCOMPLEXarray, dimension(LDT,N). The upper triangular matrixT.LDTβLDTisINTEGER. The leading dimension of the arrayT.LDT >= max(1,N).VLβVLisCOMPLEXarray, dimension(LDVL,M). IfJOB = 'E'or'B',VLmust contain left eigenvectors ofT(or of anyQ*T*Q**HwithQunitary), corresponding to the eigenpairs specified byHOWMNYandSELECT. The eigenvectors must be stored in consecutive columns ofVL, as returned byCHSEINorCTREVC. IfJOB = 'V',VLis not referenced.LDVLβLDVLisINTEGER. The leading dimension of the arrayVL.LDVL >= 1; and ifJOB = 'E'or'B',LDVL >= N.VRβVRisCOMPLEXarray, dimension(LDVR,M). IfJOB = 'E'or'B',VRmust contain right eigenvectors ofT(or of anyQ*T*Q**HwithQunitary), corresponding to the eigenpairs specified byHOWMNYandSELECT. The eigenvectors must be stored in consecutive columns ofVR, as returned byCHSEINorCTREVC. IfJOB = 'V',VRis not referenced.LDVRβLDVRisINTEGER. The leading dimension of the arrayVR.LDVR >= 1; and ifJOB = 'E'or'B',LDVR >= N.SβSisREALarray, dimension(MM). IfJOB = 'E'or'B', the reciprocal condition numbers of the selected eigenvalues, stored in consecutive elements of the array. ThusS(j),SEP(j), and the j-th columns ofVLandVRall correspond to the same eigenpair (but not in general the j-th eigenpair, unless all eigenpairs are selected). IfJOB = 'V',Sis not referenced.SEPβSEPisREALarray, dimension(MM). IfJOB = 'V'or'B', the estimated reciprocal condition numbers of the selected eigenvectors, stored in consecutive elements of the array. IfJOB = 'E',SEPis not referenced.MMβMMisINTEGER. The number of elements in the arraysS(ifJOB = 'E'or'B') and/orSEP(ifJOB = 'V'or'B').MM >= M.MβMisINTEGER. The number of elements of the arraysSand/orSEPactually used to store the estimated condition numbers. IfHOWMNY = 'A',Mis set toN.WORKβWORKisCOMPLEXarray, dimension(LDWORK,N+6). IfJOB = 'E',WORKis not referenced.LDWORKβLDWORKisINTEGER. The leading dimension of the arrayWORK.LDWORK >= 1; and ifJOB = 'V'or'B',LDWORK >= N.RWORKβRWORKisREALarray, dimension(N). IfJOB = 'E',RWORKis not referenced.INFOβINFOisINTEGER.= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π§ Further Details
The reciprocal of the condition number of an eigenvalue lambda is defined as
S(lambda) = |v**H*u| / (norm(u)*norm(v))
where u and v are the right and left eigenvectors of T corresponding to lambda; v**H denotes the conjugate transpose of v, and norm(u) denotes the Euclidean norm. These reciprocal condition numbers always lie between zero (very badly conditioned) and one (very well conditioned). If n = 1, S(lambda) is defined to be 1. (Yeah, defined to be 1, we don't argue with her π)
An approximate error bound for a computed eigenvalue W(i) is given by
EPS * norm(T) / S(i)
where EPS is the machine precision.
The reciprocal of the condition number of the right eigenvector u corresponding to lambda is defined as follows. Suppose
T = ( lambda c )
( 0 T22 )
Then the reciprocal condition number is
SEP( lambda, T22 ) = sigma-min( T22 - lambda*I )
where sigma-min denotes the smallest singular value. We approximate the smallest singular value by the reciprocal of an estimate of the one-norm of the inverse of T22 - lambda*I. If n = 1, SEP(1) is defined to be abs(T(1,1)).
An approximate error bound for a computed right eigenvector VR(i) is given by
EPS * norm(T) / SEP(i)
π Definition at line 246 of file ctrsna.f.
subroutine dtrsna β the double precision real one, she's giving classic π
subroutine dtrsna (character job, character howmny, logical, dimension( * )
select, integer n, double precision, dimension( ldt, * ) t, integer ldt,
double precision, dimension( ldvl, * ) vl, integer ldvl, double
precision, dimension( ldvr, * ) vr, integer ldvr, double precision,
dimension( * ) s, double precision, dimension( * ) sep, integer mm,
integer m, double precision, dimension( ldwork, * ) work, integer
ldwork, integer, dimension( * ) iwork, integer info)
DTRSNA
β¨ Purpose
DTRSNA estimates reciprocal condition numbers for specified eigenvalues and/or right eigenvectors of a real upper quasi-triangular matrix T (or of any matrix Q*T*Q**T with Q orthogonal).
T must be in Schur canonical form (as returned by DHSEQR), that is, block upper triangular with 1-by-1 and 2-by-2 diagonal blocks; each 2-by-2 diagonal block has its diagonal elements equal and its off-diagonal elements of opposite sign. No cap, that's just the assignment. π¦
π₯ Parameters
JOBβJOBisCHARACTER*1. It specifies whether condition numbers are required for eigenvalues (S) or eigenvectors (SEP):= 'E': for eigenvalues only (S);= 'V': for eigenvectors only (SEP);= 'B': for both eigenvalues and eigenvectors (SandSEP).
HOWMNYβHOWMNYisCHARACTER*1.= 'A': compute condition numbers for all eigenpairs;= 'S': compute condition numbers for selected eigenpairs specified by the arraySELECT.
SELECTβSELECTisLOGICALarray, dimension(N). IfHOWMNY = 'S',SELECTspecifies the eigenpairs for which condition numbers are required. To select condition numbers for the eigenpair corresponding to a real eigenvaluew(j),SELECT(j)must be set to.TRUE.. To select condition numbers corresponding to a complex conjugate pair of eigenvaluesw(j)andw(j+1), eitherSELECT(j)orSELECT(j+1)or both, must be set to.TRUE.. IfHOWMNY = 'A',SELECTis not referenced.NβNisINTEGER. The order of the matrixT.N >= 0.TβTisDOUBLE PRECISIONarray, dimension(LDT,N). The upper quasi-triangular matrixT, in Schur canonical form.LDTβLDTisINTEGER. The leading dimension of the arrayT.LDT >= max(1,N).VLβ
π¦ and that's exactly where this part of the page cuts off β VL keeps going in part 2, bestie, don't go anywhere π
VLβ okay soVLis aDOUBLE PRECISIONarray, dimension(LDVL,M). IfJOB = 'E'or'B',VLmust contain left eigenvectors ofT(or of anyQ*T*Q**TwithQorthogonal), corresponding to the eigenpairs specified byHOWMNYandSELECT. The eigenvectors must be stored in consecutive columns ofVL, as returned byDHSEINorDTREVC. IfJOB = 'V',VLis not referenced.LDVLβLDVLisINTEGERand itβs the leading dimension of the arrayVL.LDVL >= 1; and ifJOB = 'E'or'B',LDVL >= N.VRβVRis aDOUBLE PRECISIONarray, dimension(LDVR,M). IfJOB = 'E'or'B',VRmust contain right eigenvectors ofT(or of anyQ*T*Q**TwithQorthogonal), corresponding to the eigenpairs specified byHOWMNYandSELECT. The eigenvectors must be stored in consecutive columns ofVR, as returned byDHSEINorDTREVC. IfJOB = 'V',VRis not referenced.LDVRβLDVRisINTEGERand itβs the leading dimension of the arrayVR.LDVR >= 1; and ifJOB = 'E'or'B',LDVR >= N.SβSis aDOUBLE PRECISIONarray, dimension(MM). IfJOB = 'E'or'B', this is where the reciprocal condition numbers of the selected eigenvalues go, stored in consecutive elements of the array. For a complex conjugate pair of eigenvalues, two consecutive elements ofSare set to the same value. SoS(j),SEP(j), and the j-th columns ofVLandVRall correspond to the same eigenpair (but not in general the j-th eigenpair, unless all eigenpairs are selected). IfJOB = 'V',Sis not referenced.SEPβSEPis aDOUBLE PRECISIONarray, dimension(MM). IfJOB = 'V'or'B', this holds the estimated reciprocal condition numbers of the selected eigenvectors, stored in consecutive elements of the array. For a complex eigenvector, two consecutive elements ofSEPare set to the same value. If the eigenvalues cannot be reordered to computeSEP(j),SEP(j)is set to0; this can only occur when the true value would be very small anyway. IfJOB = 'E',SEPis not referenced.MMβMMisINTEGERand itβs the number of elements in the arraysS(ifJOB = 'E'or'B') and/orSEP(ifJOB = 'V'or'B').MM >= M.MβMisINTEGERand itβs the number of elements of the arraysSand/orSEPactually used to store the estimated condition numbers. IfHOWMNY = 'A',Mis set toN.WORKβWORKis aDOUBLE PRECISIONarray, dimension(LDWORK,N+6). IfJOB = 'E',WORKis not referenced.LDWORKβLDWORKisINTEGERand itβs the leading dimension of the arrayWORK.LDWORK >= 1; and ifJOB = 'V'or'B',LDWORK >= N.IWORKβIWORKis anINTEGERarray, dimension(2*(N-1)). IfJOB = 'E',IWORKis not referenced.INFOβINFOisINTEGER.= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value.
π«Ά Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π₯ Further Details:
okay bestie, this is the condition-number lore: the reciprocal of the condition number of an eigenvalue lambda is defined as
S(lambda) = |v**T*u| / (norm(u)*norm(v))
where u and v are the right and left eigenvectors of T corresponding to lambda; v**T denotes the transpose of v, and norm(u) denotes the Euclidean norm. These reciprocal condition numbers always lie between zero (very badly conditioned) and one (very well conditioned). If n = 1, S(lambda) is defined to be 1.
An approximate error bound for a computed eigenvalue W(i) is given by
EPS * norm(T) / S(i)
where EPS is the machine precision.
The reciprocal of the condition number of the right eigenvector u corresponding to lambda is defined as follows. Suppose
T = ( lambda c )
( 0 T22 )
Then the reciprocal condition number is
SEP( lambda, T22 ) = sigma-min( T22 - lambda*I )
where sigma-min denotes the smallest singular value. We approximate the smallest singular value by the reciprocal of an estimate of the one-norm of the inverse of T22 - lambda*I. If n = 1, SEP(1) is defined to be abs(T(1,1)).
An approximate error bound for a computed right eigenvector VR(i) is given by
EPS * norm(T) / SEP(i)
Definition at line 262 of file dtrsna.f.
π STRSNA
subroutine strsna (character job, character howmny, logical, dimension( * )
select, integer n, real, dimension( ldt, * ) t, integer ldt, real,
dimension( ldvl, * ) vl, integer ldvl, real, dimension( ldvr, * ) vr,
integer ldvr, real, dimension( * ) s, real, dimension( * ) sep, integer
mm, integer m, real, dimension( ldwork, * ) work, integer ldwork,
integer, dimension( * ) iwork, integer info)
STRSNA
π« Purpose:
Bestie, STRSNA estimates reciprocal condition numbers for specified eigenvalues and/or right eigenvectors of a real upper quasi-triangular matrix T (or of any matrix Q*T*Q**T with Q orthogonal).
T must be in Schur canonical form (as returned by SHSEQR), that is, block upper triangular with 1-by-1 and 2-by-2 diagonal blocks; each 2-by-2 diagonal block has its diagonal elements equal and its off-diagonal elements of opposite sign.
π Parameters
JOBβJOBisCHARACTER*1. It specifies whether condition numbers are required for eigenvalues (S) or eigenvectors (SEP):= 'E': for eigenvalues only (S);= 'V': for eigenvectors only (SEP);= 'B': for both eigenvalues and eigenvectors (SandSEP).
HOWMNYβHOWMNYisCHARACTER*1.= 'A': compute condition numbers for all eigenpairs;= 'S': compute condition numbers for selected eigenpairs specified by the arraySELECT.
SELECTβSELECTis aLOGICALarray, dimension(N). IfHOWMNY = 'S',SELECTspecifies the eigenpairs for which condition numbers are required. To select condition numbers for the eigenpair corresponding to a real eigenvaluew(j),SELECT(j)must be set to.TRUE.. To select condition numbers corresponding to a complex conjugate pair of eigenvaluesw(j)andw(j+1), eitherSELECT(j)orSELECT(j+1)or both, must be set to.TRUE.. IfHOWMNY = 'A',SELECTis not referenced.NβNisINTEGER. Itβs the order of the matrixT.N >= 0.TβTis aREALarray, dimension(LDT,N). Itβs the upper quasi-triangular matrixT, in Schur canonical form.LDTβLDTisINTEGERand itβs the leading dimension of the arrayT.LDT >= max(1,N).VLβVLis aREALarray, dimension(LDVL,M). IfJOB = 'E'or'B',VLmust contain left eigenvectors ofT(or of anyQ*T*Q**TwithQorthogonal), corresponding to the eigenpairs specified byHOWMNYandSELECT. The eigenvectors must be stored in consecutive columns ofVL, as returned bySHSEINorSTREVC. IfJOB = 'V',VLis not referenced.LDVLβLDVLisINTEGERand itβs the leading dimension of the arrayVL.LDVL >= 1; and ifJOB = 'E'or'B',LDVL >= N.VRβVRis aREALarray, dimension(LDVR,M). IfJOB = 'E'or'B',VRmust contain right eigenvectors ofT(or of anyQ*T*Q**TwithQorthogonal), corresponding to the eigenpairs specified byHOWMNYandSELECT. The eigenvectors must be stored in consecutive columns ofVR, as returned bySHSEINorSTREVC. IfJOB = 'V',VRis not referenced.LDVRβLDVRisINTEGERand itβs the leading dimension of the arrayVR.LDVR >= 1; and ifJOB = 'E'or'B',LDVR >= N.SβSis aREALarray, dimension(MM). IfJOB = 'E'or'B', these are the reciprocal condition numbers of the selected eigenvalues, stored in consecutive elements of the array. For a complex conjugate pair of eigenvalues, two consecutive elements ofSare set to the same value. SoS(j),SEP(j), and the j-th columns ofVLandVRall correspond to the same eigenpair (but not in general the j-th eigenpair, unless all eigenpairs are selected). IfJOB = 'V',Sis not referenced.SEPβSEPis aREALarray, dimension(MM). IfJOB = 'V'or'B', these are the estimated reciprocal condition numbers of the selected eigenvectors, stored in consecutive elements of the array. For a complex eigenvector, two consecutive elements ofSEPare set to the same value. If the eigenvalues cannot be reordered to computeSEP(j),SEP(j)is set to0; this can only occur when the true value would be very small anyway. IfJOB = 'E',SEPis not referenced.MMMMβINTEGER, and it's the number of slots in the arraysS(only ifJOB = 'E'or'B') and/orSEP(only ifJOB = 'V'or'B'). Rule:MM >= M. That's it, that's the vibe πMβINTEGER, the number of elements ofSand/orSEPthat actually got used to store the estimated condition numbers. And bestie, ifHOWMNY = 'A', thenMis set toN. Slay, it just does it for you β¨WORKβREALarray, dimension(LDWORK,N+6). IfJOB = 'E',WORKis not referenced. Not even a little. It just sits there πLDWORKβINTEGER, the leading dimension of the arrayWORK.LDWORK >= 1; and ifJOB = 'V'or'B',LDWORK >= N. Conditional queen πIWORKβINTEGERarray, dimension(2*(N-1)). IfJOB = 'E',IWORKis not referenced. Same deal, it gets left on read πINFOβINTEGER, the receipts:= 0: successful exit π< 0: ifINFO = -i, thei-th argument had an illegal value. Yeah, that one's on you π«Ά
π Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π¦ Further Details π¦
Okay so, the reciprocal of the condition number of an eigenvalue lambda is defined as
S(lambda) = |v**T*u| / (norm(u)*norm(v))
where u and v are the right and left eigenvectors of T corresponding to lambda; v**T denotes the transpose of v, and norm(u) denotes the Euclidean norm. These reciprocal condition numbers always lie between zero (very badly conditioned) and one (very well conditioned). And if n = 1, S(lambda) is defined to be 1. Tiny matrix, perfect score, love that for it πΈ
An approximate error bound for a computed eigenvalue W(i) is given by
EPS * norm(T) / S(i)
where EPS is the machine precision. iykyk β¨
The reciprocal of the condition number of the right eigenvector u corresponding to lambda is defined as follows. Suppose
T = ( lambda c )
( 0 T22 )
Then the reciprocal condition number is
SEP( lambda, T22 ) = sigma-min( T22 - lambda*I )
where sigma-min denotes the smallest singular value. We approximate the smallest singular value by the reciprocal of an estimate of the one-norm of the inverse of T22 - lambda*I. If n = 1, SEP(1) is defined to be abs(T(1,1)). No cap, that's the whole definition π§
An approximate error bound for a computed right eigenvector VR(i) is given by
EPS * norm(T) / SEP(i)
Definition at line 262 of file strsna.f. Noted, bookmarked, obsessed π
π ZTRSNA π
Here's the complex edition, and she's giving main character energy fr fr:
subroutine ztrsna (character job, character howmny, logical, dimension( * )
select, integer n, complex*16, dimension( ldt, * ) t, integer ldt,
complex*16, dimension( ldvl, * ) vl, integer ldvl, complex*16,
dimension( ldvr, * ) vr, integer ldvr, double precision, dimension( * )
s, double precision, dimension( * ) sep, integer mm, integer m,
complex*16, dimension( ldwork, * ) work, integer ldwork, double
precision, dimension( * ) rwork, integer info)
ZTRSNA
π Purpose π
ZTRSNA estimates reciprocal condition numbers for specified eigenvalues and/or right eigenvectors of a complex upper triangular matrix T (or of any matrix Q*T*Q**H with Q unitary). Same energy as the real one, just with complex numbers and a little more sparkle β¨
π Parameters π
JOBβCHARACTER*1. Specifies whether condition numbers are required for eigenvalues (S) or eigenvectors (SEP):= 'E': for eigenvalues only (S);= 'V': for eigenvectors only (SEP);= 'B': for both eigenvalues and eigenvectors (SandSEP). Both? Greedy. Respect π«Ά
HOWMNYβCHARACTER*1:= 'A': compute condition numbers for all eigenpairs;= 'S': compute condition numbers for selected eigenpairs specified by the arraySELECT.
SELECTβLOGICALarray, dimension(N). IfHOWMNY = 'S',SELECTspecifies the eigenpairs for which condition numbers are required. To select condition numbers for thej-th eigenpair,SELECT(j)must be set to.TRUE.. IfHOWMNY = 'A',SELECTis not referenced β she's off duty πNβINTEGER, the order of the matrixT.N >= 0.TβCOMPLEX*16array, dimension(LDT,N). The upper triangular matrixT. Upper triangular only, we don't do lower here πLDTβINTEGER, the leading dimension of the arrayT.LDT >= max(1,N).VLβCOMPLEX*16array, dimension(LDVL,M). IfJOB = 'E'or'B',VLmust contain left eigenvectors ofT(or of anyQ*T*Q**HwithQunitary), corresponding to the eigenpairs specified byHOWMNYandSELECT. The eigenvectors must be stored in consecutive columns ofVL, as returned byZHSEINorZTREVC. IfJOB = 'V',VLis not referenced.LDVLβINTEGER, the leading dimension of the arrayVL.LDVL >= 1; and ifJOB = 'E'or'B',LDVL >= N.VRβCOMPLEX*16array, dimension(LDVR,M). IfJOB = 'E'or'B',VRmust contain right eigenvectors ofT(or of anyQ*T*Q**HwithQunitary), corresponding to the eigenpairs specified byHOWMNYandSELECT. The eigenvectors must be stored in consecutive columns ofVR, as returned byZHSEINorZTREVC. IfJOB = 'V',VRis not referenced. Bestie she's literally just vibing when you don't need her πLDVRβINTEGER, the leading dimension of the arrayVR.LDVR >= 1; and ifJOB = 'E'or'B',LDVR >= N.SβDOUBLE PRECISIONarray, dimension(MM). IfJOB = 'E'or'B', the reciprocal condition numbers of the selected eigenvalues, stored in consecutive elements of the array. ThusS(j),SEP(j), and thej-th columns ofVLandVRall correspond to the same eigenpair (but not in general thej-th eigenpair, unless all eigenpairs are selected). Read that again, it's important β the indices line up with the selected ones, not with the original numbering πSEPβDOUBLE PRECISIONarray, dimension(MM). IfJOB = 'V'or'B', the estimated reciprocal condition numbers of the selected eigenvectors, stored in consecutive elements of the array. IfJOB = 'E',SEPis not referenced.MMβINTEGER, the number of elements in the arraysS(ifJOB = 'E'or'B') and/orSEP(ifJOB = 'V'or'B').MM >= M.MβINTEGER, the number of elements of the arraysSand/orSEPactually used to store the estimated condition numbers. IfHOWMNY = 'A',Mis set toN. She handles it, don't worry πWORKβCOMPLEX*16array, dimension(LDWORK,N+6). IfJOB = 'E',WORKis not referenced.LDWORKβINTEGER, the leading dimension of the arrayWORK.LDWORK >= 1; and ifJOB = 'V'or'B',LDWORK >= N.RWORKβDOUBLE PRECISIONarray, dimension(N). IfJOB = 'E',RWORKis not referenced. Yeah, she's the real-valued sidekick for the complex girlies πINFOβINTEGER, the final verdict:= 0: successful exit π< 0: ifINFO = -i, thei-th argument had an illegal value. Fix your argument bestie π
π Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π¦ Further Details π¦
So the reciprocal of the condition number of an eigenvalue lambda is defined as
S(lambda) = |v**H*u| / (norm(u)*norm(v))
where u and v are the right and left eigenvectors of T corresponding to lambda; v**H denotes the conjugate transpose of v, and norm(u) denotes the Euclidean norm. These reciprocal condition numbers always lie between zero (very badly conditioned) and one (very well conditioned). If n = 1, S(lambda) is defined to be 1. Periodt π
An approximate error bound for a computed eigenvalue W(i) is given by
EPS * norm(T) / S(i)
where EPS is the machine precision.
The reciprocal of the condition number of the right eigenvector u corresponding to lambda is defined as follows. Suppose
T = ( lambda c )
( 0 T22 )
Then the reciprocal condition number is
SEP( lambda, T22 ) = sigma-min( T22 - lambda*I )
where sigma-min denotes the smallest singular value. We approximate the smallest singular value by the reciprocal of an estimate of the one-norm of the inverse of T22 - lambda*I. If n = 1, SEP(1) is defined to be abs(T(1,1)). Same rules, conjugate-transpose edition π§ββοΈ
An approximate error bound for a computed right eigenvector VR(i) is given by
EPS * norm(T) / SEP(i)
Definition at line 246 of file ztrsna.f.
πΈ Author πΈ
Generated automatically by Doxygen for LAPACK from the source code. Yes, a robot wrote this part, and honestly? She ate π€π
Okay bestie that's the whole page β go condition some numbers, you've got this π«Άβ¨
That was LAPACK, Version 3.12.0, and this trsna(3) page is officially a wrap. Mwah! ππ
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms