矩陣在初等行變換下的標準型

2021-06-19 03:43:58 字數 4644 閱讀 3833

矩陣在初等行變換下的標準型

一、矩陣在初等行變換下的標準型---行標準型

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 ...