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

如何计算零空间含非零整数元素的矩阵零空间及生成算法

生成零空间中首列含非零整数的向量

问题分析

你当前用Sympy得到的是零空间的整数基向量,你想要的N其实是这两个基向量的整数线性组合:

[1,0,-1,1,0] + [0,1,-1,0,1] = [1,1,-2,1,1]

零空间的所有元素都是基向量的整数线性组合(因为原矩阵是整数矩阵,零空间可以用整数基张成),只要组合后的向量首列不为零即可。

实现方法

  1. 先通过Sympy获取零空间的整数基向量
  2. 选择非零整数系数对基向量进行线性组合,确保组合后的向量首列不为零:
    • 若某个基向量的首列本身非零,直接取该基向量或其整数倍即可
    • 若所有基向量首列都为零,则整个零空间的向量首列必为零,无法满足需求(你已了解这种情况)

示例代码

import numpy as np
from sympy import Matrix

A = np.array([[0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [1, 0, 1, 0, 1], [1, 1, 1, 0, 0]])
M = Matrix(A)

# 获取零空间的整数基
null_basis = M.nullspace()
print("零空间基向量:")
for vec in null_basis:
    print(vec)

# 生成首列非零的整数组合(示例:第一个基+第二个基)
coeffs = [1, 1]  # 可以替换为任意非零整数组合,只要首列和不为零
target_vec = sum(c * vec for c, vec in zip(coeffs, null_basis))
print("\n生成的目标向量:")
print(target_vec)

# 验证是否在零空间
print("\n验证结果(应为零矩阵):")
print(M * target_vec)

输出结果

零空间基向量:
Matrix([[1], [0], [-1], [1], [0]])
Matrix([[0], [1], [-1], [0], [1]])

生成的目标向量:
Matrix([[1], [1], [-2], [1], [1]])

验证结果(应为零矩阵):
Matrix([[0], [0], [0], [0]])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:00:51