添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
计算矩阵指数,matlab直接可以用expm,但是fortran笔者了解到MKL好像还没有子程序直接可以使用
闲暇之余,给出一个求矩阵指数的fortran代码仅供参考
代码如下,如有必要,读者为了以后的方便也可将下面代码直接封装
program test_expm
        use lapack95
        implicit none
        integer, parameter :: n = 3
        integer :: i, info, ipiv(n)
        real :: a(n,n), wr(n), wi(n), vr(n,n), vl(n,n)
        real :: temp(n,n)
        a = reshape([1, 1, 0, 0, 0, 2, 0, 0, -1],shape(a))
        a = transpose(a)
        call geev(a, wr, wi, vl, vr, info)
        write(*,*) '特征值为:'
        write(*,'(*(f10.4))') wr
        write(*,*) '特征向量为:'
        do i = 1, n
                write(*,'(*(f10.4))') vr(i,:)
        end do
        if (info == 0) then
                write(*,*) '特征值与特征向量计算成功!'
                write(*,*) '特征值与特征向量计算失败!'
        end if
        write(*,*)
        write(*,*) '开始计算矩阵指数......'
        temp = 0.
        forall( i = 1:n ) temp(i,i) = exp(wr(i))
        vr = vl
        call getrf(vr, ipiv)
        call getri(vr, ipiv)  !// 求特征向量的逆矩阵
        !// 计算矩阵指数
        a = matmul(matmul(vl,temp),vr)
        write(*,*) '矩阵A的矩阵指数为:'
        do i = 1, n
                write(*,'(*(f10.4))') a(:,i)
        end do
end program test_expm
执行结果如下
 特征值为:
    1.0000    0.0000   -1.0000
 特征向量为:
    1.0000   -0.7071    0.4082
    0.0000    0.7071   -0.8165
    0.0000    0.0000    0.4082
 特征值与特征向量计算成功!
 开始计算矩阵指数......
 矩阵A的矩阵指数为:
    2.7183    1.7183    1.0862
    0.0000    1.0000    1.2642
    0.0000    0.0000    0.3679
如有必要,读者可与matlab结果检验一下。
要注意的地方:如果所求矩阵阶数较大,比如几千阶,程序中的matmul函数建议更换为MKl中的gemm计算
具体可参考https://blog.csdn.net/chd_lkl/article/details/94437455
还有就是阶数过大,在求逆矩阵那一块如有必要,也可进行适当修改
计算矩阵指数,matlab直接可以用expm,但是fortran笔者了解到MKL好像还没有子程序直接可以使用闲暇之余,给出一个求矩阵指数的fortran代码仅供参考代码如下,如有必要,读者为了以后的方便也可将下面代码直接封装program test_expm use lapack95 implicit none integer, parame...
这篇博文简要记录一下 使用 MKL 函数库 计算 一般 矩阵 的特征值与特征向量 对形如对称 矩阵 或是埃尔米特等特殊 矩阵 有其对应的子程序,在这里先不涉及。有需求的可以自行查阅 MKL 官方文档 下面给出本次示例代码:代码 使用 f95接口。f77借口参数太多,笔者太懒<不过懒惰是创新的原动力^_^> program testGeev use lapack95 implicit...
这里写自定义目录标题欢迎 使用 Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎 使用 Markdown编辑器 你好! 这是你第一次 使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何 使用 Mar
这里写自定义目录标题安装oneAPI(Intel Fortran 编译器)尝试 MKL Fortran C++ 安装oneAPI(Intel Fortran 编译器) Intel oneAPI Base Toolkit Intel oneAPI HPC Toolkit 可以选择下载安装或者在线安装,下载的话需要用教育邮箱登陆。 尝试 MKL 库 参考官方文档Symmetric Eigenproblems。 Fortran program main implicit none integer*4,
Intel visual Fortran 调用 MKL MKL 是 BLAS, LAPACK 和 ScalLAPACK 等 函数库 集成的数学例程。其中,Lapack 包含了求解科学与工程 计算 中最常见的数值线性代数问题。 1)关于调用 MKL IVF的设置 a)项目——属性—— Fortran ——Libraries——Use Intel Math Kernel Library ——Parallel
行的定义。在自由格式中每行可以书写132个字符。程序语句的位置没有了只能从第7列后开始书写的固定约定,可以在任意一列开始书写。同一行中可以顺序书写多条程序语句,语句之间用分号“;”进行分隔。 •注释行的定义。在自由格式中,惊叹号“!”后的字符均被视为注释。但是,字符串中的“!”出外,如“PRINT *, ‘Hello! Fortran 90/95’”中,“ Fortran 90/95’”不会被认为
intel visual fortran 2019是一种效率较高的编译器。 实测下来比g fortran 能快好多。(没有太修改编译选项的情况下) mkl 库是intel visual fortran 2019 的一个数学库,里面有Fourier变换,随机数生成, 矩阵 乘法等功能,(我记得好像它的帮助文件竟然有三千多页)。 在编译选项中 添加 /Q mkl 即可。 如未 使用 mkl 库时, ifort test...
最近借用了师兄的服务器,得在Linux下运行 fortran 。今天花了点时间找资料,配置成功了。在这里记录一下怎样在Linux下配置 mkl 库。首先,在装好oneAPI的情况下,oneAPI是自动包含 mkl 库的,无需另外下载。要是用 mkl 库,只需要配置环境变量即可!具体操作请看下文。 配置环境变量:进入终端, 使用 下面代码找到oneAPI的安装路径: whereis ifort 然后可以看到 得到这些路径后 $ vim ~/.bashrc /* 以下内容在.bashrc中添加 */ export L
最近因为读研需要,刚开始学习 Fortran ,恰好要用到 MKL 库。记录一下配置并调用 MKL 库。 在装好VS2019与oneAPI的情况下,oneAPI是包含有 MKL 库的,不需要另外下载 MKL 。 首先新建一个项目,打开“工具”→“选项”→“Intel Compiles and Libraries”→“”
fortran 语言编写数值程序时,如果要 计算 一个大型稀疏 矩阵 与一个向量的乘积,可以 使用 下面高效的方法 1. 首先 使用 CSR格式大型稀疏 矩阵 进行存储 2. 调用 mkl 函数库 中的 mkl _dcsrsymv 计算 这样做的目的不仅可以节约内存,而且 计算 速度也比较快 示例代码如下: program mkl _symv implicit none integer, parameter ...
符号约定: l  I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。 l  s:P表示s类型为P类型(任意kind值)。s:P(k)表示s类型为P类型(kind值=k)。 l  […]表示可选参数。 l  *表示常用函数。 dna049: 请问 Ubuntu 上怎么搞呢? Fatal Error: Cannot open module file ‘lapack95.mod’ for reading at (1): No such file or directory compilation terminated. Fortran:用csr存储格式并使用pardiso求解稀疏矩阵 chder_白南: 把参数mtype的值改成mtype = 11