首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算无环矩阵的行列式?

如何计算无环矩阵的行列式?
EN

Stack Overflow用户
提问于 2019-10-08 22:39:31
回答 1查看 534关注 0票数 0

我是新来的Matlab,这可能看起来很容易。

我有两个矩阵:

代码语言:javascript
运行
复制
a = [1 1 1; 2 2 2 ; 3 3 3 ; 4 4 4 ; 5 5 5];
b = [4 4 4; 3 2 4 ; 1 5 7 ; 4 3 8 ; 2 4 7];

我想要计算由一行1( 3*3矩阵)相加的两个矩阵每一行的行列式,并将所有的行列式放在另一个数组中。例如,第一个行列式(d(1))将来自此矩阵:

代码语言:javascript
运行
复制
1 1 1
4 4 4
1 1 1

第二个(d(2))将来自这个矩阵:

代码语言:javascript
运行
复制
2 2 2
3 2 4
1 1 1

等等..。

当我尝试这个:

代码语言:javascript
运行
复制
m = size(a,1);
ons = ones(m,3);
d = det([a(:,:) ; b(:,:) ; ons(:,:)]);

我知道这个错误:

使用det时出错 矩阵必须是正方形的。

在不使用循环的情况下,如何一次计算所有的行列式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-09 15:33:42

根据@Andras的建议,我根据wiki页面尝试了行列式

根据@beaker的建议,这是可行的:

代码语言:javascript
运行
复制
d = (a(:, 1) .* b(:, 2) - a(:, 2) .* b(:, 1)) - (a(:, 1) .* b(:, 3) - a(:, 3) .* b(:, 1)) + (a(:, 2) .* b(:, 3) - a(:, 3) .* b(:, 2))

这些是较慢的备选方案:

代码语言:javascript
运行
复制
d = arrayfun(@(x)det([a(x,:);b(x,:);ones(1,3)]),1:length(a));
代码语言:javascript
运行
复制
d = bsxfun(@times, a(:,1), b(:,2))+ bsxfun(@times, a(:,2), b(:,3)) +...
    bsxfun(@times, a(:,3), b(:,1))- bsxfun(@times, a(:,3), b(:,2)) -...
    bsxfun(@times, a(:,2), b(:,1))- bsxfun(@times, a(:,1), b(:,3));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58294880

复制
相关文章

相似问题

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