首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用Colt的样本Nullspace

利用Colt的样本Nullspace
EN

Stack Overflow用户
提问于 2014-05-03 00:49:24
回答 1查看 132关注 0票数 0

我正在编写Java,并使用colt作为我的矩阵库,并希望在矩阵的内核中找到一个(任意)向量。我可以在python中这样做,如下所示:

代码语言:javascript
复制
def kernel(A, n):
    if A.rows == 0:
        return Matrix([1]*n)

    R, pivots = A.rref()
    Ap = A.extract(range(A.rows), pivots)
    bp = Matrix([0]*Ap.rows)

    free = list(set(range(n)) - set(pivots))
    for i in free:
        bp -= A[:, i]

    xp = Ap.LUsolve(bp)
    x = [1]*n

    for i in range(len(pivots)):
        x[pivots[i]] = xp[i]

    return Matrix(x)

使用渐近性,我可以调用空空间来得到整个空空间,或者使用rref来获得在减少到行级形式时使用的枢轴,并从中自己在空空间中找到一个向量。我在Colt中找不到一个函数来计算空空间,而且trapezoidalLower不返回枢轴。

是让我自己写rref呢,还是有人知道用Colt实现这一目标的更高层次的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 00:57:29

答案是,无论你做什么,都不要在java中使用RREF。转换为减少的梯队形式,结果是有很多比较0。如果值为0,我们只做一件事。如果值非常接近于0,但不是完全为0,我们就会做完全不同的事情(例如,除以值)。这意味着一种不稳定的算法。

相反,我们可以使用QR Decomposition,它恰好是用colt实现的。

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

https://stackoverflow.com/questions/23438983

复制
相关文章

相似问题

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