KASKADE 7 development version
modelFunctions.hh
Go to the documentation of this file.
1#ifndef MODELFUNCTIONS_HH
2#define MODELFUNCTIONS_HH
3
4#include <cmath>
5#include <memory>
6
7#include "dune/common/fvector.hh"
8#include "dune/istl/bvector.hh"
9#include "dune/istl/matrix.hh"
10
12
13namespace Kaskade
14{
16 {
18 public:
19 QuadraticFunction(double constantPart_, Dune::BlockVector<FieldType> linearPart_, Dune::Matrix<FieldType> quadraticPart_);
20
22
23 double d0(std::vector<double> const& argument) const;
24
25 std::vector<double> d1(std::vector<double> const& argument) const;
26
27 private:
28 FieldType constantPart;
30 public:
32 };
33
35 {
36 public:
37 IsotropicCubicRegularization(QuadraticFunction const& normBlf_, double scale_ = 1);
39
40 double d0(std::vector<double> const& iterate) const;
41 std::vector<double> d1(std::vector<double> const& iterate) const;
42
43 private:
44 double scale;
45 QuadraticFunction normBlf;
46 };
47
48
50 {
51 public:
52 CSCubicRegularization(double normN_, QuadraticFunction const& norm, double scale_ = 1);
54
55 double d0(std::vector<double> const& iterate) const;
56 std::vector<double> d1(std::vector<double> const& iterate) const;
57
58 private:
59 double scale, normN3;
61 };
62
63
65 {
66 public:
68
70
71 double evalQuadraticModel(std::vector<double>const & iterate) const;
72
73 double d0(std::vector<double> const& iterate) const;
74 std::vector<double> d1(std::vector<double> const& iterate) const;
75
76 private:
77 QuadraticFunction quadraticModel;
78 DifferentiableScalarFunction const& regularization;
79 };
80
81
83 {
84 public:
86
87 double operator()(double tau) const;
88
89 private:
91 };
92
94 {
95 public:
97
99
100 double d0(std::vector<double>const & iterate) const;
101 std::vector<double> d1(std::vector<double>const & iterate) const;
102
103 private:
104 double omegaC;
105 QuadraticFunction normBlf;
106 };
107
108} // namespace Kaskade
109
110#endif // MODELFUNCTIONS_HH
Interfaces for function space oriented algorithms.
double d0(std::vector< double > const &iterate) const
CSCubicRegularization(double normN_, QuadraticFunction const &norm, double scale_=1)
std::vector< double > d1(std::vector< double > const &iterate) const
double d0(std::vector< double >const &iterate) const
ContractionModelFunction(QuadraticFunction normBlf_, double omegaC_)
std::vector< double > d1(std::vector< double >const &iterate) const
double operator()(double tau) const
CubicModel1dForFmin(ContinuousScalarFunction const &cb_)
std::vector< double > d1(std::vector< double > const &iterate) const
double d0(std::vector< double > const &iterate) const
IsotropicCubicRegularization(QuadraticFunction const &normBlf_, double scale_=1)
TODO !!!!! Entscheidung über Vektortyp !!!!!!
std::vector< double > d1(std::vector< double > const &argument) const
Dune::Matrix< FieldType > quadraticPart
QuadraticFunction(double constantPart_, Dune::BlockVector< FieldType > linearPart_, Dune::Matrix< FieldType > quadraticPart_)
double d0(std::vector< double > const &argument) const
QuadraticFunction(QuadraticFunction const &)=default
double evalQuadraticModel(std::vector< double >const &iterate) const
std::vector< double > d1(std::vector< double > const &iterate) const
RegularizedQuadraticFunction(QuadraticFunction quadraticModel_, DifferentiableScalarFunction &regularization_)
double d0(std::vector< double > const &iterate) const