Fortran Coder

查看: 1966|回复: 7
打印 上一主题 下一主题

[数学库] mkl矩阵求逆计算结果与MATLAB计算结果不符,求助!!

[复制链接]

98

帖子

0

主题

0

精华

大师

F 币
658 元
贡献
293 点

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

楼主
发表于 2022-6-24 08:22:51 | 显示全部楼层
本帖最后由 胡文刚 于 2022-6-24 08:23 编辑

我用以下代码测试的结果是正确的。

  0.999999997206032      -1.490116119384766E-008  9.313225746154785E-010
  0.000000000000000E+000  0.999999992549419       0.000000000000000E+000
  1.490116119384766E-008  1.192092895507812E-007  0.999999992549419

[Fortran] 纯文本查看 复制代码
Program Main
  use lapack95
  implicit none
  integer , parameter :: N = 3
  real(kind=8) :: a(N,N),b(N),t(N,N)
  integer :: ipiv(N) = 0,info1,info2
  a=reshape([1.46989040000000d-09, 8.08439760000000d-10,-9.40729890000000d-09,&
             8.08439760000000d-10, 4.44641850000000d-10,-5.17401410000000d-09,&
            -9.40729890000000d-09,-5.17401410000000d-09, 6.02067090000000d-08],[N,N])
  t=a
  call dgetrf(n,n,a,n,ipiv,info1)
  call dgetri(n,a,n,ipiv,b,n,info2)
  write(*,*) matmul(a,t)
End Program Main

天之道,损有余而补不足

98

帖子

0

主题

0

精华

大师

F 币
658 元
贡献
293 点

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

沙发
发表于 2022-6-24 11:27:39 | 显示全部楼层
你都用双精度就好了。

如果你第一次运行是好的,循环中出了错。请优先怀疑是自己的问题。

除非fortran中很难实现,没有现成的东西,否则不要在fortran中调用matlab。麻烦,效率低,依赖度高。
天之道,损有余而补不足
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-6 17:14

Powered by Tencent X3.4

© 2013-2024 Tencent

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