有没有办法使用boost库实现Excel LINEST函数?

时间:2015-10-27 15:40:53

标签: c++ excel math boost

boost :: math是否有任何函数可用于帮助实现类似于MS Excel LINEST函数的函数?

1 个答案:

答案 0 :(得分:5)

我解析了Boost文档(不是在boost :: math中,它看起来更像是boost :: ublas)。就目前而言,我无法找到一个足够简单的例子,不会对非数学家过度。

从我看到的情况来看,我宁愿建议使用Armadillo,因为它的使用看起来相当简单。

我在下面转载了一个取自armadillo source archive的简化代码示例:

int main(int argc, char** argv)
{
  // points to which we will fit the line
  mat data = "1 6; 2 5; 3 7; 4 10";

  // Transform the problem into an Armadillo use-case (Ax = b problem)
  vec b(data.n_rows);
  mat C(data.n_rows, 2);
  for(u32 i=0; i<data.n_rows; ++i)
  {
    b(i)   = data(i,1);
    C(i,0) = 1;
    C(i,1) = data(i,0);
  }

  // Compute least-squares solution, should be "3.5; 1.4"
  vec solution = solve(C,b);
  cout << "solution:" << endl << solution << endl;

  return 0;
}