Fortran Coder

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

[数学库] 关于调用MKL的dsyev问题。

[复制链接]

7

帖子

2

主题

0

精华

入门

F 币
36 元
贡献
20 点
跳转到指定楼层
楼主
发表于 2020-6-18 14:14:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我用的是VS+IVF。想调用lapack里面的dsyev,安装了MKL。根据教程在VS里面设置了工具的include和lib,在项目上设置了use MKL和link的input。在程序里面加上了use lapack95。

然后在一个demo上面测试dsyev,编译什么的都没有问题,可以得到结果,但是结果是错的。输入的矩阵和向量还是保持原来的值没变,好像dsyev什么事都没干,放进去什么还是输出什么。折腾了一晚上都没搞明白到底怎么回事。

demo是对一个2x2的矩阵做特征值分解。
[Fortran] 纯文本查看 复制代码
program hello
    use lapack95
    Real*8:: arr1(2,2)
    Integer:: info
    Real*8:: value(2)
    Real*8, allocatable:: works(:)
    Integer:: lworks
    !
    value = 1.
    arr1(1,1) = 2.08333333339971
    arr1(2,2) = 3.08333333342553
    arr1(1,2) = 2.50000000007744
    arr1(2,1) = 2.50000000007744
    lworks = -1
    allocate(works(10))
    print *,  value
    call dsyev("V", "U", 2, arr1, 2, value, works, lworks, info)
    print*,  value
    deallocate(works)
    end program hello

两次print出来的特征值都是1. 是最开始设置的。arr1也没有变化,好像dsyev在这里并没有做任何计算。

有没有大佬遇到过这种情况?



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

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
沙发
发表于 2020-6-19 01:04:58 | 只看该作者
两种方案,1、增大lworks,比如 10;
2、用f95接口,call syev(arr1,value)

[Fortran] 纯文本查看 复制代码
program hello
    use lapack95
    Real*8:: arr1(2,2)
    Integer:: info
    Real*8:: value(2)
    Real*8, allocatable:: works(:)
    Integer:: lworks
    !
    value = 1.
    arr1(1,1) = 2.08333333339971
    arr1(2,2) = 3.08333333342553
    arr1(1,2) = 2.50000000007744
    arr1(2,1) = 2.50000000007744
    lworks = 10
    allocate(works(10))
    call dsyev("V", "U", 2, arr1, 2, value, works, lworks, info)
	!call syev(arr1,value)
    print*,  value
    deallocate(works)
	pause
    end program hello

捕获.PNG (78.27 KB, 下载次数: 167)

捕获.PNG

7

帖子

2

主题

0

精华

入门

F 币
36 元
贡献
20 点
板凳
 楼主| 发表于 2020-6-22 12:18:16 | 只看该作者
li913 发表于 2020-6-19 01:04
两种方案,1、增大lworks,比如 10;
2、用f95接口,call syev(arr1,value)

解决了,感谢大佬!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-4-27 21:37

Powered by Tencent X3.4

© 2013-2024 Tencent

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