解線性代數(shù)方程組直接法的matlab gui設(shè)計(jì)[畢業(yè)論文]_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  本科畢業(yè)論文(設(shè)計(jì))</p><p><b>  (20 屆)</b></p><p>  解線性代數(shù)方程組直接法的MATLAB GUI設(shè)計(jì)</p><p>  所在學(xué)院 </p><p>  專業(yè)班級(jí) 信息與計(jì)算科學(xué)

2、 </p><p>  學(xué)生姓名 學(xué)號(hào) </p><p>  指導(dǎo)教師 職稱 </p><p>  完成日期 年 月 </p><p>  摘要: 本文首先介紹了MATLAB GUI,以及它在數(shù)值計(jì)算方面的

3、一些應(yīng)用。然后介紹了線性代數(shù)的起源及線性代數(shù)方程組的一些相關(guān)知識(shí)。再接著介紹了解線性代數(shù)方程組直接法的幾種方法,如Gauss消元法,矩陣的LU分解,選主元的消元法,特殊矩陣的消元法等。最后應(yīng)用MATLAB編寫程序?qū)崿F(xiàn)用幾種直接法來求解線性代數(shù)方程組,并用MATLAB GUI設(shè)計(jì)圖形用戶界面實(shí)現(xiàn)數(shù)據(jù)可視化。</p><p>  關(guān)鍵詞:MATLAB GUI;線性方程組;Gauss消元法 ;LU分解</p>

4、;<p>  Solving Linear Algebra Equations Direct Method </p><p>  of MATLAB GUI Design</p><p>  Abstract:In this paper the software of MATLAB GUI and the application of MATLAB in numerical

5、are introduced. Then the origin of linear algebra and some introduction about linear algebra equations are introduced. And then the linear algebra equations about direct method is introduced. For example, the matrix Gau

6、ss elimination method,LU decomposition, Pivoting elimination method,special matrix the elimination method, etc. Finally several linear algebra equations are solved by MATLAB programming,a</p><p>  Keywords:

7、MATLAB GUI, Linear equations ,Gauss elimination method, LU decomposition. </p><p><b>  目錄</b></p><p><b>  1 緒論1</b></p><p>  1.1 問題的背景、意義1</p><

8、;p>  1.1.1 背景1</p><p>  1.1.2 意義1</p><p>  2 MATLAB軟件介紹2</p><p>  2.1 MATLAB介紹2</p><p>  2.1.1 MATLAB軟件概況2</p><p>  2.1.2 MATLAB語言特點(diǎn)2</p&

9、gt;<p>  2.2 MATLAB GUI介紹3</p><p>  3解線性代數(shù)方程組的直接法5</p><p>  3.1線性代數(shù)的起源5</p><p>  3.2線性代數(shù)方程組的介紹6</p><p>  3.3解線性方程組的直接法7</p><p>  3.4 Gauss消元法

10、8</p><p>  4 MATLAB GUI在直接法解線性代數(shù)方程組中的應(yīng)用15</p><p><b>  5結(jié)論20</b></p><p>  致 謝錯(cuò)誤!未定義書簽。</p><p><b>  參考文獻(xiàn)21</b></p><p><b> 

11、 1 緒論</b></p><p>  1.1 問題的背景、意義</p><p><b>  1.1.1 背景</b></p><p>  由于計(jì)算機(jī)的發(fā)展和普及,科學(xué)計(jì)算已成為解決各類科學(xué)技術(shù)問題的重要手段。因此,掌握科學(xué)計(jì)算的基本原理和方法是當(dāng)今科學(xué)技術(shù)工作者不可缺少的本領(lǐng)和技能之一。并且經(jīng)過不斷的研究和累積,在現(xiàn)今科學(xué)研

12、究和工程實(shí)踐中,數(shù)值計(jì)算已經(jīng)發(fā)展成為一門用來分析數(shù)據(jù),解決實(shí)際問題的重要學(xué)科,成為繼理論分析、實(shí)驗(yàn)之后又一個(gè)重要的研究方法。</p><p>  MATLAB是一種數(shù)值計(jì)算環(huán)境和編程語言,主要包括MATLAB和Simulink兩大部分。</p><p>  MATLAB基于矩陣運(yùn)算,具有強(qiáng)大的數(shù)值分析、矩陣計(jì)算、信號(hào)處理和圖形顯示功能,其強(qiáng)大的數(shù)據(jù)處理能力和豐富的工具箱使得它的編程極為簡單

13、。 MATLAB既能進(jìn)行科學(xué)計(jì)算,又能開發(fā)出所需要的圖形界面[1]。</p><p><b>  1.1.2 意義</b></p><p>  人類為了認(rèn)識(shí)自然與改造自然,需要不斷地對(duì)自然界的各種現(xiàn)象進(jìn)行測(cè)量和研究,由于實(shí)驗(yàn)方法和實(shí)驗(yàn)設(shè)備的不完善,周遭環(huán)境的影響,以及受人們認(rèn)識(shí)能力所限等,測(cè)量和實(shí)驗(yàn)所得數(shù)據(jù)和被測(cè)量的真值之間,不可避免地存在著差異,這在數(shù)值上即表現(xiàn)為

