#範例15-1:使用葛蘭-史密特正交程序,把矩陣向量,製造出單範正交基底 #指令:GramSchmidt(M) #缺點1:GramSchmidt(M)是正交基底,長度不為1,還需要再正規化,轉成正則基底 #改善:GramSchmidt(M, True)則會正規化,變成正則基底(長度=1) #缺點2:matrix輸入的格式與一般格式不同 from sympy import * #錯誤的矩陣格式 M = Matrix([ [1,0,0], [1,1,0], [1,1,1] ]) #注意:GramSchmidt(M)方法的矩陣,必須以行向量的方式輸入,外圍用[]list串列包圍 M = [Matrix([1,1,1]), Matrix([0,1,1]), Matrix([0,0,1])] #若要建立正交基底(沒有正規化):M_GS = GramSchmidt(M, False)= GramSchmidt(M) #若要建立正則基底(有正規化):M_GS = GramSchmidt(M, True) M_GS = GramSchmidt(M, True) q1,q2,q3 = GramSchmidt(M, True) print('1.把M矩陣製造出正則基底=\n', M_GS) print('q1正則基底 = ', q1) print('q2正則基底 = ', q2) print('q3正則基底 = ', q3)