我有一个用Fortran和Julia编写的程序,其中一个案例是我有对称矩阵 我得到的结果或多或少与两个程序相似。当我切换到我有Hermitian矩阵的情况时,Julia中的程序和Fortran中的程序给了我不同的东西。我猜可能差异来自对角化过程,在Fortran我使用:
ZHEEVD(..)
而在朱莉娅,我只是使用:
eig(matrix)
我注意到的第一件事是ZHEEVD
将特征向量矩阵的第一行固定为实数(没有虚部),而eig
将最后一行固定为实数。
知道如何克服这些微小的差异吗?处理julia的线性代数内置函数时,还有什么更有用的信息吗?
答案 0 :(得分:1)
深入研究Julia方法(@less
宏非常方便),你会发现它最终会调用LAPACK.syevr!
方法,Complex128
{ {3}}(向下滚动一下以查看实际定义)。
如果您希望继续使用ZHEEVD
,可以通过ccall
界面访问它:请参阅is a wrapper for the ZHEEVR
LAPACK method上的手册部分。上面链接的LAPACK包装器应该提供大量示例(LAPACK是OpenBLAS的一部分,它包含在Julia中,因此您不需要安装任何其他内容)。