11#include "tnt/tnt_array2d.h"
15#include "BasisFunction.h"
103 int sparseRows = 0,
int sparseCols = 0,
bool jigsaw =
false);
105 void AddKnown(
const std::vector<double> &input,
double expected,
106 double weight = 1.0);
108 std::vector<double>
GetInput(
int row)
const;
118 double Evaluate(
const std::vector<double> &input);
121 void Weight(
int index,
double weight);
133 double GetSigma0() {
return p_sigma0; }
137 void ResetSparse() { Reset(); }
139 void SetParameterWeights(
const std::vector<double> weights) {
p_parameterWeights = weights; }
145 void SolveCholesky () {}
149 bool ApplyParameterWeights();
164 int p_currentFillRow;
Generic linear equation class.
Generic least square fitting class.
arma::mat p_xSparse
sparse solution matrix
arma::SpMat< double > p_normals
normal equations matrix 'N'
double GetExpected(int row) const
This method returns the expected value at the given row.
void Weight(int index, double weight)
Reset the weight for the ith known.
double p_sigma0
sigma nought - reference variance
int SolveSparse()
Solve using sparse class.
arma::SpMat< double > p_sparseA
design matrix 'A'
std::vector< double > p_parameterWeights
vector of parameter weights
double Residual(int i) const
Returns the ith residual.
bool p_solved
Boolean value indicating solution is complete.
int Rows() const
This methods returns the number of rows in the matrix.
Isis::BasisFunction * p_basis
Pointer to the BasisFunction object.
~LeastSquares()
Destroys the LeastSquares object.
@ SVD
Singular Value Decomposition.
int Knowns() const
The number of knowns (or times AddKnown was invoked) linear combination of the variables.
double Evaluate(const std::vector< double > &input)
Invokes the BasisFunction Evaluate method.
std::vector< std::vector< double > > p_input
A vector of the input variables to evaluate.
int p_constrainedParameters
constrained parameters
arma::mat p_ATb
right-hand side vector
int Solve(Isis::LeastSquares::SolveMethod method=SVD)
After all the data has been registered through AddKnown, invoke this method to solve the system of eq...
void SolveQRD()
After all the data has been registered through AddKnown, invoke this method to solve the system of eq...
std::vector< double > p_epsilonsSparse
sparse vector of total parameter corrections
void SolveSVD()
After all the data has been registered through AddKnown, invoke this method to solve the system of eq...
LeastSquares(Isis::BasisFunction &basis, bool sparse=false, int sparseRows=0, int sparseCols=0, bool jigsaw=false)
Creates a LeastSquares Object.
std::vector< double > Residuals() const
Returns a vector of residuals (errors).
void FillSparseA(const std::vector< double > &data)
Invoke this method for each set of knowns for sparse solutions.
std::vector< double > p_sqrtWeight
A vector of the square roots of the weights for each known value.
std::vector< double > p_residuals
A vector of the residuals (or difference between expected and solved values).
void AddKnown(const std::vector< double > &input, double expected, double weight=1.0)
Invoke this method for each set of knowns.
std::vector< double > p_expected
A vector of the expected values when solved.
std::vector< double > GetInput(int row) const
This method returns the data at the given row.
arma::mat p_SLU_Factor
decomposed normal equations matrix
int p_degreesOfFreedom
degrees of freedom (redundancy)
This is free and unencumbered software released into the public domain.