You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia中如何求指定秩矩阵的列空间与行空间的基向量?

实现方案

方法1:基于列选主元QR分解(计算速度快)

列选主元的QR分解会自动将线性无关的列优先排列,只需提取分解得到的正交矩阵Q的前r列即可得到列空间的正交基:

using LinearAlgebra

# 对矩阵A做列选主元QR分解
qr_fact = qr(A, ColumnNorm())
# 获取矩阵真实秩
r = rank(A)
# 列空间基:每一列对应一个基向量,维度为(n, r)
col_space_basis = qr_fact.Q[:, 1:r]

# 如果需要行空间基,对A的转置做相同操作即可
row_space_basis = qr(transpose(A), ColumnNorm()).Q[:, 1:r]

方法2:基于SVD分解(数值稳定性最优)

SVD是求矩阵基最稳定的方案,非零奇异值对应的左奇异向量张成列空间,右奇异向量张成行空间,完全可以满足你的需求:

using LinearAlgebra

svd_fact = svd(A)
r = rank(A)
# 列空间基:左奇异矩阵前r列,维度(n, r)
col_space_basis = svd_fact.U[:, 1:r]
# 行空间基:右奇异矩阵前r列,维度(m, r)
row_space_basis = svd_fact.V[:, 1:r]

效果验证

针对你给出的秩为3的测试矩阵,以上两种方法得到的基向量数量均为3,可通过下面代码验证基的正确性:

# 验证列空间一致:拼接A和基矩阵的秩和A本身的秩相等
@assert rank([A col_space_basis]) == r

内容的提问来源于stack exchange,提问作者Physics_Student

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:24:04