44 #ifndef ROL_SMOOTHCVARQUAD_HPP 45 #define ROL_SMOOTHCVARQUAD_HPP 56 Teuchos::RCP<PlusFunction<Real> >
pf_;
65 prob_ = ((prob >= 0.0) ? ((prob <= 1.0) ? prob : 0.5) : 0.5);
66 eps_ = ((eps > 0.0) ? eps : 1.0);
69 Real
error(Real x,
int deriv = 0) {
70 Real err = (prob_/(1.0-
prob_))*pf_->evaluate(x,deriv)
71 + ((deriv%2) ? -1.0 : 1.0)*pf_->evaluate(-x,deriv);
76 Real X = ((deriv==0) ? x : ((deriv==1) ? 1.0 : 0.0));
77 Real reg =
error(x,deriv) + X;
133 Real vx = 0.0, vy = 0.0;
138 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(eps) is correct? \n";
139 std::cout << std::right << std::setw(20) <<
"t" 140 << std::setw(20) <<
"v'(x)" 141 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 142 << std::setw(20) <<
"Error" 144 for (
int i = 0; i < 13; i++) {
147 diff = (vy-vx)/(2.0*t);
148 err = std::abs(diff-dv);
149 std::cout << std::scientific << std::setprecision(11) << std::right
150 << std::setw(20) << t
151 << std::setw(20) << dv
152 << std::setw(20) << diff
153 << std::setw(20) << err
165 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(eps) is correct? \n";
166 std::cout << std::right << std::setw(20) <<
"t" 167 << std::setw(20) <<
"v''(x)" 168 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t" 169 << std::setw(20) <<
"Error" 171 for (
int i = 0; i < 13; i++) {
174 diff = (vy-vx)/(2.0*t);
175 err = std::abs(diff-dv);
176 std::cout << std::scientific << std::setprecision(11) << std::right
177 << std::setw(20) << t
178 << std::setw(20) << dv
179 << std::setw(20) << diff
180 << std::setw(20) << err
193 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(0) is correct? \n";
194 std::cout << std::right << std::setw(20) <<
"t" 195 << std::setw(20) <<
"v'(x)" 196 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 197 << std::setw(20) <<
"Error" 199 for (
int i = 0; i < 13; i++) {
202 diff = (vy-vx)/(2.0*t);
203 err = std::abs(diff-dv);
204 std::cout << std::scientific << std::setprecision(11) << std::right
205 << std::setw(20) << t
206 << std::setw(20) << dv
207 << std::setw(20) << diff
208 << std::setw(20) << err
220 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(0) is correct? \n";
221 std::cout << std::right << std::setw(20) <<
"t" 222 << std::setw(20) <<
"v''(x)" 223 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t" 224 << std::setw(20) <<
"Error" 226 for (
int i = 0; i < 13; i++) {
229 diff = (vy-vx)/(2.0*t);
230 err = std::abs(diff-dv);
231 std::cout << std::scientific << std::setprecision(11) << std::right
232 << std::setw(20) << t
233 << std::setw(20) << dv
234 << std::setw(20) << diff
235 << std::setw(20) << err
248 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(-eps) is correct? \n";
249 std::cout << std::right << std::setw(20) <<
"t" 250 << std::setw(20) <<
"v'(x)" 251 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 252 << std::setw(20) <<
"Error" 254 for (
int i = 0; i < 13; i++) {
257 diff = (vy-vx)/(2.0*t);
258 err = std::abs(diff-dv);
259 std::cout << std::scientific << std::setprecision(11) << std::right
260 << std::setw(20) << t
261 << std::setw(20) << dv
262 << std::setw(20) << diff
263 << std::setw(20) << err
275 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(-eps) is correct? \n";
276 std::cout << std::right << std::setw(20) <<
"t" 277 << std::setw(20) <<
"v''(x)" 278 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t" 279 << std::setw(20) <<
"Error" 281 for (
int i = 0; i < 13; i++) {
284 diff = (vy-vx)/(2.0*t);
285 err = std::abs(diff-dv);
286 std::cout << std::scientific << std::setprecision(11) << std::right
287 << std::setw(20) << t
288 << std::setw(20) << dv
289 << std::setw(20) << diff
290 << std::setw(20) << err
Real regret(Real x, int deriv=0)
virtual void checkRegret(void)
Real error(Real x, int deriv=0)
Teuchos::RCP< PlusFunction< Real > > pf_
CVaRQuadrangle(Real prob, Real eps, Teuchos::RCP< PlusFunction< Real > > &pf)