Advanced Analysis Library Only
AnalysisLibErrType MatrixBalance (void *inputMatrix, int matrixSize, int method, int *indexLow, int *indexHigh, double scale[], void *balancedMatrix);
Balances a general matrix so that its eigenvectors can be computed more accurately. If you want to compute more accurate eigenvectors for an unsymmetric matrix, complete the following steps:
| Input | ||
| Name | Type | Description |
| inputMatrix | numeric array | The matrix to balance. |
| matrixSize | integer | The order of inputMatrix. |
| method | integer | Specifies how to balance inputMatrix. method must be one of the following values:
|
| Output | ||
| Name | Type | Description |
| indexLow | integer | The lower index that records the permutation information. The values indexLow and indexHigh are such that on output, balancedMatrix[i,j] is 0 if i > j and (i <= j < indexLow or indexHigh < i <= matrixSize - 1). |
| indexHigh | integer | The upper index that records the permutation information. |
| scale | double-precision array | The scale information, whose size is matrixSize. |
| balancedMatrix | numeric array | The balanced matrix. In place operation is supported. That is, you can call the function with balancedMatrix = NULL or balancedMatrix = inputMatrix so that the balanced matrix overwrites inputMatrix directly. |
| Name | Type | Description |
| status | AnalysisLibErrType | A value that specifies the type of error that occurred. Refer to analysis.h for definitions of these constants. |