void Matrix<T>::copy(const MatrixBase<T>& a) { setSize(a.getNumRows(), a.getNumCols()); for(int i=0; i < a.getNumRows(); i++) { for(int j=0; j < a.getNumCols(); j++) { head[i][j] = a(i,j); } } }
Vector<T> GaussianElimination<T>::operator()(MatrixBase<T>& A, const Vector<T>& b) { Vector<T> x( b.getSize() ); Matrix<T> newA(A.getNumRows(),A.getNumCols()); newA = A; newA.addColumn(b); // Forward Elimination for(int i=1; i < newA.getNumRows(); i++) { reduceDown(newA, i); } // Backward Elimination for(int i=newA.getNumRows()-2; i >= 0; i--) { reduceUp(newA, i); } // Solve for x for(int i=0; i < x.getSize(); i++) { x[i] = newA(i,newA.getNumCols()-1) / newA(i,i); } return x; }