RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹一種求解線性方程組的算法-高斯消除法

云深之無跡 ? 來源:云深之無跡 ? 作者:云深之無跡 ? 2022-07-08 09:17 ? 次閱讀

啊,我終于可以寫文章了!最近兩天好累哇,先繼續(xù)寫上面的算法文章。

這篇文章寫的算法是高斯消元,是數(shù)值計算里面基本且有效的算法之一:是求解線性方程組的算法。

這里再細寫一下:

在數(shù)學(xué)中,高斯消元法,也稱為行約簡,是一種求解線性方程組的算法。它由對相應(yīng)的系數(shù)矩陣執(zhí)行的一系列操作組成。此方法還可用于計算矩陣的秩、方陣的行列式和可逆矩陣的逆矩陣。該方法以卡爾·弗里德里?!じ咚?( Carl Friedrich Gauss ,1777-1855)的名字命名,盡管該方法的一些特例——盡管沒有證明——早在公元 179 年左右就為中國數(shù)學(xué)家所知。

為了對矩陣執(zhí)行行縮減,可以使用一系列基本行操作來修改矩陣,直到矩陣的左下角盡可能地用零填充?;拘胁僮鞣譃槿N類型:

1.交換兩行,

2.將一行乘以一個非零數(shù),

3.將一行的倍數(shù)添加到另一行。(減法可以通過將一行乘以 -1 并將結(jié)果添加到另一行來實現(xiàn))

使用這些操作,矩陣總是可以轉(zhuǎn)換為上三角矩陣,實際上是行梯形矩陣。一旦所有前導(dǎo)系數(shù)(每行中最左邊的非零條目)都為 1,并且包含前導(dǎo)系數(shù)的每一列在其他地方都為零,則稱該矩陣為簡化行梯形形式。這種最終形式是獨一無二的;換句話說,它與所使用的行操作序列無關(guān)。例如,在下面的行操作序列中(在第一步和第三步對不同行進行兩個基本操作),第三和第四個矩陣是行梯形矩陣,最后一個矩陣是唯一的簡化行梯隊形式。

poYBAGLHhgeAC9icAABABfqhBms123.jpg

一個矩陣的簡化

使用行操作將矩陣轉(zhuǎn)換為簡化的行梯形形式有時稱為Gauss-Jordan 消元法。在這種情況下,術(shù)語高斯消元是指過程,直到它達到其上三角形或(未簡化的)行梯形形式。出于計算原因,在求解線性方程組時,有時最好在矩陣完全約簡之前停止行操作。

pYYBAGLHhiCAMBJWAADHrEKAhew355.jpg

我們對其實現(xiàn)的操作只有這三個

如果矩陣與線性方程組相關(guān)聯(lián),則這些操作不會更改解集。因此,如果一個人的目標是求解線性方程組,那么使用這些行操作可以使問題變得更容易。

對于矩陣中的每一行,如果該行不只包含零,則最左邊的非零條目稱為該行的前導(dǎo)系數(shù)(或樞軸)。因此,如果兩個前導(dǎo)系數(shù)在同一列中,則可以使用類型 3的行操作使這些系數(shù)之一為零。然后通過使用行交換操作,總是可以對行進行排序,以便對于每個非零行,前導(dǎo)系數(shù)位于上一行的前導(dǎo)系數(shù)的右側(cè)。如果是這種情況,則稱矩陣為行梯形. 所以矩陣的左下部分只包含零,并且所有的零行都在非零行的下方。這里使用“梯隊”一詞是因為可以粗略地認為行是按大小排列的,最大的位于頂部,最小的位于底部。

例如,下面的矩陣是行梯形的,它的前導(dǎo)系數(shù)用紅色表示:

poYBAGLHhjeAdBPzAABEx8Bk3mg017.jpg

就像這樣

它是梯形的,因為零行在底部,第二行(第三列)的領(lǐng)先系數(shù)在第一行(第二列)的領(lǐng)先系數(shù)的右側(cè)。

如果矩陣的所有前導(dǎo)系數(shù)都等于 1(這可以通過使用類型 2 的基本行操作來實現(xiàn)),并且在包含前導(dǎo)系數(shù)的每一列中,則稱矩陣為簡化行梯形。該列中的其他條目為零(可以通過使用類型 3 的基本行操作來實現(xiàn))。

pYYBAGLHhkyAYZqHAABivHgE-Dk248.jpg

假如我們求解這個方程的解

下表是同時應(yīng)用于方程組及其相關(guān)增廣矩陣的行縮減過程。在實踐中,通常不會用方程來處理系統(tǒng),而是使用更適合計算機操作的增廣矩陣。行縮減過程可以概括如下:從L1以下的所有方程中消除x,然后從L2以下的所有方程中消除y。這將使系統(tǒng)變成三角形。然后,使用反向替換,可以解決每個未知數(shù)。

poYBAGLHhn2AaCG0AADxAZnizmI601.jpg

poYBAGLHhoaAFW-KAADbhzucTD0901.jpg

就好像這樣

其實還有內(nèi)容,但是公式編輯實在不會哇,這里給出程序的偽代碼:

