/// <inheritdoc/> public FieldMatrix <U> getInverse() { int m = pivot.Length; U one = field.getOne(); FieldMatrix <U> identity = new Array2DRowFieldMatrix <U>(field, m, m); for (int i = 0; i < m; ++i) { identity.setEntry(i, i, one); } return(solve(identity)); }
/// <summary> /// Compute the outer product. /// </summary> /// <param name="v">vector with which outer product should be computed</param> /// <returns>the matrix outer product between instance and v</returns> public FieldMatrix <T> outerProduct(ArrayFieldVector <T> v) { int m = data.Length; int n = v.data.Length; FieldMatrix <T> outp = new Array2DRowFieldMatrix <T>(field, m, n); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { outp.setEntry(i, j, data[i].multiply(v.data[j])); } } return(outp); }
/// <inheritdoc/> public FieldMatrix <T> outerProduct(FieldVector <T> v) { try { return(outerProduct((ArrayFieldVector <T>)v)); } catch (InvalidCastException) { int m = data.Length; int n = v.getDimension(); FieldMatrix <T> outp = new Array2DRowFieldMatrix <T>(field, m, n); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { outp.setEntry(i, j, data[i].multiply(v.getEntry(j))); } } return(outp); } }