53 #ifndef ROL_LEASTSQUARES_HPP 54 #define ROL_LEASTSQUARES_HPP 66 typedef typename std::vector<Real>::size_type
uint;
71 Teuchos::RCP<const std::vector<Real> > ex
75 Real h = 1.0/((Real)n+1.0);
78 for (
uint i=0; i<n; i++) {
80 res = 2.0*h*(5.0/6.0) + 1.0/h*((*ex)[i+1]-2.0*(*ex)[i]);
82 else if ( i == n-1 ) {
83 res = 2.0*h*(5.0/6.0) + 1.0/h*((*ex)[i-1]-2.0*(*ex)[i]);
86 res = 2.0*h + 1.0/h*((*ex)[i-1]-2.0*(*ex)[i]+(*ex)[i+1]);
94 Teuchos::RCP<std::vector<Real> > eg
96 Teuchos::RCP<const std::vector<Real> > ex
100 Real h = 1.0/((Real)n+1.0);
101 std::vector<Real> res(n,0.0);
102 for (
uint i=0; i<n; i++) {
104 res[i] = 2.0*h*(5.0/6.0) + 1.0/h*((*ex)[i+1]-2.0*(*ex)[i]);
106 else if ( i == n-1 ) {
107 res[i] = 2.0*h*(5.0/6.0) + 1.0/h*((*ex)[i-1]-2.0*(*ex)[i]);
110 res[i] = 2.0*h + 1.0/h*((*ex)[i-1]-2.0*(*ex)[i]+(*ex)[i+1]);
114 for (
uint i=0; i<n; i++) {
116 (*eg)[i] = 1.0/h*(res[i+1]-2.0*res[i]);
118 else if ( i == n-1 ) {
119 (*eg)[i] = 1.0/h*(res[i-1]-2.0*res[i]);
122 (*eg)[i] = 1.0/h*(res[i-1]-2.0*res[i]+res[i+1]);
128 Teuchos::RCP<std::vector<Real> > ehv
130 Teuchos::RCP<const std::vector<Real> > ev
132 Teuchos::RCP<const std::vector<Real> > ex
136 Real h = 1.0/((Real)n+1.0);
137 std::vector<Real> res(n,0.0);
138 for (
uint i=0; i<n; i++) {
140 res[i] = 1.0/h*((*ev)[i+1]-2.0*(*ev)[i]);
142 else if ( i == n-1 ) {
143 res[i] = 1.0/h*((*ev)[i-1]-2.0*(*ev)[i]);
146 res[i] = 1.0/h*((*ev)[i-1]-2.0*(*ev)[i]+(*ev)[i+1]);
150 for (
uint i=0; i<n; i++) {
152 (*ehv)[i] = 1.0/h*(res[i+1]-2.0*res[i]);
154 else if ( i == n-1 ) {
155 (*ehv)[i] = 1.0/h*(res[i-1]-2.0*res[i]);
158 (*ehv)[i] = 1.0/h*(res[i-1]-2.0*res[i]+res[i+1]);
173 Teuchos::RCP<std::vector<Real> > x0p = Teuchos::rcp(
new std::vector<Real>(n,0.0));
174 for (
int i = 0; i < n; i++ ) {
180 Teuchos::RCP<std::vector<Real> > xp = Teuchos::rcp(
new std::vector<Real>(n,0.0));
181 Real h = 1.0/((Real)n+1.0), pt = 0.0;
182 for(
int i = 0; i < n; i++ ) {
184 (*xp)[i] = pt*(1.0-pt);
Provides the interface to evaluate objective functions.
std::vector< Real >::size_type uint
virtual void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Apply Hessian approximation to vector.
void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol)
Compute gradient.
Defines the linear algebra or vector space interface.
Real value(const Vector< Real > &x, Real &tol)
Compute value.
void getLeastSquares(Teuchos::RCP< Objective< Real > > &obj, Teuchos::RCP< Vector< Real > > &x0, Teuchos::RCP< Vector< Real > > &x)