Fortran Coder

标题: matmul函数计算错误 [打印本页]

作者: 尾生    时间: 2019-5-6 22:37
标题: matmul函数计算错误
本帖最后由 尾生 于 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库函数不应该计算错误,大概率是我引用函数出现了问题但自己想不出来,所以想向各位老师们请教一下是什么原因导致的呢?循环第一步的相关数组的值在附图中。感谢各位!




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

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




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2