高斯消元法將給定的m × n矩陣A轉(zhuǎn)換為行梯形矩陣。

在下面的偽代碼中,A[i, j]表示矩陣A在第i行和第j列中的條目,索引從 1 開始。轉(zhuǎn)換在原地執(zhí)行,這意味著原始矩陣丟失,最終被其行梯形形式替換。

poYBAGLHhrSAXLcuAAC30AsjpMU426.jpg

看不懂?沒有關(guān)系,大致懂就行

pYYBAGLHhs2AWgGsAACKu13wfHk469.jpg

程序的實現(xiàn)上面,我們導(dǎo)入這些內(nèi)容

poYBAGLHhuiAR1LVAACZsbKux4o979.jpg

為了精度,導(dǎo)入float64

pYYBAGLHhwSAJKE6AAEwqXi5tEE576.jpg

以及導(dǎo)入的一個N維的數(shù)組,在內(nèi)部是所以ndarray封裝的

這樣學(xué)習(xí)的態(tài)度是不對的,我們需要看看Numpy文檔寫的:

pYYBAGLHhxeAbUueAACOGYto1lA497.jpg

64位精度浮點數(shù)類型:符號位、11位指數(shù)、52位尾數(shù)。

pYYBAGLHhyyActRMAACdXr_anYg160.jpg

沒關(guān)系,你不懂的官網(wǎng)文檔滿足你

pYYBAGLHh0WAOttCAAB13v_N_yk224.jpg

NDarray在這里

可在運行時用于鍵入具有給定 dtype 和未指定形狀的數(shù)組。

poYBAGLHh1uATFDZAACQwwqEdGM215.jpg

系數(shù)矩陣,向量是輸入的參數(shù),后面是返回的數(shù)據(jù)類型。

poYBAGLHh4OAGJJnAAAc6rScGHI357.jpg

pYYBAGLHh2-ARviCAADA_mc4yUg987.jpg

對shape函數(shù)感興趣不,內(nèi)部是這樣的

pYYBAGLHh5eAS21XAAAg9xL7Pas833.jpg

這個也是注解的寫法,意思是返回一個數(shù)組,用0填充:

poYBAGLHh62APYljAAFbzWiYmAY360.jpg

zeros函數(shù)的樣子

第一個參數(shù),元組,說明樣子。后面參數(shù)是類型,這里寫float。返回值是具有給定形狀、數(shù)據(jù)類型和順序的零數(shù)組。

poYBAGLHh8OAJf8PAACOvr3F_Zo594.jpg

首先,reversed 函數(shù)返回一個反轉(zhuǎn)的迭代器。這個為什么倒著算呢?是因為倒著算對算法來講有一些優(yōu)點。

內(nèi)部再套一個函數(shù),內(nèi)部對列處理,下面的代碼就是實現(xiàn)使用倍數(shù)的關(guān)系對一整行處理,[]是相當于數(shù)組的index寫法,下面是將處理結(jié)果應(yīng)用到行,最后打印X。

上面這個函數(shù)是高斯函數(shù)的一個子函數(shù),作用是給出最簡的階梯行列式。

pYYBAGLHh9iACEL9AAB_gCG9M08521.jpg

我們要算這個

pYYBAGLHh_CAd2WqAAAzHNCBO-I861.jpg

輸入的時候這樣輸入,先別繼續(xù)看,我們看高斯分解

poYBAGLHiAqAAay2AACU1QREN3w426.jpg

這個檢查寫的很簡單

poYBAGLHiB6AZ3x5AABQzgMdRdg630.jpg

接下來

poYBAGLHiDuAHDrDAAFEvc6A4ec344.jpg

連接我們的矩陣,要求有相應(yīng)的形狀

pYYBAGLHiE6AQ-UCAAD_RsdJ8z0011.jpg

這個例子不錯

0是按照行展開,1是列,None是直接接龍。

poYBAGLHiGSAdrCJAACtzaPERVI469.jpg

這段實現(xiàn)的是上面的偽代碼

pYYBAGLHiHuAP0WdAADX17TMPg8702.jpg

一個很有趣的變量名

poYBAGLHiI6AL9ecAAAhEdt5c1Q468.jpg

調(diào)用的時候就是這樣,輸入一個大元組,里面有兩個小元組

poYBAGLHiKSAadagAABkC7venq4857.jpg

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    7488

    瀏覽量

    87847
  • 矩陣
    +關(guān)注

    關(guān)注

    0

    文章

    423

    瀏覽量

    34528
  • 迭代器
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    4307

