如何用SymPy获取Ax=0的两个独立特解向量?
解决SymPy输出齐次方程组独立特解的问题
直接用SymPy矩阵的nullspace()方法就能搞定,这个方法会直接返回齐次方程组Ax=0零空间的线性无关基向量,也就是你要的两个独立特解,比用linsolve后再拆分参数化结果方便多了。
修正后的完整代码
from sympy import Matrix # 直接用SymPy构造系数矩阵,无需依赖numpy Vec = Matrix([ [1, 5, 7, 9], [0, 4, 1, 7], [2, -2, 11, -3] ]) # 获取零空间基向量(即独立特解) basis_vectors = Vec.nullspace() # 分别输出两个特解 print("对应tau0的特解:") print(basis_vectors[0]) print("\n对应tau1的特解:") print(basis_vectors[1])
输出结果示例
对应tau0的特解: Matrix([[-23/4], [-1/4], [1], [0]]) 对应tau1的特解: Matrix([[-1/4], [-7/4], [0], [1]])
说明
nullspace()返回的是一个列表,每个元素都是SymPy矩阵对象,正好对应你需要的独立特解——这两个向量就是原输出中tau0和tau1各自的系数向量。- 原代码里导入
solve却没用到,而且用np.matrix转SymPy矩阵属于多余操作,直接用SymPy的Matrix构造更简洁。 - 如果你需要验证,把任意一个基向量代入Ax计算,结果都会是零向量,符合齐次方程组的解的要求。
内容的提问来源于stack exchange,提问作者Ben G
相关产品推荐
相关产品推荐

