#範例14-2:無限多解系統的通解(齊次特解x0+非齊次解xh) #比較sympy模組,numpy模組的解法) #(1)sympy求解 from sympy import * x1,x2,x3,x4,x5,x6 = symbols('x1 x2 x3 x4 x5 x6') #注意:M矩陣的最右邊=y=轉換後座標 M = Matrix([ [1,3,-2,0,2,0,0], [2,6,-5,-2,4,-3,-1], [0,0,5,10,0,15,5], [2,6,0,8,4,18,6] ]) M_simple = M.rref() print('顯示高斯消去法簡化的梯形矩陣的echelon form =\n', M_simple) ans = solve_linear_system(M, x1,x2,x3,x4,x5,x6) print('用sympy解聯立方程式 = ', ans) M = Matrix([ [1,3,-2,0,2,0], [2,6,-5,-2,4,-3], [0,0,5,10,0,15], [2,6,0,8,4,18] ]) M_rank = M.rank() M_dim = M.shape[1] M_nullity = M_dim - M_rank print('輸入空間維度 = input dimension of M=', M_dim) print('輸出空間維度 = rank(M)=', M_rank) print('核空間維度 = 被轉換壓縮的空間維度 = nullity=', M_nullity) M_nullsapce = M.nullspace() print('線性轉換後有壓縮空間 = 核空間向量集合 = null space=\n', M_nullsapce) #(2)numpy求解 import numpy as np A = np.array([ [1,3,-2,0,2,0], [2,6,-5,-2,4,-3], [0,0,5,10,0,15], [2,6,0,8,4,18] ]) Y = np.array([ [0],[-1],[5],[6] ]) print('用numpy解聯立方程式,X=(無法處理無限多組解)') X = np.linalg.solve(A, Y) print(X)