原文標題:Python實現(xiàn)所有算法-高斯消除法

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    MATLAB應(yīng)用求線性方程組的通解

    理解線性方程組直接法與迭代法思想,掌握常用算法的設(shè)計,掌握用MATLAB實現(xiàn)的數(shù)值解法。1、編寫列主元消去法程序,并舉例子。編寫LU分解法程序,并舉例子。對兩算法作出對比。利用MAT
    發(fā)表于 11-03 15:45

    matlab求解線性方程組問題

    我最近在尋找個矩陣,需要用matlab來求取一組線性方程組,而且方程當中都含有些符號參數(shù)。求取過程中出現(xiàn)的結(jié)果是ans=[1*1 sy
    發(fā)表于 03-29 09:06

    請教哪里有l(wèi)abview解線性方程組的資料,最好有具體例子的,謝謝!

    請教哪里有l(wèi)abview解線性方程組的資料,最好有具體例子的,謝謝!麻煩請附個超鏈接或者直接上傳,謝謝!
    發(fā)表于 07-27 17:38

    labview求解線性方程組

    ` 本帖最后由 shangxinol 于 2018-10-12 17:11 編輯 各位大佬好,我有個非線性方程組需要利用Labview來求解,且希望能夠2ms內(nèi)求解完成。精度可以
    發(fā)表于 10-12 17:05

    特定消諧PWM技術(shù)中非線性方程組解法的研究

    本文首先討論了消諧技術(shù)與傳統(tǒng)SPWM技術(shù)相比的優(yōu)點,然后研究了特定肖諧技術(shù)中求解線性方程組的有效方法通過定規(guī)律給出初值即可隨基波變化的解的軌跡,用此方法可求出開
    發(fā)表于 11-19 18:27 ?28次下載

    線性方程組并行迭代解法的新思路

    針對求解大型線性方程組,利用改進后的MGS方法和分治策略,給出了一種求解任意相容性線性方程組通解或不相容性
    發(fā)表于 05-10 11:25 ?16次下載

    一種求解線性約束優(yōu)化全局最優(yōu)的新方法

    本文提出了一種求解線性約束優(yōu)化的全局最優(yōu)的新方法—它是基于利用非線性互補函數(shù)和不斷增加新的約束來重復(fù)解庫恩-塔克條件的非線性方程組的新方法
    發(fā)表于 08-11 10:53 ?16次下載

    凸約束非線性方程組的非單調(diào)信賴域算法

    凸約束非線性方程組的非單調(diào)信賴域算法
    發(fā)表于 10-25 12:20 ?13次下載

    特定消諧PWM技術(shù)中非線性方程組解法的研究

    本文首先討論了特定消諧技術(shù)與傳統(tǒng)SPWM技術(shù)相比的優(yōu)點,然后研究了特定消諧技術(shù)中求解線性方程組的有效方法,通過按定規(guī)律給出初值即可解出隨基波變化的解的軌跡,用此方法可求出開關(guān)角數(shù)小于100時的兩
    發(fā)表于 05-11 15:26 ?7次下載

    基于并聯(lián)機器人非線性方程求解

    的過程中還存在解不唯的問題。為了避免上述問題,根據(jù)多元函數(shù)的Taylor公式推導(dǎo)出了一種基于三元非線性方程組牛頓迭代法的并聯(lián)機器人運動學(xué)正解算法;同時,基于其數(shù)學(xué)原理,也可以得到并聯(lián)
    發(fā)表于 12-01 16:08 ?2次下載
    基于并聯(lián)機器人非<b class='flag-5'>線性方程</b><b class='flag-5'>求解</b>

    變頻電源特定消諧技術(shù)中非線性方程組解法的研究

    的數(shù)學(xué)模型及其非線性方程組用牛頓迭代法求解的步驟,總結(jié)出了非線性方程組中開關(guān)角兩解給初值的規(guī)律,蛤出了開關(guān)角兩解隨基波幅值變化的軌跡;設(shè)
    發(fā)表于 12-15 10:05 ?1次下載
    變頻電源特定消諧技術(shù)中非<b class='flag-5'>線性方程組</b>解法的研究

    基于壓縮存儲技術(shù)求解壓力Poisson方程的BICGSTAB算法

    基于投影算法所得壓力Poisson方程進行數(shù)值離散,對離散系統(tǒng)形成的稀疏線性方程組,由于線性方程組的系數(shù)矩陣存在大量的零元素,為降低內(nèi)存存儲,以
    發(fā)表于 01-14 16:04 ?0次下載

    使用MATLAB編程實現(xiàn)里查森迭代法線性方程組求解的資料和程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用MATLAB編程實現(xiàn)里查森迭代法線性方程組求解的資料和程序免費下載。
    發(fā)表于 08-09 16:56 ?0次下載
    使用MATLAB編程實現(xiàn)里查森迭代法<b class='flag-5'>線性方程組</b><b class='flag-5'>求解</b>的資料和程序免費下載

    基于除法畸變模型的鏡頭線性標定方法

    針對魚眼鏡頭的高精度標定需求,提岀一種基于除法畸變模型的線性標定方法。通過除法模型將題轉(zhuǎn)換為線性方程組
    發(fā)表于 05-19 11:39 ?7次下載

    MATLAB矩陣運算、線性方程組求解、特征值與特征向量

    MATLAB是個數(shù)學(xué)軟件,它對矩陣運算、線性方程組求解、特征值與特征向量等方面提供了強大的支持。
    的頭像 發(fā)表于 06-16 16:06 ?2613次閱讀
    RM新时代网站-首页