Fortran Coder

标题: Fortran中满秩矩阵如何转化为压缩稀疏列(CSC)格式 [打印本页]

作者: dongtian99    时间: 2017-1-16 11:51
标题: Fortran中满秩矩阵如何转化为压缩稀疏列(CSC)格式
请问,Fortran中满秩矩阵如何转化为压缩稀疏列(CSC)格式的稀疏矩阵呀,有子程序吗,或者推荐哪里有相关内容呀

作者: pasuka    时间: 2017-1-16 13:31
请先把Tim Davis的这本入门书籍及其附带的C程序看完
Direct Methods for Sparse Linear Systems



作者: fcode    时间: 2017-1-16 15:34
CSC格式本身并不复杂。做个循环,把非零的数据选出来,并且把坐标(或坐标偏移)算出来挨个放就可以了。

但是更多的你应该考虑,存为CSC之后,你要怎么计算?你是否有CSC格式的计算代码?(或函数库?如果有函数库,那么为何不用函数库提供的转换方法?)
作者: dongtian99    时间: 2017-1-16 16:48
fcode 发表于 2017-1-16 15:34
CSC格式本身并不复杂。做个循环,把非零的数据选出来,并且把坐标(或坐标偏移)算出来挨个放就可以了。

...

您好,谢谢。我调用的是一个求解器,只需要向它提供CSC格式矩阵的三个一维数组就行(每列第一个非零元素的位置、每个非零元素的行号、数值)。求解器提供的例题矩阵比较小,它直接把这三个数组写出来了。但我组装后的矩阵矩阵比较大,现在不知道怎样由大矩阵获得那三个一维数组
作者: dongtian99    时间: 2017-1-16 16:48
pasuka 发表于 2017-1-16 13:31
请先把Tim Davis的这本入门书籍及其附带的C程序看完
Direct Methods for Sparse Linear Systems

好的,谢谢。我再看看
作者: fcode    时间: 2017-1-16 16:52
那就简单了。百度去看看 CSC/CSR 的存储方式就好了,200个字以内就可以解释清楚。
做个循环,把非零的数据选出来,并且把坐标(或坐标偏移)算出来挨个放就可以了
作者: dongtian99    时间: 2017-1-16 16:57
fcode 发表于 2017-1-16 16:52
那就简单了。百度去看看 CSC/CSR 的存储方式就好了,200个字以内就可以解释清楚。
做个循环,把非零的数据 ...

好的,我试试看。谢谢啦




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2