14、誤差。同時(shí)在計(jì)算中,總是用近似值代替真值進(jìn)行計(jì)算,這也會(huì)產(chǎn)生誤差。為了充分認(rèn)識(shí)并盡量減小或消除誤差,必須對(duì)測(cè)量過程和科學(xué)實(shí)驗(yàn)中始終存在的誤差進(jìn)行研究[2]。研究誤差就要研究誤差的來源、分類、基本概念和誤差的傳播。而在研究誤差時(shí),要進(jìn)行一些復(fù)雜的計(jì)算,同時(shí)怎樣形象的表示誤差又是一個(gè)問題,所以運(yùn)用MATLAB的計(jì)算能力和MATLAB GUI的圖形顯示功能就能給研究誤差帶來很大的方便。</p><p>  2 MAT

15、LAB軟件介紹</p><p>  2.1 MATLAB介紹</p><p>  2.1.1 MATLAB軟件概況[3、4]</p><p>  “MATLAB”是“Matrix Laboratory”的縮寫。MATLAB的第一個(gè)版本是LINPACK和EISPACK庫的程序的一個(gè)接口,用來分析線性方程組。隨著MATLAB的演化,除了線性代數(shù)外,它還支持許多其他的

16、程序。MATLAB的核心仍然是基于命令行的交互式分析工具。用戶可以用類Fortran語言擴(kuò)展交互環(huán)境。交互環(huán)境中的程序以命令行的形式執(zhí)行。</p><p>  MATLAB是一個(gè)基本的應(yīng)用程序,它有一個(gè)稱為標(biāo)準(zhǔn)工具箱的巨大程序模塊庫。MATLAB工具箱包括解決實(shí)際問題的擴(kuò)展庫。由于繼承了LINPACK、EISPACK和LAPACK的特性,MATLAB對(duì)數(shù)值線性代數(shù)來說是一個(gè)高可靠的優(yōu)化系統(tǒng)。</p>

17、<p>  2.1.2 MATLAB語言特點(diǎn)[5、6]</p><p>  MATLAB語言有不同于其他高級(jí)語言的特點(diǎn),它被稱為第四代計(jì)算機(jī)語言,MATLAB語言的最大特點(diǎn)就是簡單和直接。它豐富的函數(shù)使開發(fā)者無須重復(fù)編程,只要簡單的調(diào)用和使用即可。MATLAB語言的主要特點(diǎn)可概括如下:</p><p> ?。?)以矩陣和數(shù)組為基礎(chǔ)的運(yùn)算</p><p>

18、;  MATLAB 是以矩陣為基礎(chǔ)的,不需要預(yù)先定義變量和矩陣(包括數(shù)組)的維數(shù),可以方便地進(jìn)行矩陣的算術(shù)運(yùn)算、關(guān)系運(yùn)算和邏輯運(yùn)算等。</p><p> ?。?) 簡單易學(xué),使用方便</p><p>  MATLAB 被稱為“草稿式”語言,這是因?yàn)槠浜瘮?shù)名和表達(dá)更接近我們書寫計(jì)算公式的思維表達(dá)方式,編寫MATLAB程序猶如在草稿紙上排列公式與求解問題,因此可以快速地驗(yàn)證工程技術(shù)人員的算法。

19、此外MATLAB還是一種解釋性語言,不需要專門的編譯器。</p><p> ?。?) 強(qiáng)大的圖形技術(shù)</p><p>  MATLAB具有非常強(qiáng)大的以圖形化顯示矩陣和數(shù)組的能力,同時(shí)它能給這些圖形增加注釋并且打印這些圖形。</p><p><b>  (4)編程效率極高</b></p><p>  MATLAB 是一種面

20、向科學(xué)和工程計(jì)算的高級(jí)語言。它以矩陣運(yùn)算為基礎(chǔ),極少的代碼即可實(shí)現(xiàn)復(fù)雜的功能。</p><p>  (5) 可擴(kuò)充性強(qiáng),具有方便的應(yīng)用程序接口</p><p>  MATLAB 不僅有豐富的庫函數(shù),而且用戶還可以根據(jù)需要方便地編寫和擴(kuò)充新的函數(shù)庫。</p><p>  2.2 MATLAB GUI介紹[7、8]</p><p>  MATL

21、AB 是一套高性能的數(shù)值計(jì)算和可視化軟件,它作為新興的編程語言和可視化工具,有著其他編程語言所不能比擬的優(yōu)勢(shì),如Fortan 語言是一種專用于科學(xué)計(jì)算的語言,但其圖形界面的功能比較弱,利用其開發(fā)的程序,用戶界面不友好,使用起來不方便,而VB、VC等可視化編程語言開發(fā)出來的程序界面友好,但由于其不是專用于科學(xué)計(jì)算的語言,因此其科學(xué)計(jì)算功能較弱。</p><p>  而MATLAB同時(shí)具備這兩方面的優(yōu)勢(shì),既能進(jìn)行科學(xué)

