首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把几个小的组合成一个大的刚度矩阵

把几个小的组合成一个大的刚度矩阵
EN

Stack Overflow用户
提问于 2009-06-02 20:20:38
回答 3查看 9K关注 0票数 3

这是一个微不足道的问题,但我刚刚开始使用matlab,还没有习惯他们的思维方式(和语法)。

我的问题对于任何使用过有限元或类似方法的人来说都是显而易见的。

如何将几个小矩阵组合成一个大的刚度矩阵。比方说,对于(元素1),你得到了一个4x4的局部刚度矩阵,对于(元素2)也是如此--当然,只是矩阵不同,但仍然是4x4。

执行此操作的最简单方法是什么:

代码语言:javascript
复制
[|--------| 0  0 ]  
[|        | 0  0 ]  
[|     |--|-----|]  
[|-----|--|     |]  
[0  0  |        |]  
[0  0  |--------|]  

(a33+b11, a34+b12,
(a43+b12, a44+b22, ...)

比如做一个“大的”?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-02 20:31:07

我想你的问题是:

A= 4x4 B= 4x4

C=A和B重叠的最终矩阵,应在重叠中求和。

执行以下操作:

代码语言:javascript
复制
C = zeros(6);
C(1:4,1:4) = A;
C(3:6,3:6) = C(3:6,3:6) + B;
票数 5
EN

Stack Overflow用户

发布于 2009-06-02 23:28:59

刚度矩阵希望是稀疏的。真的是这样。重点是,这些大的刚度矩阵将以大量的零元素结束。因此,您需要在构建矩阵时考虑到这一点。好的是稀疏矩阵在matlab中得到了很好的支持。但您需要正确地使用它们。

其思想是将矩阵构建为行和列索引的列表,以及要插入到矩阵中的值。提前建立起这个列表。只有在最后才会调用sparse来实际构建矩阵本身。稀疏将自动对存在重叠的元素进行求和。

一旦构建了稀疏矩阵,就完全支持矩阵乘法和反斜杠等所有操作,并且与完整矩阵上的相同操作相比,可以非常快。当全局刚度矩阵可能为1e5x1e5或更大时,这一点尤其重要。

在某些情况下,对于大型矩阵,当矩阵的因式分解变得不可能时,您可能需要迁移到迭代求解器。

票数 6
EN

Stack Overflow用户

发布于 2009-06-02 23:30:58

只是为了好玩,这里有一个使用BLKDIAG的单行解决方案

代码语言:javascript
复制
C = blkdiag(A,zeros(2)) + blkdiag(zeros(2),B);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/941683

复制
相关文章

相似问题

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