HP Forums

Full Version: Cofactors and adjoint matrix
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
hi,
this code doesn't run:
Code:

minor();

EXPORT cofactors(m)
BEGIN
local tempmat, cofact, r, c, j, k;
  r:=rowDim(m);
  c:=colDim(m);
  cofact:=  MAKEMAT(0,r,c);
  tempmat:= m;
  FOR j FROM 1 TO r DO
    FOR k FROM 1 to c DO
      cofact:= minor(tempmat, j, k);
      tempmat(j,k):= cofact;
    END; // inner for
  END; //for
  RETURN tempmat;
END;

minor(mat, r,c)
BEGIN
  mat:= delrows(mat,r);
  mat:= delcols(mat,c);
  RETURN mat;
END;

EXPORT adj(m)
BEGIN
local ad;
  ad:= cofactors(m);
RETURN TRN(ad);
END;

Is it not possible to have a matrix as item od another matrix?

I think the problem is in the line < tempmat(j,k):= cofact; >, in fact...
Any help?

Salvo
ok, found!

this should run.
It returns both cofactors and adj (adjoint, transpose of cofactors):

Code:

minor();

EXPORT cofactors(m)
BEGIN
local tempmat, cofact, deter;
local r, c, j, k;
  r:=rowDim(m);
  c:=colDim(m);
  cofact:=  MAKEMAT(0,r,c);
  tempmat:= m;
  FOR j FROM 1 TO r DO
    FOR k FROM 1 to c DO
      cofact:= minor(m, j, k);
      deter:= ((-1)^(j+k)) * det(cofact);
      tempmat(j,k):= deter;
    END; // inner for
  END; //for
  RETURN tempmat;
END;

minor(mat, r,c)
BEGIN
  mat:= delrows(mat,r);
  mat:= delcols(mat,c);
  RETURN mat;
END;

EXPORT adj(m)
BEGIN
local ad;
  ad:= cofactors(m);
RETURN TRN(ad);
END;
Reference URL's