增强ublas矩阵产品的问题

时间:2011-05-02 14:06:50

标签: c++ boost matrix-multiplication ublas

我正在尝试使用Boost的ublas部分,但由于某种原因,我无法将矩阵相乘并将结果分配给其他矩阵。

这有效:

#include <boost/numeric/ublas/symmetric.hpp>
#include <boost/numeric/ublas/io.hpp>

using namespace boost::numeric::ublas;

typedef symmetric_matrix<int,lower> symatrix;

int main() {
  int N = 10;
  symatrix foo(N,N);
  for (int i = 0; i < N; i++)
    for(int j = 0; j <= i; j++) {
      foo(i,j) = i - j + 1;
    }
  symatrix goo(foo);
  //goo = prod(foo,foo);
  std::cout << prod(foo,foo)<< std::endl;

}

但如果我取消注释行goo = prod(foo,foo);或尝试类似:

symatrix goo = prod(foo,foo);

我遇到运行时错误,我无法破译。

Check failed in file /usr/include/boost/numeric/ublas/detail/matrix_assign.hpp at line 761:
detail::expression_type_check (m, cm)
terminate called after throwing an instance of 'boost::numeric::ublas::external_logic'
  what():  external logic
Aborted

如何乘以矩阵并分配结果?

1 个答案:

答案 0 :(得分:2)

当你将两个对称矩阵相乘时,你not guaranteed总是得到一个对称矩阵。所以这个错误可能与此有关,虽然我不知道为什么代码在我将你的类型更改为symmetric_matrix类型为double时会起作用。