Go to the documentation of this file.00001
00028 #pragma once
00029
00030 #include <Eigen/Dense>
00031
00032 #include "OrderedSparseMatrix.h"
00033
00034 namespace isam {
00035
00036 class SparseSystem : public OrderedSparseMatrix {
00037 Eigen::VectorXd _rhs;
00038 public:
00039 SparseSystem(int num_rows, int num_cols);
00040 SparseSystem(const SparseSystem& mat);
00041 SparseSystem(const SparseSystem& mat, int num_rows, int num_cols, int first_row = 0, int first_col = 0);
00042 SparseSystem(int num_rows, int num_cols, SparseVector_p* rows, const Eigen::VectorXd& rhs);
00043 virtual ~SparseSystem();
00044 const SparseSystem& operator= (const SparseSystem& mat);
00045
00046 const Eigen::VectorXd& rhs() const {return _rhs;}
00047 void set_rhs(const Eigen::VectorXd& rhs) {_rhs = rhs;}
00048
00049
00050
00056 void apply_givens(int row, int col, double* c_givens = NULL, double* s_givens = NULL);
00057
00058 void append_new_rows(int num);
00059
00060
00061
00067 virtual void add_row(const SparseVector& new_row, double new_r);
00068
00075 virtual int add_row_givens(const SparseVector& new_row, double new_r);
00076
00081 virtual Eigen::VectorXd solve() const;
00082
00083 };
00084
00085 }