using System; namespace Science.Mathematics.LinearAlgebra { public class RowSpace : VectorSpace { private Matrix At; public RowSpace(Matrix A) { At = A.Transpose; Nullspace N = new Nullspace(At); this.Dimension = A.Rank; Vector[] n = new Vector[this.Dimension]; int cc = 0; for (int i = 0; i < At.SizeOfColumn; i++) { if (N.PivotColumnQ[i]) { n[cc] = new Vector(At.SizeOfRow); for (int j = 0; j < At.SizeOfRow; j++) { n[cc][j] = At[j, i]; } cc++; } } this.Basis = n; } public Vector LinearCombination(double[] x) { Vector xx = new Vector(x); Vector Ax = At * xx; return Ax; } } }