UMFPACK学习(一)

本文介绍了UMFPACK库,用于求解稀疏矩阵方程,特别是非对称矩阵。UMFPACK基于非对称多波前算法,支持LU分解。文章详细讲解了如何在C程序中使用UMFPACK,包括symbolic和numeric分解,以及solve、free_symbolic和free_numeric五个步骤,并给出了稀疏矩阵的compressed column form表示方法和一个小示例。
摘要由CSDN通过智能技术生成

引子

最近毕设论文中需要求解如下的稀疏矩阵方程:Ax=b,

现在采用Eigen中的SparseLDLT进行求解,无奈速度有点慢。所以开始寻找其他的求解库,找到了UMFPACK。

UMFPACK就是求解类似于Ax=b这样问题的一个库,来自佛罗里达州立大学。可以直接到http://www.cise.ufl.edu/research/sparse/umfpack/去下载对应的包然后编译得到Windows下的lib,包含到自己的工程就可以了。今天下午看了看UMFPACK的guide ,稍微总结一下。

 

什么是UMFPACK

UMFPACK是专门求解类似于Ax=b这样的稀疏矩阵方程的一个库,一般情况下A 是稀疏非对称的矩阵。它是基于非对称的多波前算法( Unsymmetric-pattern MultiFrontal method )对稀疏矩阵方程进行求解的。UMFPACk可以对PAQ,PRAQ,PR-1AQ 这样的矩阵进行 LU分解(L U 分别是下三角矩阵和上三角矩阵,PQ是可置换矩阵,R是对角阵) 。这里有一个概念:reduce fill-in (减少注入元),稀疏矩阵的注入元是指执行算法后从初始的零值变为非零值的那些元素。

UMFPACK现在最新的版本是5.6。UMFPACK可以再matlab 中使用,也可以用到C程序中。接下来我们主要介绍如何在C程序中使用。

 

如何在C中使用UMFPACK

根据稀疏矩阵的非零元素个数以及是否实数,UMFPACK主要提供以下几个种类的函数供调用:

1.umfpack_di_*:  非零元素的个数为 int 型,元素为实数

2.umfpack_dl_*:  非零元素的个数为 SuiteSparse_long型,元素为实数

3.umfpack_zi_*:   非零元素的个数为 int 型,元素为复数

4.umfpack_zl_*:  非零元素的个数为 SuiteSparse_long型,元素为复数

根据不同的情况可调用不同的函数,接下来我们就来看看 上述函数中的 * 都代表什么。主要有以下5个函数,也是用来求解Ax=b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值