矩陣在初等行變換下的標準型
一、矩陣在初等行變換下的標準型---行標準型
m×n矩陣a=
a11 a12 ... a1n
a21 a22 ... a2n
... ... ... ...
am1 am2 ... amn
的行標準形式是滿足一定條件的特殊上三角形, 例如:
0 1 2 3 0 0 0 0
0 0 0 1 -3 2 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0
需要滿足的條件為:
1. 僅前r行非0, 其中某r列構成單位陣e,其餘各列構成 r×s矩陣b, s=n-r.
2. 對應於e的任乙個非零元素, 1,不僅其所在列只有乙個非零, 而且其所在行的左邊全部為0.
行標準型是特殊的階梯形, 稱為(標準)階梯型.
經過列的簡單交換q,a成為
e b0 0
其中e是r階單位陣, 下邊是n-r行0. b是 r×s 矩陣.
並且在交換列的過程中, e對應的列先後順序不變. 加入e對應a的j1,j2,...,jr列, 則 jk≥k.
標準型中, e對應於階梯頂點.
二、行標準型的例子
1. 簡單的例子是分成4塊的m×n矩陣e b
0 0其中e是r階單位陣, 下邊是m-r行0. b是 r×(n-r) 矩陣.
2. 稍微複雜一點的例子是e、b的若干列交錯情況. 例如
11 000
01 010
此時e對應於1,4列.
但此時要通過進一步實施行變換, 以便滿足限制2:
10 0-10
01 010
此時e對應於1,2列。
可以看出,標準型中, e總是對應於階梯頂點.
3. 具有一般性的例子:
10 1 001
000 013
其中e對應於1,5列.
三、行標準型的性質
因為階梯頂點1列號不小於行號, 所以a的前r行r列子陣f為e, 當且僅當f
非退化 . 即
性質① 若a的行標準型是
f b0 0
f是r×r子陣. 那麼 f=e 當且僅當 f滿秩.
性質② 如果a=(b c), b為滿秩m×r陣, 則a的行標準型為(f d), 其中f的前r行為r×r單位陣, 其餘元素為0.
性質③ 如果a的行標準型是b, 那麼a的任何包含b的頂點所在列的子陣, 行標準型也b的包含頂點所在列的子陣.
性質④ 如果a的行標準型是b,pa=b, a 為a的包含b的頂點所在列的子陣, 則a的行標準型為等價標準型f, 並且pa=f.
* 等價標準型即
er 0
0 0
四、行標準型的存在性
行標準型基本上就是分成4塊的m×n矩陣e b
0 0在下面的例子中,e可取為1,4列:
11 300
00 110
但此時違背限制條件2,需要進一步實行變換,化為
11 0-30
00 110
此時e對應於1,3列。
可以看出,通過實施行變換,階梯型總是可以規範化,即滿足限制條件2.
繼續......
嚴格說明行標準型的存在性並不難,可以使用歸納法。
從r=0開始, r=0表示第一行,
[i] 如果a11≠0, 則利用初等行變換把它化為1, 同時把第一列其餘元素化0.
[ii] 如果a11=0, 則
檢查第一列, 遇到有非0元素, 交換到第一行.轉到[i].
[iii] 如果第一列全部為0, 則檢查第二列, 如此直到遇到非0元, 換到第一行. 針對首先發現非0元的列, 實施變換[i].
如果沒有非0元, 那麼a=0, 已經是標準型.
否則行號 r加1, 針對a的 m-r 行子句中, 重複上述步驟. 但是注意, 步驟[i]中化0操作要針對原矩陣a執行, 而不是僅處理r行以下的子陣.
如果a只有1行, 那麼這種操作顯然導致a的標準型. 否則, 先處理第1行,然後假設從第2行開始的子矩陣化為標準型, 歸納得到a的標準型.
歸納假設前r-1行已經成為標準階梯型,如果a不足r行,或者r行以後全部為0, 那麼a就是標準階梯型了。
現在然後考慮第r行的第乙個非0元素ars. 如果ars上方有頂點元素,則可以把ars化為0, 然後繼續討論。
如果r行全部為0了,則考慮下邊的行,並且必要時把下邊的行移動成為第r行。
現在假設ars上方沒有頂點元素,
可以簡單地把ars
化為1,
並把s列其餘元素化0, 得到標準階梯型。
下邊通過具體例子說明上述證明過程:
2 0 4 0 0 0 0 0
1 0 2 -1 -1 3 12 -5
0 0 0 1 3 0 0 5
-1 0 -2 0 0 2 8 0
1、 ====>
1 0 2 0 0 0 0 0
0 0 0 -1 -1 3 12 -5
0 0 0 1 1 0 0 5
0 0 0 0 0 2 8 0
2、 第3行加於第2行,然後交換2、3行 ====>
1 0 2 0 0 0 0 0
0 0 0 1 1 0 0 5
0 0 0 0 0 3 12 0
0 0 0 0 0 2 8 0
3、====>
1 0 2 0 0 0 0 0
0 0 0 1 1 0 0 5
0 0 0 0 0 1 4 0
0 0 0 0 0 2 8 0
4、====>
1 0 2 0 0 0 0 0
0 0 0 1 1 0 0 5
0 0 0 0 0 1 4 0
0 0 0 0 0 0 0 0
化標準型,實際過程可以靈活一些,不嚴格按照證明中的步驟進行。如前例第2步。
五、行標準型的唯一性
如果a有乙個行標準型 (e b), 那麼a的所有行標準型都是(e b).
證明: 設(f c)是a的任一其他標準型, 則有行變換p,q, 使得 a=p(e b) = q(f c) . q(f c)=p(e b) ==>
p=qf, pb=qc ==> p=q, b=c.
一般情況證明關鍵如下.
設a為m×n矩陣, 不妨假設a滿秩. 設a有兩個行標準型b,c,相應的行變換為p,q.
僅考慮a的對應於標準型頂b的點的列, 同時再新增包含c的頂點的列, 所構成的子矩陣a, 則pa=(e d). qa=(f g). ===>
pe=qf, p=q, b=c.
即a的任意兩個行標準型相同.
六、行標準型的實現**
eqt.cpp
更新: eqt.rar
關鍵**:注意, 正確複製**需要開啟編輯頁面.
// trizw, 梯形化矩陣a, 同時記錄過程 p. 返回 r(a). d3dxmatrixinverse
// 注意: p 初始化必須令*p =0, 所返回記憶體指標通過 delete 釋放.
// 呼叫方法示例: float* p=0; trizw(... , p);
// 參考:
// 1. hresult createdevice(..., idirect3ddevice9** ppreturneddeviceinte***ce);
// 2. formatmessage(..., lptstr lpbuffer, ...);
int trizw(float*a, int m, int n, float*& p) // if(i!=r)
t=a[r*n+j]; q=a+r*n+j;
for(k=j; k
for(k=0; k
break; // from for i.
} // if(*p!=0)
p+=n;
} // for i
if(a[r*n+j]!=0) // for u
r++; break; // from for j. 必須 break from for(j).
} // if(a[r*n+j]!=0)
} // for j
if(j==n) return r; // 情況 break 沒有發生.
static int ic=0; ic++; \
printf("a%d=(rank=%d)\n", ic,r); show_matrix(a,m, n,3); printf("\n"); \
//printf("p%d=\n", ic); show_matrix(p,m, m); printf("\n");
return trizw(a,m,n,p);}
矩陣的初等變換的應用
線性代數 這篇文章中介紹了矩陣的初等變換的用法。沒有強調的是,左乘是行變換,右乘是列變換。三種形式六種情況 ei k 單位矩陣的第i行或者第i列乘以k倍得到的矩陣。ei j 單位矩陣第i行和第j行交換或者第i列和第j列交換得到的矩陣。ei j k 單位矩陣的第j行乘以k倍加到第i行,即被操作的行在前...
python 對矩陣的初等變換
def randint i,j if i 0 return random.randint 0,10000 j 1 else return random.randint 0,10000 j i 1 i def zh a,n for i in range 0,n a i i 1 for i in ran...
矩陣的基變換及對應基變換下向量的座標變換
假設在世界座標系中有兩組基分別是e 1e 1 e1 和e 2e 2 e2 兩組基上分別有乙個向量x xx和y yy。那麼 對x xx向量進行一次a aa變換得到向量z zz,再對y yy向量進行一次b bb變換得到同樣得到向量zzz。根據以上描述便得到 x a z y b x cdot a z y ...