首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一种方法可以找出哪个直接的求解器正在使用解题()?

是否有一种方法可以找出哪个直接的求解器正在使用解题()?
EN

Stack Overflow用户
提问于 2021-06-07 23:43:41
回答 1查看 136关注 0票数 1

如标题所述,是否有一种方法可以找出在R中,哪个矩阵分解应用了给定稀疏矩阵的函数?例如,在Matlab中有一个spparms('spumoni', 2);,它返回了用于求解稀疏矩阵分解的算法的一些信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-08 01:10:45

好吧,运行R可以到达

代码语言:javascript
运行
复制
> methods(solve)

它将产生

代码语言:javascript
运行
复制
[1] solve.default solve.qr

如果你打字

代码语言:javascript
运行
复制
> solve.default

你会回来的

代码语言:javascript
运行
复制
function (a, b, tol = .Machine$double.eps, LINPACK = FALSE, ...)
{
    if (!missing(LINPACK))
        warning("the LINPACK argument has been defunct since R 3.1.0")
    if (is.complex(a) || (!missing(b) && is.complex(b))) {
        a <- as.matrix(a)
        if (missing(b)) {
            b <- diag(1 + (0+0i), nrow(a))
            colnames(b) <- rownames(a)
        }
        return(.Internal(La_solve_cmplx(a, b)))
    }
    if (inherits(a, "qr")) {
        warning("solve.default called with a \"qr\" object: use 'qr.solve'")
        return(solve.qr(a, b, tol))
    }
    a <- as.matrix(a)
    if (missing(b)) {
        b <- diag(1, nrow(a))
        colnames(b) <- rownames(a)
    }
    .Internal(La_solve(a, b, tol))
}

这意味着要么是La_solve,要么是La_solve_cmplx。查看它们的实现,例如这里可以发现La_solve将调用LAPACK例程DGESV,而La_solve_cmplx将调用LAPACK例程ZGESV。

别紧张,是吧?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67879833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档