22、計(jì)算,又能開發(fā)出所需要的圖形界面,特別是Mathworks公司推出的MATLAB 6及以上的版本更是加強(qiáng)了圖形界面編程功能。</p><p>  圖形用戶界面(Graphical User Interface)是由窗口、光標(biāo)、按鍵、菜單、文字說明等對(duì)象(Objects)構(gòu)成的一個(gè)用戶界面。程序的用戶界面是用戶與計(jì)算機(jī)程序的交互方式,用戶通過鍵盤、鼠標(biāo)等輸入設(shè)備與計(jì)算機(jī)交換信息。用戶以某種方式選擇或激活這些對(duì)象,會(huì)

23、引起動(dòng)作或發(fā)生變化,例如調(diào)用計(jì)算程序或者繪圖等。</p><p>  創(chuàng)建MATLAB用戶界面必須具有以下3個(gè)基本元素:</p><p><b>  組件</b></p><p>  在MATLAB GUI中的每一個(gè)項(xiàng)目(按鈕、標(biāo)簽、編輯框等)都是一個(gè)圖形化組件。組件可分為3類:圖形化控件(按鈕、編輯框、列表、滾動(dòng)條等)、靜態(tài)元素(窗口和文本字

24、符串)、菜單和坐標(biāo)系。</p><p><b> ?。?)圖形窗口</b></p><p>  GUI的每一個(gè)組件都必須安排在圖像窗口中。在畫圖像時(shí),圖像窗口通常會(huì)被自動(dòng)創(chuàng)建。但還可以用函數(shù)figure來創(chuàng)建空?qǐng)D像窗口,空?qǐng)D像窗口經(jīng)常用于放置各種類型的組件。</p><p><b> ?。?)回應(yīng)</b></p>

25、;<p>  如果用戶用鼠標(biāo)單擊或者用鍵盤輸入一些信息,那么程序就要有相應(yīng)的動(dòng)作。鼠標(biāo)單擊或輸入信息是一個(gè)事件,如果MATLAB程序運(yùn)行相應(yīng)的函數(shù),那么MATLAB函數(shù)肯定會(huì)有所反應(yīng)。</p><p>  實(shí)現(xiàn)一個(gè)GUI的過程包括兩個(gè)基本任務(wù):一是GUI的組件布局,另一個(gè)是GUI組件編程。</p><p>  GUI也是一種Matlab對(duì)象,可以使用M文件來創(chuàng)建M文件,這也是

26、最基礎(chǔ)的,使用其他方法創(chuàng)建時(shí),也需要編寫相應(yīng)的程序代碼。除了使用M文件來創(chuàng)建GUI對(duì)象外,Matlab還為用戶開發(fā)圖形界面提供一個(gè)方便高效的繼承開發(fā)環(huán)境:Matlab圖形用戶界面開發(fā)環(huán)境(Matlab Graphical User Interface Development Environment,GUIDE)。其主要是一個(gè)界面設(shè)計(jì)工具集,他將所有GUI所支持的用戶控件都集成起來,同時(shí)提供界面外觀、屬性和行為響應(yīng)方法的設(shè)置方法。除了可以

27、使用GUIDE創(chuàng)建GUI之外,還可以將設(shè)計(jì)好的GUI界面保存為一個(gè)FIG資源文件,同時(shí)自動(dòng)生成對(duì)應(yīng)的M 文件。該M文件包含了GUI初始化代碼和組建界面布局的控制代碼。</p><p>  MATLAB是一種面向?qū)ο蟮母呒?jí)計(jì)算機(jī)語言,其數(shù)據(jù)可視化技術(shù)中的各種圖形元素,實(shí)際上都是抽象圖形對(duì)象的實(shí)例,MATLAB中由圖形命令產(chǎn)生的每一件東西都是圖形對(duì)象。它們包括圖形窗口,還有坐標(biāo)軸、線條、曲面、文本和其他。各種圖形對(duì)象

28、和其間的關(guān)系如下圖所示。</p><p>  3解線性代數(shù)方程組的直接法</p><p>  3.1線性代數(shù)的起源</p><p>  線性代數(shù)(Linear Algebra)是數(shù)學(xué)的一個(gè)分支,它的研究對(duì)象是向量,向量空間(或稱線性空間),線性變換和有限維的線性方程組。向量空間是現(xiàn)代數(shù)學(xué)的一個(gè)重要課題;因而,線性代數(shù)被廣泛地應(yīng)用于抽象代數(shù)和泛函分析中;通過解析幾何,

29、線性代數(shù)得以被具體表示。線性代數(shù)的理論已被泛化為算子理論。由于科學(xué)研究中的非線性模型通??梢员唤茷榫€性模型,使得線性代數(shù)被廣泛地應(yīng)用于自然科學(xué)和社會(huì)科學(xué)中。</p><p>  線性代數(shù)起源于對(duì)二維和三維直角坐標(biāo)系的研究。 在這里,一個(gè)向量是一個(gè)有方向的線段,由長度和方向同時(shí)表示。這樣向量可以用來表示物理量,比如力,也可以和標(biāo)量做加法和乘法。這就是實(shí)數(shù)向量空間的第一個(gè)例子。</p><p&g

