zoukankan      html  css  js  c++  java
  • 关于zero pivot

    下面是运行一个adams/car模型出现的错误。

    ---- ERROR ----
       The system matrix has a zero pivot for column 2142, which is associated
       with VARIABLE/64 Algb Var.  Consequently, the matrix is numerically singular.

    错误分析

    大家可能都清楚当出现zero pivot错误的时候,一般是model中出现了过约束(over constraint)或者是约束不够而导致rigid mode. 以前我是把这当做一条理论来记得,原因比较模糊,今天把它搞搞清楚,落在文字上与大家分享。说pivot, 得先从高斯消元讲起。有限元软件求解刚度矩阵时,一般是用高斯消元。对于高斯消元,大家应该比较熟悉,这是一种基于先正向消元,再反向迭代求解的求解办法(It is based on triangularization of the coefficient matrix and evaluation of the unknowns by back-subsitution starting from the last equation)。高斯消元后的矩阵是这样的

    | a11  a12   a13  a14… a1n  |      x1       c1

    | 0      a22   a23  a24… a2n  |      x2       c2

    | 0      0       a33  a34…a3n   |      x3       c3

    | 0      0       0      a44…a4n  |   {  x4}={c4}

    | ………………………… .......|      …       …

    | 0      0        0        0 … ann |       xn      cn

    这样第一步先求出xn,第二步就可以求出x(n-1),如此类推。在这个矩阵中每行的第一个非零的系数就是pivot。那么zero pivot的意义就明确了,就是指在高斯消元后的刚度矩阵中出现了一个全为零的一行。一个原因是出现了过构束,就好比去用10个方程去解一个9个未知数,一定有一个方程可以消去。多余那个方程有可能与原有的某一方程等价,也有可能与某一方程冲突,但结果都是zero pivot。 另一个原因是约束不够,有力,但与之对应没有刚度,无疑会出现zero pivot。

    如果是约束不够时,一般在message file里还会出现NUMERICAL SINGULARITY warnings。这一般是因为力除以0刚度出现了无穷大的位移。

  • 相关阅读:
    电话聊天狂人
    PAT 1080. MOOC期终成绩
    PAT 1079. 延迟的回文数
    [转载]matlab 中序列求极值的方法
    [转载][转]Matlab-寻找峰值函数
    [转载]Kirchhoff Migration Impulse Response
    Envelope Extraction Using the Analytic Signal
    [转载]地震动的挑选
    C笔记
    Git常用有用命令
  • 原文地址:https://www.cnblogs.com/xpvincent/p/3629951.html
Copyright © 2011-2022 走看看