回 帖 发 新 帖 刷新版面

主题:[讨论]求助:CVF下imsl计算行列式

请教:
我使用imsl库的det计算行列式,发现矩阵值很大时,算的有问题诶,如下:

[u]real :: a(2,2),value
  a=2e10
  value=det(a)
print *,'该方阵的行列式值为',value[/u]

该矩阵内各个位置值相同,理论上其行列式应该是0
但,
若取a=2e10,则输出的值为1.813..e13
若取a=2e0,则输出的值为-1.656..e-8

。。。。这让我很疑惑啊,请教各位大牛,这是什么原因??

PS:我是在做有限元刚度矩阵计算的,理论上都该为0,但。。。甚是疑惑

回复列表 (共2个回复)

沙发

DET对于行列式值为0或非常接近于0的矩阵会失效!因为它会使用lin_sol_lsq来解方程,而系数矩阵就是您提供的矩阵~~~~

板凳

我猜是a=2e10取得太大,使det()计算过程中产生数值误差?

我来回复

您尚未登录,请登录后再回复。点此登录或注册