首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >boost ublas矩阵乘积的问题

boost ublas矩阵乘积的问题
EN

Stack Overflow用户
提问于 2011-05-02 22:06:50
回答 1查看 1.7K关注 0票数 2

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

这是可行的:

代码语言:javascript
复制
#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);的注释,或者尝试如下所示:

代码语言:javascript
复制
symatrix goo = prod(foo,foo);

我得到一个无法破译的运行时错误。

代码语言:javascript
复制
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

如何将矩阵相乘并将结果赋值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-03 02:38:13

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5858150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档