Fortran Coder

查看: 255|回复: 2

[求助] matmul函数计算错误

[复制链接]

6

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
29 点
发表于 2019-5-6 22:37:59 | 显示全部楼层 |阅读模式
本帖最后由 尾生 于 2019-5-6 22:40 编辑

[Fortran] 纯文本查看 复制代码
do i=0,IIX
      temp_matrix=matmul(alpha_block(:,:,i),Deta_block(:,:,i-1))
      temp_beta=beta_block(:,:,i)-matmul(temp_matrix,gamma_block(:,:,i-1))
      call inverse(temp_beta,Deta_block(:,:,i))
      new_bb(:,i:i)=-bb_block(:,i:i)-matmul(temp_matrix,new_bb(:,i-1:i-1))
    end do


最近编写了一个求解器,程序运行的结果出现非物理的值,调试后发现是上面这一段代码出现了问题。alpha_block(:,:,0)和Deta_block(:,:,-1)这两个数组的值都没问题,但通过matmul函数运算之后出现了NaN的元素,十分不解,按理说matmul是Fortran库函数不应该计算错误,大概率是我引用函数出现了问题但自己想不出来,所以想向各位老师们请教一下是什么原因导致的呢?循环第一步的相关数组的值在附图中。感谢各位!

Snipaste_2019-05-06_22-19-25.png Snipaste_2019-05-06_22-17-40.png Snipaste_2019-05-06_22-20-46.png

回复

使用道具 举报

699

帖子

0

主题

0

精华

大师

F 币
698 元
贡献
389 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2019-5-7 07:44:19 | 显示全部楼层
这个不太容易判断。
你可以试试把这俩数组的值保存起来,用一个简单的代码读进来,然后再试试。
如果还有问题,提供保存起来的文件(上传)和简单的代码,我们一起看一下怎么回事。

6

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
29 点
 楼主| 发表于 2019-5-7 11:50:29 | 显示全部楼层
vvt 发表于 2019-5-7 07:44
这个不太容易判断。
你可以试试把这俩数组的值保存起来,用一个简单的代码读进来,然后再试试。
如果还有问 ...

谢谢您,我试了一下发现不是matmul函数的原因。我给的alpha_block和deta_block数组是i=0时的值,但这时候程序已经运行到i=1998了,发现这时候alpha_block的值出现了异常,应该是我前面求解这个数组的时候出了问题。我再好好调试一下。十分感谢您的回复。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-8-21 12:47

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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