刚度矩阵非正定
结构:钢桁架简支梁桥有限元模拟:采用桁段有限元法结合对号入座法则,推导出了结构的刚度矩阵
边界条件:将边界条件所限制的自由度对应刚度矩阵中的数值修改为一个很大的数
问题:利用MATLAB求解对应的行列式值,得到一个“nan”,即“不是一个数”,甚为不解。而且分析振型时,出现了复模态。问题可能出现在两个地方,一个是边界条件,另一个是矩阵的原素,我都仔细检查了一边,还是不行。所以发帖子上来请教论坛里的高手们。感谢。
附件为刚度矩阵图形和前十阶振型图 矩阵计算精度有没有问题。可以加大计算精度试一试。不过计算时间要加大了。 一步步检查,我以前有一次也碰到这个问题,先看单元刚度对不对,再看总刚对不对,先组装一两个单元,不要一下子全部都组集,然后看约束,就这几点
回复 板凳 xuxinnuaa 的帖子
估计刚度矩阵输入有错误,导致不对称,用 A-A' 检查是否有非零元素。 如果有,肯定输错了。 十分感谢各位的热情解答,矩阵形成过程检查了两遍了,没发现问题。矩阵也是实对称的。至于cooller兄的“加大计算精度”,我也在想这个问题。数值太大超过了容许的最大数值,就提示为nan,那么我就想,matlab的容许最大的数值可不可以自己设置呢?xuxinnuaa兄的建议,我会再仔细检查一遍的。另外,我发现矩阵中有一些非零数的数值和其他数相比很小。顺便我将这个矩阵的数据贴出来给各位看一下。.txt中的数据看的不直观,可以导入到matlab中。再次感谢。 LZ的矩阵det值是否应该为0? 试了下! 原因应该是matlab的算法所致!
det(A)的Algorithm为=lu(A); det(A)=det(L)*prod(diag(U));
问题出在执行prod(diag(U)), U的对角线数值很大, 又累积, 算到46项即已超过realmin(=2.2251e-308)而成为-inf, 而U的最後又为零, inf*0=NaN !!
可以用下式算
=lu(aaa); dd=diag(U); det(L)*prod(dd(end:-1:1)) 约束还有另外一种处理办法:
1。将约束坐标对应行列全置零,只有对角元置1
2。这相当于你现在的办法将约束处置行列归一化
另外,仅用刚度矩阵K似乎得不到振型。 前面得处置方法可以用来求位移,如果求振型还要对应地处理质量矩阵。 如何处理,我还没有碰到这方面的材料,遗憾!!!! 检查了一下你的数据。对角元上的各数据差异很大。建议你改变单位,或者用矩阵归一化对矩阵预处理,使得对角元的量级相当
ddd
ddd nvnvn nvnb n nv 这个问题我还是没解决掉,实在是困惑。后来又想了很多次,觉得应该是存在刚体位移。热情的人,继续帮我想想。多谢。 .
将原问题贴上来看看...
回复 楼主 skyismine 的帖子
不知道问题解决没有,对质量矩阵的处理可以采用类似方法,即在对角元给予一个大于零的小数,其他不用处理。 本帖最后由 VibInfo 于 2016-4-8 15:20 编辑原帖由 skyismine 于 2009-2-4 14:04 发表
这个问题我还是没解决掉,实在是困惑。
后来又想了很多次,觉得应该是存在刚体位移。热情的人,继续帮我想想。多谢。
我觉得,刚体位移多为低频或低阶振型。
是否可以采用施加约束的办法解决?
页:
[1]