Fortran Coder

大佬们帮看看matmul函数的问题

查看数: 11901 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-5-21 19:56

正文摘要:

[Fortran] 纯文本查看 复制代码program main    implicit none    integer,parameter::NP = SELECTED_REAL_KIND(8)    real(Kind = NP)::emod,nu    real(Kind = NP),dimen ...

回复

旅人 发表于 2021-5-22 12:56:21
风平老涡 发表于 2021-5-22 00:37
因为在你的计算中有两个相近数值大小的数相减,产生的计算误差。
以下是6×6的矩阵乘以6×1的矩阵求和之前 ...

明白了  谢谢大佬
风平老涡 发表于 2021-5-22 00:37:54
本帖最后由 风平老涡 于 2021-5-22 11:21 编辑

因为在你的计算中有两个相近数值大小的数相减,产生的计算误差。
以下是6×6的矩阵乘以6×1的矩阵求和之前各个元素的乘积,红字体的数值相减会产生误差。后面一组蓝字体的数值产生同样结果。从所用的精度考虑,可以认为-5.2041704279304213E-018和 -6.9388939039072284E-018等同于0。

-0.36956520984199237        9.7826093418680333E-003   9.7826093418680333E-003   0.0000000000000000        0.0000000000000000        0.0000000000000000
总和= -0.34999999115825631

-6.5217393020947201E-002   5.5434783679079162E-002   9.7826093418680333E-003   0.0000000000000000        0.0000000000000000        0.0000000000000000     
总和=  -5.2041704279304213E-018; 前两项之和= - 9.782609341868039e-3


-6.5217393020947201E-002   9.7826093418680333E-003   5.5434783679079162E-002   0.0000000000000000        0.0000000000000000        0.0000000000000000     
总和=  -6.9388939039072284E-018;前两项之和= - 5.54347836790791677e-2


  -0.0000000000000000        0.0000000000000000        0.0000000000000000        0.0000000000000000        0.0000000000000000        0.0000000000000000     
总和=   0.0000000000000000     
  -0.0000000000000000        0.0000000000000000        0.0000000000000000        0.0000000000000000        0.0000000000000000        0.0000000000000000     
总和=   0.0000000000000000     
  -0.0000000000000000        0.0000000000000000        0.0000000000000000        0.0000000000000000        0.0000000000000000        0.0000000000000000     
总和=   0.0000000000000000

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 21:55

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表