30、t;  現(xiàn)代線性代數(shù)已經(jīng)擴(kuò)展到研究任意或無限維空間。一個(gè)維數(shù)為 n 的向量空間叫做 n 維空間。在二維和三維空間中大多數(shù)有用的結(jié)論可以擴(kuò)展到這些高維空間。盡管許多人不容易想象 n 維空間中的向量,這樣的向量(即 n 元組)用來表示數(shù)據(jù)非常有效。由于作為 n 元組,向量是 n 個(gè)元素的“有序”列表,大多數(shù)人可以在這種框架中有效地概括和操縱數(shù)據(jù)。比如,在經(jīng)濟(jì)學(xué)中可以使用 8 維向量來表示 8 個(gè)國家的國民生產(chǎn)總值(GNP)。當(dāng)所有國家的順序

31、排定之后,比如 (中國, 美國, 英國, 法國, 德國, 西班牙, 印度, 澳大利亞),可以使用向量 (v1, v2, v3, v4, v5, v6, v7, v8) 顯示這些國家某一年各自的 GNP。這里,每個(gè)國家的 GNP 都在各自的位置上。</p><p>  作為證明定理而使用的純抽象概念,向量空間(線性空間)屬于抽象代數(shù)的一部分,而且已經(jīng)非常好地融入了這個(gè)領(lǐng)域。一些顯著的例子有: 不可逆線性映射或矩陣的

32、群,向量空間的線性映射的環(huán)。 線性代數(shù)也在數(shù)學(xué)分析中扮演重要角色,特別在 向量分析中描述高階導(dǎo)數(shù),研究張量積和可交換映射等領(lǐng)域。</p><p>  向量空間是在域上定義的,比如實(shí)數(shù)域或復(fù)數(shù)域。線性算子將線性空間的元素映射到另一個(gè)線性空間(也可以是同一個(gè)線性空間),保持向量空間上加法和標(biāo)量乘法的一致性。所有這種變換組成的集合本身也是一個(gè)向量空間。如果一個(gè)線性空間的基是確定的,所有線性變換都可以表示為一個(gè)數(shù)表,稱為

33、矩陣。對(duì)矩陣性質(zhì)和矩陣算法的深入研究(包括行列式和特征向量)也被認(rèn)為是線性代數(shù)的一部分。</p><p>  我們可以簡單地說數(shù)學(xué)中的線性問題——-那些表現(xiàn)出線性的問題——是最容易被解決的。比如微分學(xué)研究很多函數(shù)線性近似的問題。 在實(shí)踐中與非線性問題的差異是很重要的。</p><p>  線性代數(shù)方法是指使用線性觀點(diǎn)看待問題,并用線性代數(shù)的語言描述它、解決它(必要時(shí)可使用矩陣運(yùn)算)的方法。

34、這是數(shù)學(xué)與工程學(xué)中最主要的應(yīng)用之一[9]。</p><p>  3.2線性代數(shù)方程組的介紹</p><p> ?。?)定義:稱 個(gè)方程 個(gè)未知數(shù)的方程組 </p><p><b> ?。?) </b></p><p>  為一 (階)線性(代數(shù))方程組。當(dāng) 錯(cuò)誤!未找到引用源。不全為0時(shí),稱方程組(1)為非齊次線性方程組

35、;當(dāng) 錯(cuò)誤!未找到引用源。全為0時(shí),稱方程組(1)為齊次線性方程組。如果方程組(1)有解,則稱(1)是相容的線性方程組,否則稱為矛盾的(或不相容的,或無解的)線性方程組。 </p><p>  稱矩陣為方程組(1)的系數(shù)矩陣, </p><p>  稱矩陣稱為方程組(1)的增廣矩陣。 </p><p>  列向量稱為方程組(1)的右端項(xiàng)或常向量或右端向量。 <

36、/p><p>  列向量稱為方程組(1)的未知向量。 </p><p>  (2)線性方程組的初等變換:以下三種變換稱為方程組的初等變換: </p><p> ?、?交換兩個(gè)方程的位置, </p><p> ?、?用非零數(shù) 乘某一個(gè)方程, </p><p> ?、?把一個(gè)方程的 倍加到另一個(gè)方程[10]。</p>

37、;<p>  3.3解線性方程組的直接法</p><p>  計(jì)算數(shù)學(xué)的一個(gè)基本組成部分。在自然科學(xué)和工程技術(shù)的許多問題中,例如結(jié)構(gòu)分析、網(wǎng)絡(luò)分析、大地測(cè)量、數(shù)據(jù)分析、最優(yōu)化以及非線性方程組和微分方程數(shù)值解等,都常遇到求解線性代數(shù)方程組的問題。早在中國古代的《九章算術(shù)》中,就已載述了解線性方程組的消元法。到19世紀(jì)初,西方也有了高斯消元法。然而求解未知數(shù)很多的大型線性代數(shù)方程組,則是在20世紀(jì)中葉電

38、子計(jì)算機(jī)問世以后才成為可能。如何利用計(jì)算機(jī)更精確、更有效地解大型線性代數(shù)方程組是計(jì)算數(shù)學(xué)研究中的基本性的重要課題之一。   設(shè)含有n個(gè)未知數(shù)、n個(gè)方程的方程組為 </p><p>  (1)式中為已知數(shù),其相應(yīng)的矩陣表達(dá)式為   </p><p> ?。?)用矩陣和向量的符號(hào),又可簡記為 </p><p><b>  A=λf   </b>&

