⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_bracket_minimum.cxx

📁 DTMK软件开发包,此为开源软件,是一款很好的医学图像开发资源.
💻 CXX
字号:
#include <vcl_iostream.h>
#include <vnl/vnl_vector.h>
#include <vnl/algo/vnl_bracket_minimum.h>

#include <testlib/testlib_test.h>

struct bm_square1 : public vnl_cost_function {
  bm_square1() : vnl_cost_function(1) {}

  double f(const vnl_vector<double>& x) {
    return (2 - x[0]) * (2 - x[0]) + 10;
  }
};

struct bm_quartic1 : public vnl_cost_function {
  bm_quartic1() : vnl_cost_function(1) {}

  double f(const vnl_vector<double>& x) {
    double y = (2 - x[0]) * (2 - x[0]);
    return y*y + 10;
  }
};

void test_bracket_minimum()
{
  bm_square1 f1;
  double a=5,b=6,c;
  double fa,fb,fc;

  vnl_bracket_minimum(f1,a,b,c,fa,fb,fc);

  vcl_cout<<"Bracket: ("<<a<<','<<b<<','<<c<<')'<<vcl_endl
          <<"fn: ("<<fa<<','<<fb<<','<<fc<<')'<<vcl_endl;

  TEST("a<b",a<b,true);
  TEST("a<c",a<c,true);
  TEST("fa>fb",fa>fb,true);
  TEST("fb<fc",fb<fc,true);

  a = -10; b=-9;
  vnl_bracket_minimum(f1,a,b,c,fa,fb,fc);
  vcl_cout<<"Bracket: ("<<a<<','<<b<<','<<c<<')'<<vcl_endl
          <<"fn: ("<<fa<<','<<fb<<','<<fc<<')'<<vcl_endl;

  TEST("a<b",a<b,true);
  TEST("a<c",a<c,true);
  TEST("fa>fb",fa>fb,true);
  TEST("fb<fc",fb<fc,true);

  bm_quartic1 f2;
  a=5; b=6;
  vnl_bracket_minimum(f2,a,b,c,fa,fb,fc);

  vcl_cout<<"Bracket: ("<<a<<','<<b<<','<<c<<')'<<vcl_endl
          <<"fn: ("<<fa<<','<<fb<<','<<fc<<')'<<vcl_endl;

  TEST("a<b",a<b,true);
  TEST("a<c",a<c,true);
  TEST("fa>fb",fa>fb,true);
  TEST("fb<fc",fb<fc,true);

  a = -10; b=-9;
  vnl_bracket_minimum(f2,a,b,c,fa,fb,fc);
  vcl_cout<<"Bracket: ("<<a<<','<<b<<','<<c<<')'<<vcl_endl
          <<"fn: ("<<fa<<','<<fb<<','<<fc<<')'<<vcl_endl;

  TEST("a<b",a<b,true);
  TEST("a<c",a<c,true);
  TEST("fa>fb",fa>fb,true);
  TEST("fb<fc",fb<fc,true);
}

TESTMAIN(test_bracket_minimum);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -