對(duì)于一階線性方程的求解有多種方式,這里將介紹利用高斯消去法解一階線性方程組。在介紹高斯消去法前需要對(duì)《線性代數(shù)》做一下溫習(xí),同時(shí)在代碼中對(duì)于矩陣的存儲(chǔ)做一個(gè)簡(jiǎn)要介紹。

  通常遇到矩陣我們會(huì)利用二維數(shù)組來進(jìn)行對(duì)矩陣數(shù)值的存儲(chǔ)(例如前幾篇中動(dòng)態(tài)規(guī)劃中對(duì)于求解矩陣初始化就是利用二維數(shù)組),但在計(jì)算機(jī)的內(nèi)存中是沒有“二維”這種存儲(chǔ)方式的,內(nèi)存都是以“一維”的方式存儲(chǔ)數(shù)據(jù),那么這就帶來一個(gè)問題,在代碼層面定義一個(gè)二維數(shù)組時(shí),計(jì)算機(jī)內(nèi)部是怎么存儲(chǔ)的呢?

int[][] array = new int[3][3]; //Java中定義一個(gè)3行3列的矩陣

  Java中的二維數(shù)組定義在內(nèi)存中實(shí)際如下圖所示,它是按照行優(yōu)先的順序進(jìn)行存儲(chǔ)的。

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

  

  在編寫矩陣計(jì)算的程序時(shí),應(yīng)當(dāng)盡量避免跳躍訪問矩陣中的元素——《算法筆記》。所以如果我們運(yùn)算順序是按照列來運(yùn)算的話,此時(shí)Java定義的二維數(shù)組就會(huì)對(duì)元素進(jìn)行跳躍訪問。不妨利用一維數(shù)組按照自定義的行優(yōu)先或者列優(yōu)先來存儲(chǔ)矩陣數(shù)據(jù),這樣對(duì)于列運(yùn)算也有應(yīng)對(duì)策略。

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

  舉個(gè)例子:

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

  根據(jù)矩陣乘法的定義,A顯然不能與X直接相乘,將A作轉(zhuǎn)置得到:

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

  AX相乘=>X·AT

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

  綜上,AX相乘可推出:

 電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

  矩陣與向量相乘有兩種實(shí)現(xiàn)方式(參照《算法筆記》):

  第一種:

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

for j ∈ {1, 2, 3, …, n} do     bj ← 0 end for for i ∈ {1, 2, 3, …, m} do     for j ∈ {1, 2, 3, …, n} do         bj ← bj + aij·xj     end for end for

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

  顯然利用這種方式計(jì)算矩陣與向量的乘積時(shí),按行優(yōu)先存儲(chǔ)的矩陣速度更快。

  第二種:

for j ∈ {1, 2, 3, …, n} do     bj ← 0     for i ∈ {1, 2, 3, …, m} do         bj ← bj + aij·xj     end for end for

  顯然利用這種方式計(jì)算矩陣與向量的成績(jī)時(shí),按列優(yōu)先存儲(chǔ)的矩陣速度更快。

不積跬步,無以至千里;不積小流,無以成江海。

http://www.cnblogs.com/yulinfeng/p/7134440.html