39、lt;/p><p> ?。?)式中A為(2)中的n階系數(shù)矩陣( 錯(cuò)誤!未找到引用源。);λ、f分別為(2)中 錯(cuò)誤!未找到引用源。及 錯(cuò)誤!未找到引用源。構(gòu)成的n維向量。如果A的行列式detA 錯(cuò)誤!未找到引用源。0,則按克拉默法則,式(3)的解為: </p><p>  錯(cuò)誤!未找到引用源。=det 錯(cuò)誤!未找到引用源。/detA,</p><p>  式中Ai是把A

40、中的第i列元素用 錯(cuò)誤!未找到引用源。, 錯(cuò)誤!未找到引用源。,…, 錯(cuò)誤!未找到引用源。代替后所得的矩陣。該法則之功效主要在于其理論意義,若用于數(shù)值求解,則因n+1個(gè)n階行列式求值的計(jì)算量很大而不實(shí)用[11,12]。  在計(jì)算實(shí)踐中,通常采用的線性代數(shù)方程組的數(shù)值解法大體上可分為直接法和迭代法兩大類。直接法是在沒有舍入誤差的假設(shè)下,經(jīng)過有限次運(yùn)算就可得到方程組的精確解的方法,如各種形式的消元法。迭代法則是采取逐次逼近的方法,亦即從一

41、個(gè)初始向量出發(fā),按照一定的計(jì)算格式(迭代公式),構(gòu)造一個(gè)向量的無窮序列,其極限才是方程組的精確解。只經(jīng)過有限次計(jì)算得不到精確解。熟知的簡單迭代法、高斯-賽德爾迭代法、松弛法等都屬此類。上兩種方法各有優(yōu)缺點(diǎn),直接法普遍適用,但要求計(jì)算機(jī)有較大的存儲(chǔ)量,迭代法要求的存儲(chǔ)量較小,但必須在收斂性得以保證的情況下才能使用。直接法可以求得精確解是指就計(jì)算公式而言保證得到精確解,但計(jì)算機(jī)計(jì)算過程中的舍入誤差是不可避免的,這種誤差對(duì)解的精度影響會(huì)不會(huì)太

42、大,也就是計(jì)算的穩(wěn)定性,是要考慮的問題。對(duì)于迭代法,其收斂性則是要考慮的問題。   所以,不論是直接法還</p><p>  3.4 Gauss消元法</p><p>  一個(gè)n 錯(cuò)誤!未找到引用源。m矩陣是一個(gè)具有n行m列元素的矩形陣,在此矩陣中不僅每個(gè)元素的值是重要的,而且元素在矩陣中的位置也是重要的。</p><p>  n 錯(cuò)誤!未找到引用源。矩陣的記號(hào)是

43、用大寫字母表示的,例如A表示矩陣,用具有兩個(gè)下標(biāo)的小寫字母表示位于第i和第j列交點(diǎn)處的元素,例如 錯(cuò)誤!未找到引用源。;即</p><p><b>  例1 矩陣</b></p><p>  是一個(gè)2 錯(cuò)誤!未找到引用源。3矩陣,且 錯(cuò)誤!未找到引用源。=2, 錯(cuò)誤!未找到引用源。=-1, 錯(cuò)誤!未找到引用源。=7, 錯(cuò)誤!未找到引用源。=3, 錯(cuò)誤!未找到引用源。

44、=1和</p><p>  錯(cuò)誤!未找到引用源。=0。</p><p>  1 錯(cuò)誤!未找到引用源。n矩陣</p><p>  稱為n維行向量,n 錯(cuò)誤!未找到引用源。1矩陣</p><p>  稱為n維列向量。通常對(duì)于向量省略不必需的下標(biāo),黑體小寫字母用作記號(hào)。這樣,有</p><p><b>  表示列向

45、量,和</b></p><p><b>  表示行向量。</b></p><p><b>  線性方程組</b></p><p>  錯(cuò)誤!未找到引用源。 錯(cuò)誤!未找到引用源。 </p><p>  可以用一個(gè)n 錯(cuò)誤!未找到引用源。(n+1)矩陣表示,首先構(gòu)造&l

46、t;/p><p>  然后將這些矩陣結(jié)合以形成增廣矩陣</p><p>  其中垂直的點(diǎn)線用于將未知量的系數(shù)和方程右端的值分離開。</p><p>  對(duì)矩陣記號(hào)重復(fù)例1中的運(yùn)算導(dǎo)致首先考慮增廣矩陣:</p><p>  進(jìn)行如在例1中所述的運(yùn)算得到矩陣</p><p>  現(xiàn)在,最后的矩陣可以轉(zhuǎn)化為對(duì)應(yīng)的線性方程組,對(duì)于

47、 錯(cuò)誤!未找到引用源。, 錯(cuò)誤!未找到引用源。, 錯(cuò)誤!未找到引用源。和 錯(cuò)誤!未找到引用源。得到解。此過程所涉及的方法稱為具有向后代換的Gauss消去法。</p><p><b>  應(yīng)用于線性方程組</b></p><p><b>  (6.4) </b></p><p><b>  ?</b>

