Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #if !defined (octave_CHOL_h)
00025 #define octave_CHOL_h 1
00026
00027 #include <iosfwd>
00028
00029 #include "dMatrix.h"
00030 #include "dColVector.h"
00031
00032 class
00033 OCTAVE_API
00034 CHOL
00035 {
00036 public:
00037
00038 CHOL (void) : chol_mat (), xrcond (0) { }
00039
00040 CHOL (const Matrix& a, bool calc_cond = false)
00041 : chol_mat (), xrcond (0)
00042 {
00043 init (a, calc_cond);
00044 }
00045
00046 CHOL (const Matrix& a, octave_idx_type& info, bool calc_cond = false)
00047 : chol_mat (), xrcond (0)
00048 {
00049 info = init (a, calc_cond);
00050 }
00051
00052 CHOL (const CHOL& a) : chol_mat (a.chol_mat), xrcond (a.xrcond) { }
00053
00054 CHOL& operator = (const CHOL& a)
00055 {
00056 if (this != &a)
00057 {
00058 chol_mat = a.chol_mat;
00059 xrcond = a.xrcond;
00060 }
00061 return *this;
00062 }
00063
00064 Matrix chol_matrix (void) const { return chol_mat; }
00065
00066 double rcond (void) const { return xrcond; }
00067
00068
00069 Matrix inverse (void) const;
00070
00071 void set (const Matrix& R);
00072
00073 void update (const ColumnVector& u);
00074
00075 octave_idx_type downdate (const ColumnVector& u);
00076
00077 octave_idx_type insert_sym (const ColumnVector& u, octave_idx_type j);
00078
00079 void delete_sym (octave_idx_type j);
00080
00081 void shift_sym (octave_idx_type i, octave_idx_type j);
00082
00083 friend OCTAVE_API std::ostream& operator << (std::ostream& os, const CHOL& a);
00084
00085 private:
00086
00087 Matrix chol_mat;
00088
00089 double xrcond;
00090
00091 octave_idx_type init (const Matrix& a, bool calc_cond);
00092 };
00093
00094 Matrix OCTAVE_API chol2inv (const Matrix& r);
00095
00096 #endif