问题标签 [suitesparse]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在 CHOLMOD 或 SuiteSparseQR 中创建稀疏矩阵
在SparseSuiteQR中,我能找到的所有示例都使用标准输入或读取文件来创建稀疏矩阵。有人可以提供一个简单的例子来说明如何直接在 C++ 中创建一个吗?
更好的是,在 CHOLMOD 文档中,提到了 matlab 中可用的 sparse2 函数,它的行为与 sparse 相同。这可以在 C++ 中使用吗?
c++ - 如何使用 CHOLMOD 将元素添加到三元组矩阵?
谁能给我一个简单的例子,说明如何使用CHOLMOD将元素添加到三元组矩阵。
我尝试过这样的事情:
但是,这不会向矩阵添加任何元素。我只是得到输出:
当然,我尝试通过搜索和CHOLMOD 文档找到解决方案,但没有找到任何帮助。
c - CHOLMOD 稀疏矩阵 Cholesky 分解:不正确的因素?
我一直在使用 CHOLMOD 分解矩阵 A 并求解系统 Ax = b,因为 A 是 Hessian 矩阵(打印在下面)和 b = [1, 1, 1] 由cholmod_ones
函数创建。
不幸的是,x 的解决方案是不正确的(应该是 [1.5, 2.0, 1.5])并且确认我然后将 A 和 x 相乘并没有得到 [1, 1, 1]。我不太明白我做错了什么。
此外,我查看了因素,矩阵元素的值也没有意义。
输出
代码
iterate_hessian()
是一个外部函数,它返回读入 CHOLMOD hessian 矩阵的双精度数。
代码的入口点cholesky_determinant
是用一个参数调用的,该参数给出(方形)矩阵的维数。
c++ - 使用 Cholmod 和 Cholmod-Extra 计算稀疏矩阵的逆
我最近安装Cholmod
是为了在一些 C++ 代码中执行稀疏 Cholesky 分解。然后我想使用 decomp 来计算矩阵逆(我有以下问题:
其中d
是一个向量^T
表示转置,A
并且B
是稀疏的)
我想计算 的实际倒数B
,然后可以线性求解涉及总和的解。调用它的代码如下:
我发现https://cholmod-extra.readthedocs.org/en/latest/functions.html这个函数是用来计算倒数的,但它给了我一些与倒数平方相关的东西,而不是倒数。我只是想知道是否有人有使用它的经验,或者在 C++ 中计算稀疏矩阵的逆矩阵的等价物。
干杯林德利
c - 如何从 IDE 编译 CHOLMOD 库(SuiteSparse)
一段时间以来,我试图从SuiteSparse创建一个静态 CHOLMOD 库每个其他库(例如 Umfpack)都可以从 IDE 轻松编译(我在 Linux 上使用 Code::Blocks,在 Windows 上使用 Visual Studio)。但是,当尝试编译 CHOLMOD 时,我会遇到一堆语法错误,例如:
我调查了缺少一些#defines(例如PATTERN,REAL定义),因此TEMPLATE的那些定义是不可见的。我在文件和 makefile 中搜索了它们,但一无所获。但是,当键入 make(在 Linux 上)时,库编译得很好。我错过了什么?
c - 当稀疏矩阵变得太密集时,CHOLMOD 超节点分解失败
我在 SuiteSparse 中使用 CHOLMOD 来分解一个相对稀疏N
的N
大带对角矩阵,即它只包含几个非零的对角线。矩阵的稀疏性由协方差长度参数 设置l
。l
非零非对角线元素的数量越大。
当l
变大并且许多元素不为零时,超节点 CHOLMOD 分解突然开始失败,并出现错误消息“CHOLMOD 警告:矩阵不是正定的”。通过使用单独的 Python 实现检查数学,我知道矩阵应该是正定的。此外,当我从
至
然后分解将成功。对于下面的以下代码示例,只要l < 2.5
. 如果我增加l >= 3.0
,我会得到矩阵不是正定的错误。然而,如果我随后选择 CHOMOD_SIMPLICIAL,分解将成功。谁能帮我确定为什么 CHOLMOD_SUPERNODAL 在一定的稀疏度/密度之上突然失败?谢谢!
c - cholmod 长版本函数返回空指针 - c 编程
我正在使用通过 macports 安装的 SuiteSparse @4.2.1_3 并希望分配一个 cholmod_dense 结构。考虑以下代码:
我得到以下输出:
这意味着长版本中的分配cholmod_dense
结构不起作用,但整数版本效果很好。有谁知道发生这种情况的原因?
c - 乘以 CHOLMOD 中的超节 L?
如何cholmod_factor
在超节点 LL^T 因式分解中乘以 L?我不希望转换为单纯的,因为超节点表示会导致更快的反解,并且我不希望复制该因子,因为两个副本可能不适合 RAM。
python - NameError 与 Python Swig 尝试连接 cholmod 库
我正在尝试为 C Cholmod库创建一个 Python 接口,它是SuiteSparse库 ( SuiteSparse ) 的一部分。
由于我是 Swig 的新手,我不知道这是否是一项艰巨的任务。我没有在 Swig 中找到对这个接口的任何引用。
编译没有问题。
这是我尝试导入 swig 生成的“_cholmod.py”文件时遇到的错误:
这个名字是在哪里定义的? 在我尝试导入扩展之前,快速 grep 不会返回任何内容 ,但是在我尝试导入它之后:
我在用着:
- SWIG 版本 3.0.5 使用 g++ [x86_64-unknown-linux-gnu] 编译配置选项:+pcre
- SuiteSparse 4.4.3 中的 cholmod 库
这是一个最小的例子:
文件 setup.py:
我这样调用它:
文件 cholmod.i:
我怀疑 typedef 和 C 结构存在问题,但在阅读了一遍又一遍教程、官方文档、演示文稿之后,我真的不知道我错过了什么。
有人可以在这里帮助我吗?非常感谢!
c++ - cholmod_factorize 分段错误。如何定位错误?
如果这个问题太模糊或太天真,我很抱歉
我正在实现一些基于优化的网格变形算法优化的最后一步是通过稀疏求解器求解大稀疏矩阵
我使用 cholmod 来完成这项任务。但在某些情况下,我在 cholmod_factorize 上收到段错误
所以我的问题是在哪些情况下 cholmod_factorize 会引发段错误?我怎样才能找到问题的根源?
我不能在这里提供一个矩阵,因为这个矩阵真的很大(9000+ 行和列,45000 个非零项)。对于许多情况(8000+ 行/列),矩阵的组合是可以的,算法工作正常。我尝试使用 cholmod_commmon 的 error_handler 但我没有收到任何东西
PS对不起我的英语
UPD 似乎程序失败了,然后 L->is_super 为真