48、</p><p>  的一般Gauss消去過程以類似的方式進(jìn)行。首先形成增廣矩陣 錯(cuò)誤!未找到引用源。:</p><p><b>  (6.5)</b></p><p>  其中,A表示由系數(shù)形成的矩陣。在第(n+1)列中的項(xiàng)為b的值;即, 錯(cuò)誤!未找到引用源。= 錯(cuò)誤!未找到引用源。對(duì)每個(gè)i=1,2,…,n。</p><p

49、>  只要 錯(cuò)誤!未找到引用源。0,對(duì)每個(gè)j=2,3,…,n對(duì)應(yīng)于的運(yùn)算就可完成以消去每行中 錯(cuò)誤!未找到引用源。的系數(shù)。雖然在第2,3,…n行中的項(xiàng)有可能變化,但是為記號(hào)方便,仍記第i行和第j列的項(xiàng)為。記住這一點(diǎn),對(duì)i=2,3…,n-1按照這個(gè)順序過程進(jìn)行運(yùn)算,其中j=i+1,i+2,…n,要求 錯(cuò)誤!未找到引用源。0。對(duì)所有值i=1,2…,n-1,這個(gè)消去了(將系數(shù)變?yōu)榱悖┰诘趇行下面的每行中的 錯(cuò)誤!未找到引用源。。所得矩陣

50、具有形式</p><p>  錯(cuò)誤!未找到引用源。</p><p>  其中,除了第一行外,的值不與原矩陣 錯(cuò)誤!未找到引用源。中的值一致。矩陣 錯(cuò)誤!未找到引用源。代表與原方程組(6.4)具有相同解集的線性方程組。因?yàn)樾碌木€性方程組是三角形的</p><p>  錯(cuò)誤!未找到引用源。 錯(cuò)誤!未找到引用源。 錯(cuò)誤!未找到引用源。</p&

51、gt;<p>  可以進(jìn)行向后替換。對(duì) 錯(cuò)誤!未找到引用源。求解第n個(gè)方程得到</p><p>  對(duì) 錯(cuò)誤!未找到引用源。求解第(n-1)個(gè)方程并用 錯(cuò)誤!未找到引用源。,得</p><p><b>  繼續(xù)這個(gè)過程得到</b></p><p>  對(duì)每個(gè)i=n-1,n-2…2,1。</p><p>  

52、雖然較為復(fù)雜,但是Gauss消去過程可以更精確地表示出來,通過形成增廣矩陣序列 錯(cuò)誤!未找到引用源。(1), 錯(cuò)誤!未找到引用源。(2),… 錯(cuò)誤!未找到引用源。(n),其中 錯(cuò)誤!未找到引用源。(1)是式(6.5)給出的矩陣 錯(cuò)誤!未找到引用源。,且對(duì)每個(gè)k=2,3,…,n, 錯(cuò)誤!未找到引用源。(k)具有元素 錯(cuò)誤!未找到引用源。,這里</p><p>  因此有代表等價(jià)的線性方程組,變量 錯(cuò)誤!未找到引用源

53、。剛從方程 錯(cuò)誤!未找到引用源。, 錯(cuò)誤!未找到引用源。,…, 錯(cuò)誤!未找到引用源。中消去。</p><p>  如果元素 錯(cuò)誤!未找到引用源。, 錯(cuò)誤!未找到引用源。, 錯(cuò)誤!未找到引用源。,…, 錯(cuò)誤!未找到引用源。, 錯(cuò)誤!未找到引用源。中的一個(gè)為零,則方法失敗,因?yàn)檫\(yùn)算步驟</p><p>  或者不能完成(如果 錯(cuò)誤!未找到引用源。,…, 錯(cuò)誤!未找到引用源。中之一為零,此情況發(fā)

54、生),或者向后代換不能完成。方程組可能仍然有解,但是求解的方法必須改變。在下例中我們給出一個(gè)示范。</p><p>  例2 考慮線性方程組</p><p><b>  增廣矩陣為</b></p><p>  錯(cuò)誤!未找到引用源。= 錯(cuò)誤!未找到引用源。=</p><p><b>  進(jìn)行運(yùn)算</b&g

55、t;</p><p>  (E2-2E1)→(E2),(E3-E1)→(E3)和(E4-E1)→(E4)</p><p><b>  得到</b></p><p>  錯(cuò)誤!未找到引用源。=</p><p>  因?yàn)榉Q作主元素的 錯(cuò)誤!未找到引用源。為零,在目前的形式下此過程不能繼續(xù)。但是運(yùn)算(Ei) 錯(cuò)誤!未找到引用源

