MUQ  0.4.3
GaussNewtonOperator.h
Go to the documentation of this file.
1 #ifndef GAUSSNEWTONOPERATOR_H
2 #define GAUSSNEWTONOPERATOR_H
3 
6 
7 #include <memory>
8 
9 namespace muq
10 {
11 namespace Modeling
12 {
13 
14 
22 public:
23 
24  GaussNewtonOperator(std::shared_ptr<ModPiece> const& forwardModelIn,
25  std::shared_ptr<ModPiece> const& noiseModelIn,
26  std::vector<Eigen::VectorXd> const& inputsIn,
27  unsigned int inWrt,
28  double scaleIn=1.0,
29  double nuggetIn=0.0);
30 
31  virtual ~GaussNewtonOperator() = default;
32 
34  virtual Eigen::MatrixXd Apply(Eigen::Ref<const Eigen::MatrixXd> const& x) override;
35 
37  virtual Eigen::MatrixXd ApplyTranspose(Eigen::Ref<const Eigen::MatrixXd> const& x) override;
38 
39 protected:
40  std::shared_ptr<ModPiece> forwardModel;
41  std::shared_ptr<ModPiece> noiseModel;
42 
43  const std::vector<Eigen::VectorXd> inputs;
44  const std::vector<Eigen::VectorXd> noiseInputs;
45  const unsigned int inWrt;
46  const double scale;
47  const double nugget;
48 
49 };
50 
51 } // namespace Modeling
52 } // namespace MUQ
53 
54 
55 
56 #endif
Creates a linear operator for the action of a Gauss-Newton Hessian approximation on a vector....
const std::vector< Eigen::VectorXd > noiseInputs
virtual Eigen::MatrixXd Apply(Eigen::Ref< const Eigen::MatrixXd > const &x) override
const std::vector< Eigen::VectorXd > inputs
virtual Eigen::MatrixXd ApplyTranspose(Eigen::Ref< const Eigen::MatrixXd > const &x) override
virtual ~GaussNewtonOperator()=default
GaussNewtonOperator(std::shared_ptr< ModPiece > const &forwardModelIn, std::shared_ptr< ModPiece > const &noiseModelIn, std::vector< Eigen::VectorXd > const &inputsIn, unsigned int inWrt, double scaleIn=1.0, double nuggetIn=0.0)
std::shared_ptr< ModPiece > forwardModel
std::shared_ptr< ModPiece > noiseModel
Generic linear operator base class.