24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1387  |  回复: 6

徐谊

木虫 (著名写手)

[求助] fortran求矩阵本征值出错已有2人参与

在用Fortran求矩阵本征值的时候,调用了MKL里面的DSYEVD函数,程序可以运行,但是好像并没有执行这一语句。
程序如下:
CODE:
program test_mkl
   
      
      IMPLICIT NONE
      INTEGER          N
      PARAMETER        ( N = 2 )
      INTEGER          LDA
      PARAMETER        ( LDA = N )
      INTEGER          LWMAX
      PARAMETER        ( LWMAX = 1000 )

      INTEGER          INFO, LWORK, LIWORK

      
      INTEGER          IWORK( LWMAX )
      DOUBLE PRECISION A( LDA, N ), W( N ), WORK( LWMAX )
      

      DATA A/1,3,3,4/
      
      WRITE(*,*)'DSYEVD Example Program Results'
      
      LWORK = -1
      LIWORK = -1
     
      CALL DSYEVD ( 'V', 'U', N, A, LDA, W, WORK, LWORK,IWORK, LIWORK, INFO )
      
         
     ! Print eigenvalues.
      PRINT *, 'Eigenvalues', W

     ! Print eigenvectors.

      PRINT *, 'Eigenvectors (stored columnwise)', A
      
      STOP
   
    end

程序运行没问题!  但是CALL DSYEVD ( 'V', 'U', N, A, LDA, W, WORK, LWORK,IWORK, LIWORK, INFO ) 这一句貌似没有执行,因为返回的结果还是原来的矩阵!
请问这是什么问题呢?谢谢!

fortran求矩阵本征值出错
1.jpg
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wlscj

木虫之王 (文坛精英)

【答案】应助回帖

感谢参与,应助指数 +1
调用了MKL里面的DSYEVD函数?

DSYEVD 是个啥?
2楼2014-11-06 19:17:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

徐谊

木虫 (著名写手)

引用回帖:
2楼: Originally posted by wlscj at 2014-11-06 19:17:22
调用了MKL里面的DSYEVD函数?

DSYEVD 是个啥?

嗯,是的。求本征值的
?syevd
Computes all eigenvalues and (optionally) all
eigenvectors of a real symmetric matrix using divide
and conquer algorithm.
3楼2014-11-06 19:23:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wlscj

木虫之王 (文坛精英)

引用回帖:
3楼: Originally posted by 徐谊 at 2014-11-06 19:23:50
嗯,是的。求本征值的
?syevd
Computes all eigenvalues and (optionally) all
eigenvectors of a real symmetric matrix using divide
and conquer algorithm....

没看到这个子程序啊

subroutine DSYEVD ( 'V', 'U', N, A, LDA, W, WORK, LWORK,IWORK, LIWORK, INFO )
4楼2014-11-07 06:03:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wlscj

木虫之王 (文坛精英)

【答案】应助回帖

也不明白MKL是个啥?是你用fortran软件平台上自带的 程序库模块?
MKL里面的DSYEVD

是不是要

USE MKL?
5楼2014-11-07 06:09:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

徐谊

木虫 (著名写手)

引用回帖:
5楼: Originally posted by wlscj at 2014-11-07 06:09:51
也不明白MKL是个啥?是你用fortran软件平台上自带的 程序库模块?
MKL里面的DSYEVD

是不是要

USE MKL?

对的,是vs自带的函数库!应该不用加use mkl吧,因为另外的函数运行就没问题,不知道为啥

[ 发自手机版 http://muchong.com/3g ]
6楼2014-11-07 09:37:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fish.yfyh

铜虫 (小有名气)

【答案】应助回帖

调用mkl库函数,只需要在编译的时候,添加调用静态库或动态库即可。例如:

$ ifort test.f90 -L/path/to/mkl/lib.a
7楼2014-11-19 14:04:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 徐谊 的主题更新
信息提示
请填处理意见