56、。(Ej)是允許的,所以進(jìn)行搜索尋找 錯(cuò)誤!未找到引用源。和 錯(cuò)誤!未找到引用源。中的第一個(gè)非零元素。因?yàn)?錯(cuò)誤!未找到引用源。0,所以進(jìn)行運(yùn)算(E2) 錯(cuò)誤!未找到引用源。(E3)以得到一個(gè)新矩陣</p><p>  錯(cuò)誤!未找到引用源。=</p><p>  因?yàn)?錯(cuò)誤!未找到引用源。已經(jīng)從E3和E4中消去,所以 錯(cuò)誤!未找到引用源。將是 錯(cuò)誤!未找到引用源。,計(jì)算得以繼續(xù)進(jìn)行,運(yùn)算(

57、E4+2E3)→(E4),得</p><p>  錯(cuò)誤!未找到引用源。=</p><p>  最后,應(yīng)用向后代換:</p><p>  例2示范了如果對(duì)某個(gè)k=1,2…,n-1有 錯(cuò)誤!未找到引用源。=0,應(yīng)怎樣處理。搜索從第k行到第n行中的 錯(cuò)誤!未找到引用源。的第k列,找出第一個(gè)非零元素。如果對(duì)某個(gè)p有 錯(cuò)誤!未找到引用源。0,k+1 錯(cuò)誤!未找到引用源。n,則

58、進(jìn)行運(yùn)算(Ek) 錯(cuò)誤!未找到引用源。(Ep)得到 錯(cuò)誤!未找到引用源。。這個(gè)過程則可以繼續(xù)下去用以形成 錯(cuò)誤!未找到引用源。,等等。如果對(duì)每個(gè)p有 錯(cuò)誤!未找到引用源。=0,那么可以證明線性方程組沒有唯一解,算法停止。最后,如果 錯(cuò)誤!未找到引用源。=0,則線性方程組沒有唯一解,算法也就要停止了。算法總結(jié)了具有向后代換的Gauss消去法。算法結(jié)合了主元,當(dāng)主元 錯(cuò)誤!未找到引用源。之一為0時(shí),將第k行與第p行交換,這里p是比k大的 錯(cuò)

59、誤!未找到引用源。不為零的最小整數(shù)[14]。</p><p>  4 MATLAB GUI在直接法解線性代數(shù)方程組中的應(yīng)用</p><p>  MATLAB GUI友好的圖形用戶界面,強(qiáng)大計(jì)算能力,可以實(shí)現(xiàn)數(shù)據(jù)可視化,從而很好地演示了用各種迭代法來求解線性代數(shù)方程組,并且很直觀地反映了各種迭代法的性能</p><p>  例1:用追趕法求解下面的方程組</p

60、><p>  打開GUI設(shè)計(jì)工具,選擇空白模塊,出現(xiàn)如下的圖形設(shè)計(jì)界面。</p><p>  在布局編輯器中布置空間:</p><p>  (1)建立1個(gè) 坐標(biāo)軸對(duì)象,用于顯示追趕法解求解線性方程組圖。</p><p> ?。?)建立1個(gè)按鈕,分別用追趕法求解線性代數(shù)方程組。</p><p> ?。?)建立1個(gè)可編輯文本框

61、,分別用來輸入與該線性代數(shù)方程組相關(guān)的A、b</p><p>  界面設(shè)計(jì)布局如下圖所示,保存為bysj.fig文件。</p><p>  2.打開bysj.m文件,添加相應(yīng)的代碼:</p><p><b>  追趕法</b></p><p>  function x=zgff(d,e,f,b)</p>&

62、lt;p>  % 輸入?yún)?shù)e為對(duì)角線向量,d為平行對(duì)角線向量下方的向量,f為平行對(duì)角線向量上方的向量,</p><p>  % b為線性方程右邊常數(shù)向量,n為線性方程維數(shù)</p><p>  n=length(b); r(1)=e(1);</p><p>  for i=1:n-1</p><p>  l(i)=d(i)/r(i);&l

63、t;/p><p>  r(i+1)=e(i+1)-l(i)*f(i);</p><p><b>  end</b></p><p>  y(1)=b(1);</p><p><b>  for i=2:n</b></p><p>  y(i)=b(i)-l(i-1)*y(i-1)

64、;</p><p><b>  end</b></p><p>  x(n)=y(n)/r(n);</p><p>  for i=n-1:-1:1</p><p>  x(i)=(y(i)-f(i)*x(i+1))/r(i);</p><p><b>  end</b>&l

65、t;/p><p><b>  3.運(yùn)行程序</b></p><p>  單擊“追趕法”按鈕,求解結(jié)果如下圖所示</p><p>  例2用LU分解求解下面的方程組</p><p>  打開GUI設(shè)計(jì)工具,選擇空白模塊,出現(xiàn)如下的圖形設(shè)計(jì)界面。</p><p>  在布局編輯器中布置空間:</p&

66、gt;<p> ?。?)建立1個(gè) 坐標(biāo)軸對(duì)象,用于顯示LU分解求解線性方程組圖。</p><p> ?。?)建立1個(gè)按鈕,分別用LU分解求解線性代數(shù)方程組。</p><p> ?。?)建立1個(gè)可編輯文本框,分別用來輸入與該線性代數(shù)方程組相關(guān)的A、b</p><p>  界面設(shè)計(jì)布局如下圖所示,保存為bysj.fig文件。</p><

67、p>  2.打開bysj.m文件,添加相應(yīng)的代碼:</p><p><b>  LU分解</b></p><p>  function [L,U]=lufenjie(A)</p><p>  format rat;</p><p>  n=size(A);n=n(1);</p><p>  

68、L=eye(n);U=zeros(n);</p><p><b>  for k=1:n</b></p><p>  U(1,k)=A(1,k);</p><p>  if U(1,1)~=0</p><p>  L(k,1)=A(k,1)/U(1,1);</p><p><b>  e

