雅各比迭代matlab代码萨阿德的书中有一些“ ForTran” 优素福·萨阿德(Yousef Saad)教授的书“”的一些“公式翻译”。 所有代码均使用MATLAB编写,并遵循Saad的书或列出的参考文献中给出的算法。 我还提到了Saad教授的参考资料:。 这些代码是供我学习和练习的,仅检查了一些测试用例。 算法索引 第4章:基本的迭代方法((在目录Chapter4 )) Jacobi迭代; 高斯-赛德尔迭代; Block Jacobi迭代(用于在第11章中说明并行的Block Jacobi预处理器); 块高斯-赛德尔迭代。 第6和7章:Krylov子空间方法,在 (重新启动)完全正交化方法(FOM); (重新启动)GMRES(与Arnold / Householder正交归一化); 共轭梯度(CG); 共轭残基(CR); 稳定/不稳定的双共轭物梯度(BiCG / BiCGStab)。 第9章:条件迭代 左预处理重新启动GMRES; 左预处理共轭梯度。 第10章:预处理技术(在目录Chapter10 ) (已修改)使用压缩稀疏行(CSR)格式矩阵作为输入和输出,具有零填充(MILU(
2021-11-28 20:12:32 104KB 系统开源
1
c++利用稀疏矩阵运算器三元组求解,算法比较简单,
2021-11-28 18:39:15 15KB 稀疏矩阵运算器
1
围绕二元关系的传递闭包分析比较了著名的Warshall算法,给出了一个加列算法。当关系矩阵是稀疏矩阵时,该算法效率比Warshall算法高。
2021-11-28 17:11:51 328KB 论文研究
1
此程序实现了用三元组输入稀疏矩阵 并实现了稀疏矩阵的加法,减法和乘法。
2021-11-28 10:58:09 1KB 稀疏矩阵 加法 减法
1
一种新的特征矢量稀疏重构的DOA估计方法
2021-11-27 21:06:38 2.44MB 研究论文
1
建造 地位 OpenVDB OpenVDB AX | | OpenVDB是一个开源C ++库,它包含新颖的分层数据结构和大量工具,用于有效存储和处理离散在三维网格上的稀疏体积数据。 它是由DreamWorks Animation开发的,用于故事片制作中通常遇到的体积应用程序。 开发资料库 该GitHub存储库托管OpenVDB开发的主干。 这意味着它是具有最新功能和错误修复的最新公共版本。 但是,这也意味着它没有经过大量测试,并且通常不如稳定。 执照 OpenVDB是根据 ( )发行的,该是由Mozilla Foundation开发和维护的免费开源软件许可证。 未经贡献者的明确许可,不得将任何与该项目有关的商标与该项目结合使用。 贡献 OpenVDB欢迎为OpenVDB项目做出贡献。 请参阅以了解有关如何的详细信息。 开发人员快速入门 以下提供了核心OpenVDB库的基本安装示例
2021-11-25 17:04:32 2.95MB c-plus-plus voxel voxelizer fx
1
详细的讲述了信号的稀疏表示和稀疏分解问题,很适合做开题报告。
2021-11-25 11:34:40 302KB 信号 稀疏表示 稀疏分解 压缩感知
1
近年来,随着压缩感知技术在信号处理领域的巨大成功,由其衍生而来的矩阵补全技术也日益成为机器.学习领域的研究热点,诸多研究者针对矩阵补全问题展开了大量卓有成效的研究.为了更好地把握矩阵补全技术的.发展规律,促进矩阵补全理论与工程应用相结合,本文针对矩阵补全模型及其算法进行综述.首先对矩阵补全技术进.行溯源,介绍了从压缩感知到矩阵补全的自然演化历程,指出压缩感知理论的发展为矩阵补全理论的形成奠定了基.础;其次从非凸非光滑秩函数松弛的角度将现有矩阵补全模型进行分类,旨在为面向具体应用的矩阵补全问题建模.提供思路;接着综述了适用于矩阵补全模型求解的代表性优化算法,其目的在于从本质上理解各种矩阵补全模型优.化技巧,从而有利于面向应用问题的矩阵补全新模型求解;最后分析了矩阵补全模型及其算法目前存在的问题,提出.了这些问题可能的解决思路,并对未来研究方向进行了展望.
1
输入要求:稀疏矩阵的行、列和非零元素个数 以及每个非零元素在矩阵的位置 以三元组格式存储稀疏矩阵 输出要求:根据选项输出 稀疏矩阵的转置、加法、减法、乘法
2021-11-25 00:43:31 218KB 稀疏矩阵
1
#include #define maxsize 100 typedef struct { int i,j; //该非零元的行和列 int v; //该非零元的值 }triple; typedef struct { triple data[maxsize]; //非零元三元组表,data[0]未用 int rpos[maxsize]; int m,n,t; //矩阵的行数,列数和非零元个数 }tripletable; void convert() //矩阵的转置 { int k; tripletable A,B; printf("输入稀疏矩阵A的行数,列数和非零元个数:"); scanf("%d %d %d",&A.m,&A.n,&A.t); for(k=1;k<=A.t;k++) { printf("输入第%d个非0元素的行数,列数和值:",k); scanf("%d %d %d",&A.data[k].i,&A.data[k].j,&A.data[k].v); } B.m=A.m;B.n=A.n;B.t=A.t; if(B.t) { int p; int q=1,col; for(col=1;col<=A.n;++col) { for(p=1;p<=A.t;++p) { if(A.data[p].j==col) { B.data[q].i=A.data[p].j; B.data[q].j=A.data[p].i; B.data[q].v=A.data[p].v; ++q; } } } int shuru[100][100]={0}; for(k=1;k<=B.t;k++) { shuru[B.data[k].j][B.data[k].i]=B.data[k].v; } printf("输入为:\n"); for(k=1;k<=B.m;k++) { int l; for(l=1;l<=B.n;l++) printf("%d ",shuru[k][l]); printf("\n"); } int result[100][100]={0}; for(k=1;k<=B.t;k++) { result[B.data[k].i][B.data[k].j]=B.data[k].v; } printf("结果为:\n"); for(k=1;k<=B.n;k++) { int l; for(l=1;l<=B.m;l++) printf("%d ",result[k][l]); printf("\n"); } } } void add() //矩阵的加法 { int k; tripletable A,B; printf("输入稀疏矩阵A的行数,列数和非零元个数:"); scanf("%d %d %d",&A.m,&A.n,&A.t); for(k=1;k<=A.t;k++) { printf("输入第%d个非0元素的行数,列数和值:",k); scanf("%d %d %d",&A.data[k].i,&A.data[k].j,&A.data[k].v); } printf("输入稀疏矩阵B的行数,列数和非零元个数:"); scanf("%d %d %d",&B.m,&B.n,&B.t); for(k=1;k<=B.t;k++) { printf("输入第%d个非0元素的行数,列数和值:",k); scanf("%d %d %d",&B.data[k].i,&B.data[k].j,&B.data[k].v); } if(A.m!=B.m||A.n!=B.n) { printf("输入错误:A与B的行数或列数不相同,请重新输入\n"); return; } int a[100][100]={0}; for(k=1;k<=A.t;k++) { a[A.data[k].i][A.data[k].j]=A.data[k].v; } printf("A输入为:\n"); for(k=1;k<=A.m;k++) { int l; for(l=1;l<=A.n;l++) printf("%d ",a[k][l]); printf("\n")
2021-11-25 00:30:01 730KB 数据结构
1