MCPcopy Create free account
hub / github.com/davisking/dlib / brown_hessian

Function brown_hessian

dlib/test/optimization_test_functions.cpp:347–398  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

345 // ----------------------------------------------------------------------------------------
346
347 matrix<double,4,4> brown_hessian ( const matrix<double,4,1>& x)
348 {
349 double c;
350 double df1dx1;
351 double df1dx2;
352 double df2dx3;
353 double df2dx4;
354 double f1;
355 double f2;
356 matrix<double,4,4> h;
357 int i;
358
359 h = 0;
360
361 for (i = 1; i <= 20; ++i)
362 {
363
364 c = double ( i ) / 5.0E+00;
365
366 f1 = x(0) + c * x(1) - std::exp ( c );
367 f2 = x(2) + std::sin ( c ) * x(3) - std::cos ( c );
368
369 df1dx1 = 1.0E+00;
370 df1dx2 = c;
371 df2dx3 = 1.0E+00;
372 df2dx4 = std::sin ( c );
373
374 using std::pow;
375 h(0,0) = h(0,0) + 12.0E+00 * pow(f1,2) * df1dx1 * df1dx1 + 4.0E+00 * pow(f2,2) * df1dx1 * df1dx1;
376 h(0,1) = h(0,1) + 12.0E+00 * pow(f1,2) * df1dx1 * df1dx2 + 4.0E+00 * pow(f2,2) * df1dx1 * df1dx2;
377 h(0,2) = h(0,2) + 8.0E+00 * f1 * f2 * df1dx1 * df2dx3;
378 h(0,3) = h(0,3) + 8.0E+00 * f1 * f2 * df1dx1 * df2dx4;
379
380 h(1,0) = h(1,0) + 12.0E+00 * pow(f1,2) * df1dx2 * df1dx1 + 4.0E+00 * pow(f2,2) * df1dx2 * df1dx1;
381 h(1,1) = h(1,1) + 12.0E+00 * pow(f1,2) * df1dx2 * df1dx2 + 4.0E+00 * pow(f2,2) * df1dx2 * df1dx2;
382 h(1,2) = h(1,2) + 8.0E+00 * f1 * f2 * df1dx2 * df2dx3;
383 h(1,3) = h(1,3) + 8.0E+00 * f1 * f2 * df1dx2 * df2dx4;
384
385 h(2,0) = h(2,0) + 8.0E+00 * f1 * f2 * df2dx3 * df1dx1;
386 h(2,1) = h(2,1) + 8.0E+00 * f1 * f2 * df2dx3 * df1dx2;
387 h(2,2) = h(2,2) + 4.0E+00 * pow(f1,2) * df2dx3 * df2dx3 + 12.0E+00 * pow(f2,2) * df2dx3 * df2dx3;
388 h(2,3) = h(2,3) + 4.0E+00 * pow(f1,2) * df2dx4 * df2dx3 + 12.0E+00 * pow(f2,2) * df2dx3 * df2dx4;
389
390 h(3,0) = h(3,0) + 8.0E+00 * f1 * f2 * df2dx4 * df1dx1;
391 h(3,1) = h(3,1) + 8.0E+00 * f1 * f2 * df2dx4 * df1dx2;
392 h(3,2) = h(3,2) + 4.0E+00 * pow(f1,2) * df2dx3 * df2dx4 + 12.0E+00 * pow(f2,2) * df2dx4 * df2dx3;
393 h(3,3) = h(3,3) + 4.0E+00 * pow(f1,2) * df2dx4 * df2dx4 + 12.0E+00 * pow(f2,2) * df2dx4 * df2dx4;
394
395 }
396
397 return make_symmetric(h);
398 }
399
400 // ----------------------------------------------------------------------------------------
401

Callers 1

Calls 3

xFunction · 0.85
expFunction · 0.85
make_symmetricFunction · 0.85

Tested by

no test coverage detected