69、lse</b></p><p>  disp('不能LU分解');return</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  for i=2:n</b></p>&l

70、t;p><b>  for k=i:n</b></p><p><b>  s=0;</b></p><p>  for j=1:i-1 </p><p>  s=s+L(i,j)*U(j,k);</p><p><b>  end</b></p>

71、<p>  U(i,k)=A(i,k)-s;</p><p><b>  end</b></p><p>  if U(i,i)~=0</p><p>  for k=i+1:n</p><p><b>  t=0;</b></p><p>  for j=1:

72、i-1</p><p>  t=t+L(k,j)*U(j,i);</p><p><b>  end</b></p><p>  L(k,i)=(A(k,i)-t)/U(i,i);</p><p><b>  end</b></p><p><b>  else&l

73、t;/b></p><p>  disp('不能LU分解');return</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  3.運(yùn)行程序</b></p><p> 

74、 單擊“LU分解”按鈕,求解結(jié)果如下圖所示</p><p><b>  5結(jié)論</b></p><p>  本文首先介紹了MATLAB這個(gè)數(shù)學(xué)軟件,讓我們初步了解了MATLAB以及MATLAB GUI的一些情況。MATLAB是當(dāng)今最優(yōu)秀的科技應(yīng)用軟件之一,具有友好的工作平臺(tái)和編程環(huán)境,簡單易用的程序語言,強(qiáng)大的科學(xué)計(jì)算機(jī)數(shù)據(jù)處理能力,出色的圖形處理功能,應(yīng)用廣泛的模塊

75、集合工具箱,實(shí)用的程序接口和發(fā)布平臺(tái)和應(yīng)用軟件開發(fā)。[15]MATLAB GUI是MATLAB的圖形用戶界面,它有友好的程序界面,再加上MATLAB的強(qiáng)大計(jì)算能力,使得MATLAB軟件更受人們的歡迎。</p><p>  接著介紹了直接法解線性代數(shù)方程組方面的內(nèi)容。如Gauss消元法,矩陣的LU分解,選主元的消元法,特殊矩陣的消元法,追趕法等。MATLAB的強(qiáng)大計(jì)算能力和MATLAB GUI的友好圖形界面給直接法

76、解線性代數(shù)方程組研究帶來了很大的方便,例如在研究矩陣的LU分解,追趕法,Gauss消元法時(shí),使用MATLAB GUI的圖形顯示功能就能更加形象的顯示各種迭代法的收斂速度的快慢亦即求解效率的高低。</p><p>  通過這次論文的撰寫更好的掌握Matlab的基本語法、基本命令,Matlab函數(shù)程序設(shè)計(jì),會(huì)用Matlab編寫程序?qū)崿F(xiàn)數(shù)值計(jì)算,并會(huì)運(yùn)用Matlab GUI 進(jìn)行用戶界面設(shè)計(jì),同時(shí)用Matlab GUI

77、來實(shí)現(xiàn)解出線性方程組過程中的變化。除此,對(duì)MATLAB的掌握更進(jìn)一步,對(duì)于相關(guān)或類似的問題也能很好的處理,并且用軟件來求解更多的問題。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 拉克唐瓦爾德. 數(shù)值方法和MATLAB實(shí)現(xiàn)與應(yīng)用[M]. 北京:機(jī)械工業(yè)出版社,2004.9:.</p><p>  [2] 費(fèi)業(yè)泰.誤

78、差理論與數(shù)據(jù)處理[M].第4版 北京:機(jī)械工業(yè)出版社,2005:1~9.</p><p>  [3] 王素立,高潔,孫新德.MATLAB混合編程與工程[M].北京:清華大學(xué)出版社,2008.5:1~20.</p><p>  [4] 周小陽.數(shù)學(xué)軟件與MATLAB[M].武漢:華中科技大學(xué)出版社,2002.</p><p>  [5] 拉克唐瓦爾德.數(shù)值方法和MAT

79、LAB實(shí)現(xiàn)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2004.9:3~6.</p><p>  [6] John H.Mathews,Kurtis D.Fink.Numerical Methods Using MATLAB[M].BeiJing:Publishing House of Electronics Industry.2005.</p><p>  [7] 陳志杰.高等代數(shù)與解析幾何[M

80、].北京:高等教育出版社.2001.</p><p>  [8] 黃明游,劉潘,徐濤.數(shù)值計(jì)算方法[M].北京:科學(xué)出版社,2005:1~11.</p><p>  [9] Isaacson E,Keller H.B.Analysis of Numerical Methods[M].New York:John Wiley&Sons 1966.</p><p>

81、;  [10] 馮有前.數(shù)值分析[M].北京:清華大學(xué)出版社,2005.</p><p>  [11] 楊成森.數(shù)值計(jì)算方法[M].北京:科學(xué)出版社,1998.</p><p>  [12] 顏慶津.數(shù)值方法[M].北京:北京航空航天大學(xué)出版社,2006.</p><p>  [13] 王沫然. MATLAB與科學(xué)計(jì)算[M].北京:電子工業(yè)出版社.2004.<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論