Fortran Coder

查看: 9024|回复: 2
打印 上一主题 下一主题

[求助] matmul函数计算错误

[复制链接]

6

帖子

2

主题

0

精华

入门

F 币
60 元
贡献
33 点
跳转到指定楼层
楼主
发表于 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库函数不应该计算错误,大概率是我引用函数出现了问题但自己想不出来,所以想向各位老师们请教一下是什么原因导致的呢?循环第一步的相关数组的值在附图中。感谢各位!



分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

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

6

帖子

2

主题

0

精华

入门

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

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

本版积分规则

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

GMT+8, 2024-5-17 02:47

Powered by Tencent X3.4

© 2013-2024 Tencent

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