balance {expm} | R Documentation |
Balance a Square Matrix via LAPACK's DGEBAL
Description
Balance a square matrix via LAPACK's DGEBAL
.
This is an R interface, mainly used for experimentation.
This LAPACK routine is used internally for Eigenvalue decompositions, but also, in Ward(1977)'s algorithm for the matrix exponential.
The name balance()
is preferred nowadays, and “dgebal()”
has been deprecated (finally, after 9 years ...).
Usage
balance(A, job = c("B", "N", "P", "S"))
## Deprecated now:
## dgebal(A, job = c("B", "N", "P", "S"))
Arguments
A |
a square ( |
job |
a one-letter string specifying the ‘job’ for DGEBAL.
|
Details
An excerpt of the LAPACK documentation about DGEBAL(), describing the result
- i1 ("ILO")
(output) integer
- i2 ("IHI")
(output) integer
i1
andi2
are set to integers such that on exitz[i,j] = 0
ifi > j
andj = 1,...,i1-1
ori = i2+1,...,n
.If
job = 'N'
or'S'
,i1 = 1
andi2 = n
.- scale
(output) numeric vector of length
n
. Details of the permutations and scaling factors applied toA
. IfP[j]
is the index of the row and column interchanged with row and columnj
andD[j]
is the scaling factor applied to row and column j, thenscale[j] = P[j]
forj = 1,...,i1-1
= D[j]
forj = i1,...,i2
,
= P[j]
forj = i2+1,...,n
.The order in which the interchanges are made is
n
toi2+1
, then1
toi1-1
.
Look at the LAPACK documentation for more details.
Value
A list with components
z |
the transformation of matrix |
scale |
numeric vector of length |
i1 , i2 |
integers (length 1) in |
Author(s)
Martin Maechler
References
LAPACK Reference Manual
See Also
Examples
m4 <- rbind(c(-1,-1, 0, 0),
c( 0, 0,10,10),
c( 0, 0,10, 0),
c( 0,10, 0, 0))
(b4 <- balance(m4))
## --- for testing and didactical reasons : ----
if(expm:::doExtras()) withAutoprint({
sessionInfo()
packageDescription("Matrix")
"expm installed at"
dirname(attr(packageDescription("expm"), "file"))
})
demo(balanceTst) # also defines the balanceTst() function
# which in its tests ``defines'' what
# the return value means, notably (i1,i2,scale)