線性代數 線性方程組與矩陣

2022-09-23 08:21:12 字數 4817 閱讀 6115

乙個m個方程,n個未知數的方程組定義如下:

a11x1+a12x2+...+a1nxna21x1+a22x2+...+a2nxn?am1x1+am2x2+...+amnxn=b1=b2=bm(1)

其中aij及bi均為實數,(1)稱為m*n的線性方程組。若方程組有解,則稱其為相容的(consistent),否則為不相容的。

定義:若兩個含有相同變數的方程組具有相同的解集,則稱它們是等價的。

有三種運算可以得到乙個等價的方程組:

交換任意兩個方程的順序 任一方程兩邊同乘乙個非零的實數 一方程的倍數加到另乙個方程上把(1)式中的係數與乙個m*n的陣列聯絡起來,稱這個了陣列為方程組的係數矩陣(coefficient matrix),若m=n則稱此矩陣為方陣。

??????a11a21?am1a12a22am2.........a1na2namn??????

如果在係數矩陣的右側新增一列方程組的右端項,則得到新的矩陣:

???????a11a21?am1a12a22am2.........a1na2namnb1b2?bm???????

稱這個矩陣為方程組的增廣矩陣(augmented maxtrix)。

傳統的解方程組即消元法,有了矩陣這個工具後,方程組的求解可以通過對增廣矩陣做行運算得到:

交換兩行 以非零實數乘以某行 將某行替換為它與其他行的倍數的和

對於大型方程組,需要借助於計算機求解,下面的**示例使用numpy求解方程組的解:

# 3x + y = 9

# x + 2y = 8

import numpy as np

a = np.array([[3,1],[1,2]])

b = np.array([9,8])

result = np.linalg.solve(a,b)

print result #[ 2. 3.]若乙個矩陣滿足下面三個條件,則稱其為行階梯形矩陣(row echelon form)

每一非零行中的第乙個非零元素為1 第k行的元素不全為零時,第k+1行的首變數之前零的個數多於第k行首變數之前零的個數 所有元素均為零的行必在不全為零的行之後

右邊的矩陣是行階梯形:???100300110030???

使用行運算,將線性方程組的增廣矩陣化為行階梯形的過程稱為高斯消元法(gaussian elimination)

若乙個線性方程組中方程的個數多於未知數的個數,則稱其為超定的。通常不相容

若方程個數少於未知數的個數,則其為亞定的。通常相容,且有無窮解。

若乙個矩陣滿足,矩陣是行階梯形,且第一行的第乙個非零元是其所在列的性非零元,則稱矩陣為行簡形。下面的矩陣是行最簡形的

???100010001321???

基於基本行運算將矩陣化為行最簡形的過程稱為guass-jordan消元法。

如果線性方程組的右端項全為零,則稱其為齊次的。齊次方程組總是相容了,因為全零即為其乙個解。

a=a(aij)=???????a11a21?am1a12a22?am2......?...a1na2n?amn???????

行向量:乙個1*n的矩陣,如[1234]

列向量:乙個m*1的矩陣, 如???123???

對乙個m*n的矩陣a,a的行向量表示為

ai→=(ai1,ai2,...,ain),i=1,2,..,m

a的列向量表示為

aj=???????a1ja2j?amj???????,j=1,2...,n

矩陣a可以用其列向量或其行向量表示:

a=(a1,a2,...,an)=??????a?1a?2?a?m??????

標量乘法:若a為m*n的矩陣,且n為一標量,則二者乘積矩陣b為

n?a(aij)=b(bij=n?aij)

矩陣加法:若a,b均為m*n的矩陣,其和矩陣c為

a(aij)+b(bij)=c(cij=aij+bij)

對於方程組(1),若令

a=??????a11a21?am1a12a22am2.........a1na2namn??????,x=??????x1x2?xn??????,b=??????b1b2?bn??????

並定義乘積ax為

ax=???????a11x1+a12x2+...+a1nxna21x1+a22x2+...+a2nxn?am1x1+am2x2+...+amnxn???????=??????a?1xa?2x?a?mx??????(2)

則線性方程組(1)等價於矩陣(2)。同樣的將線性方程組表示為矩陣列向量和的形式:

ax=x1??????a11a21?am1??????+x2??????a12a22?am2??????+?+xn??????a1na2n?amn??????=x1a1+x2a2+...+xnan

矩陣乘法定義:若a=(aij)為乙個m*n的矩陣,矩陣b=(bij)是乙個n*r的矩陣,則乘積ab=c(cij)為乙個m*r的矩陣,其元素定義為:

cij=a?ibj=∑k=1naikbkj

a1,a2,...,an為rm中的向量,且x1,x2,...,xn為標量,則和式:x1a1+x2a2+...+xnan稱為向量a1,a2,...,an的乙個線性組合

線性方程組相容性定理:

乙個線性方程組ax=b相容的充要條件是向量b可寫為矩陣a列向量的乙個線性組合。

乙個m*n的矩陣a的轉置為n*m的矩陣,定義為:at(bij=aji)

若乙個方陣a,滿足at=a,則稱a是對稱的(symmetric)。

轉置的代數法則:

