Prev Next

minv

Matrix inversion.

SYNOPSIS:

int n, errcod;
double A[n*n], X[n*n];
double B[n];
int IPS[n];
int minv();

errcod = minv(A, X, n, B, IPS);

DESCRIPTION:

Finds the inverse of the n by n matrix A. The result goes to X.  B and IPS are scratch-pad arrays of length n. The contents of matrix A are destroyed.

The routine returns nonzero on error; error messages are printed by the subroutine simq().

JavaScript:

function test_minv()
{
/*
* Finds the inverse of the n by n matrix A.  The result goes
* to X.   B and IPS are scratch pad arrays of length n.
* The contents of matrix A are destroyed
*/
Session.Output("calling cephes.minv( A,X,n,B,IPS) where:");
var n = 10; // n x n matrix A (10x10)
var A = [
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]
];

var X = new Array(10); // output
var B = new Array(10); // scratch pad
var IPS = new Array(10); // scratch pad

Session.Output("  n = " + n);
Session.Output("  length of A is" + n*n);
Session.Output("A is matrix of " + dimensionsOfArray(A));
var ir = cephes.minv(A,X,n,B,IPS);

var s = cephes.geterrormsg();
if(s.length>0)
{
Session.Output("error output by minv: " + s);
}
else
{
Session.Output("minv returned " + ir);
Session.Output("X is matrix of " + dimensionsOfArray(X));
printMatrix("X",X,10,10);
}
}