(at)t=a (cat)=cat (a+b)t=at+bt (ab)t=btat現代檢索技術是基於矩陣與線性代數的。在典型的情況下,乙個資料庫包含一組文件,且我們希望通過搜尋條件找出最符合需要的文件。假設資料庫包含m個文件與乙個字典,字典包含了文件中排重後的關鍵字,字典包含的詞數為n,且按字典序排序。

我們將資料庫表示為乙個m*n的矩陣a,這個矩陣的第i行表示字典中第i個關鍵字在各個文件中的tf-idf。如果一次檢索包含多個關鍵字,將其表示為乙個n*1的列向量x,如果字典中第i個關鍵字包含在檢索中,則x的第i個元素為1。為完成檢索,只需要計算atx,結果為乙個n*1的列向量,每行對應乙個文件與搜尋條件的匹配度,選擇其中值最大的即為最匹配的結果。在第5章,可以通過向量夾角的余弦cos值來計算匹配度。

下列法則對任何標題n和m及矩陣a b c都是成立的:

交換率:a+b = b+a

結合率:(a+b)+c = a+(b+c) (ab)c = a(bc)

分配率:a(b+c) = ab + ac

定義:單位矩陣 i=δij,其中

δij={10當i=j當i≠j

定義:矩陣的逆,若存在矩陣b使用ab=ba=i,則稱方陣a是可逆的(invertible)或非奇異的(nonsingular),矩陣b稱a的逆,記作a?1。注意,只有方陣才可能可逆,非方陣不應使用奇異或非奇異的這一說法。

定理:若a b均為非奇異的方陣,則ab也是非奇異的,且(ab)?1=b?1a?1。

更一般的有 (a1a2...ak)?1=a?1k...a?12a?11

下面使用python**計算上面兩節介紹的運算

import numpy as np

a = np.array([[1,2,3],

[4,5,7],

[7,8,9]])

i = np.eye(3) #三階單位矩陣

print 3*a #標量乘法

print a+i #矩陣加法

print a.t #a的轉置

print np.dot(a,i) #矩陣乘法

print np.linalg.inv(a) #計算a的逆定義初等矩陣:如果從單位矩陣i開始,只進行一次初等行運算,得到的矩陣稱為初等(elementary)矩陣,因此有三類初等矩陣,以n=3為例。

交換兩行 e1=???010100001???

一行乘積 e2=???100010003???

乘後加行 e3=???100010301???

一般的,若e為n階初等矩陣,a為n*r的矩陣,e*a的作用就是對a進行相應的行運算。a*e的作用就是對a進行相應的列運算。

定理:若e為一初等矩陣,則e是非奇異的,且e的逆與它同型別的初等矩陣。

定義:若存在乙個有限初等矩陣的序列使得b=e1e2...eka,則稱a與b是行等價的。

定理:非奇異矩陣的等價條件:若a是n階方陣,則下列陳述是等價的

a是非奇異的 ax=0僅有平凡解0 a與i行等價

若a是非奇異的,則有

∏i=1keia=i

在等式兩邊乘以a?1

∏i=1keii=a?1

這給出了計算a的逆的方式,即將a和i寫為增廣形式,並利用初等行去處將其中的a轉換為i,則i將轉換為a?1。即(a|i)的行最簡形為(i|a?1)

因此也可以通過求逆計算線性方程組ax=b的解,即x=a?1b

對於方陣a

上三角矩陣:當i>j時, aij=0

下三角矩陣:當i時, aij=0

三角形矩陣:上三角和下三角的統稱

嚴格三角形:對角元素非零的三角形矩陣

對角形矩陣:當i≠j時, aij=0

定義:將矩陣a分解為乙個單位下三角矩陣l和乙個嚴格上三角矩陣u的乘積的過程,稱為lu分解。lu分解只需要對a使用第三種行運算化簡為嚴格上三角形,即可完成。lu分解在消元過程中十分有用。

lu=???11/2201?3001??????200430218???=???21445?1229???=a

import scipy.linalg

a = np.array([[1,2,3],

[4,5,7],

[7,8,9]])

l,u = scipy.linalg.lu(a,true)

print l,u本文是steven j. leon的線性代數及其應用的第一章的學習筆記 本文公式編寫使用了mathjax語法 latex公式支援

線性代數 線性方程組

線性方程組linear equation 若兩個線性方程組有相同的解集 solution set 稱它們為等價 equivalent 的。線性方程組的解的情況 稱線性方程組為 無解不相容 inconsistent 有唯一解 相容 consistent 有無窮多解相容 初等行變換 elementary...

矩陣與線性方程組

以下內容主要引用自 deep learning 中文版 1 線性方程組以矩陣的形式表達如下,其中是乙個已知矩陣,也就是乙個m行n列的矩陣 是乙個已知向量 m行1列 是乙個我們要求解的未知向量 n行1列 矩陣a中的每乙個行和b中對應的元素構成乙個約束,所以線性方程可以換種表達方式 用a的每一行和x向量...

線性方程組

給出乙個線性方程組的標準形式 a11x1 a12x 2 a1nx na21x 1 a22 x2 a2n xnan 1x1 an2x 2 annx n b1 b2 bn 1x 2y 34x 5y 6 1 2 這裡由克萊姆法則進行計算得出xy 3625 14 25 3 5 2 61 5 2 4 3 3 ...