版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> C#課程設計報告書</b></p><p> 課題矩陣的按行按列讀取功能</p><p><b> 及矩陣的基本計算</b></p><p> 院 系 航空航天工程學部(院) </p><p> 專 業(yè) 飛行器設計與工程 </p>
2、;<p><b> 摘要</b></p><p> 作為一名飛行器設計的大二學生,在計算方法和線性代數(shù)課上已經(jīng)學習了矩陣的相關知識,但是,由于課時緊,并沒有很好的了解計算的根本原理,在計算時難免會遇到一些難題。因此,我計劃設計一個程序,可以進行矩陣的基本運算,并輸出結果,讓自己更加清楚計算的基本原理。</p><p> 該程序是用VISUAL ST
3、UDIO 2010,通過C#語言進行相關代碼的編寫,進行矩陣的按行按列讀取、轉置、高斯消元,求特征值。</p><p> 關鍵詞: 計算方法,線性代數(shù),矩陣的基本運算,VISUAL STUDIO 2010,</p><p><b> C#語言</b></p><p><b> 目錄</b></p>&l
4、t;p><b> 摘要2</b></p><p> 第一章 課設研究背景4</p><p><b> 1.1研究背景4</b></p><p> 1.2程序思路圖4</p><p> 第二章 各部分程序5</p><p> 2.1 按行按列
5、讀取生成矩陣程序5</p><p> 2.2 求轉置程序7</p><p> 2.3 高斯消元程序8</p><p> 2.3.1 輸出方程組的解程序8</p><p> 2.3.2 利用高斯消元法求線性方程組的解程序8</p><p> 2.3.3 選擇主元素程序10</p>
6、<p> 2.3.4 打印矩陣程序11</p><p> 第三章 程序設計中的重難點分析15</p><p> 第四章 課設總結16</p><p><b> 參考文獻17</b></p><p> 第一章 課設研究背景</p><p><b>
7、 1.1研究背景</b></p><p> 作為一名飛行器設計的大二學生,在計算方法和線性代數(shù)課上已經(jīng)學習了矩陣的相關知識,但是,由于課時緊,并沒有很好的了解計算的根本原理,在計算時難免會遇到一些難題。因此,我計劃設計一個程序,可以進行矩陣的基本運算,并輸出結果,讓自己更加清楚計算的基本原理。</p><p><b> 1.2程序思路圖</b><
8、/p><p> 給定矩陣的行數(shù)和列數(shù)</p><p> 輸入數(shù)據(jù),按行按列讀取,生成</p><p> 求轉置 選主元 </p><p> 輸出結果 化為上三角矩陣</p><p><b> 求x </b>
9、;</p><p><b> 輸出結果</b></p><p> 圖1.1 程序思路圖</p><p> 第二章 各部分程序</p><p> 2.1 按行按列讀取生成矩陣程序</p><p><b> int a, b;</b></p><
10、;p> Console.WriteLine("請輸入矩陣的行數(shù):");</p><p> a = int.Parse(Console.ReadLine());</p><p> Console.WriteLine("請輸入矩陣的列數(shù):");</p><p> b = int.Parse(Console.ReadL
11、ine());</p><p> int[,] juzhen = new int[a, b];</p><p> for (int i = 0; i < juzhen.GetLength(0); i++)</p><p><b> {</b></p><p> for (int j = 0; j <
12、juzhen.GetLength(1); j++)</p><p><b> {</b></p><p> Console.WriteLine("請輸入一個數(shù):");</p><p> juzhen[i, j] = int.Parse(Console.ReadLine());</p><p>&
13、lt;b> }</b></p><p><b> }</b></p><p> Console.WriteLine("矩陣為:");</p><p> for (int i = 0; i < juzhen.GetLength(0); i++)</p><p><b
14、> {</b></p><p> for (int j = 0; j < juzhen.GetLength(1); j++)</p><p><b> {</b></p><p> Console.Write("{0,5:d}", juzhen[i, j]);</p><p
15、><b> }</b></p><p> Console.WriteLine();</p><p><b> }</b></p><p> Console.ReadLine();</p><p> 圖2.1 矩陣的輸出(一)</p><p> 圖2.2
16、矩陣的輸出(二)</p><p><b> 2.2 求轉置程序</b></p><p> int[,] zhuanzhi = new int[b, a];</p><p> Console.WriteLine("轉置為:");</p><p> for (int i = 0; i < j
17、uzhen.GetLength(1); i++)</p><p><b> {</b></p><p> for (int j = 0; j < juzhen.GetLength(0); j++)</p><p><b> {</b></p><p> zhuanzhi[i, j] =
18、 juzhen[j, i];</p><p> Console.Write(" " + zhuanzhi[i, j]);</p><p><b> }</b></p><p> Console.WriteLine();</p><p><b> }</b></p&g
19、t;<p> Console.ReadLine();</p><p> 圖2.3 矩陣的轉置</p><p> 2.3 高斯消元程序</p><p> 2.3.1 輸出方程組的解程序</p><p><b> int n=4; </b></p><p> double
20、[,]juzhen={{10,-1,2,0,6},{-1,11,-1,3,25},{2,-1,10,-1,-11},</p><p> {0,3,-1,8,5}}; </p><p> double[]x=new double[n];</p><p> Gauss(n, juzhen, x); </p><p> Console.Wr
21、iteLine("方程組的解為:");</p><p> for (int i = 0; i < n; i++)</p><p><b> {</b></p><p> Console.Write("x({0})={1,8:F3} ", i, x[i]);</p><p&g
22、t;<b> }</b></p><p> Console.WriteLine();</p><p> 2.3.2 利用高斯消元法求線性方程組的解程序</p><p> public static void Gauss(int n, double[,] a, double[] x) </p><p><b
23、> { </b></p><p> double d; </p><p> Console.WriteLine("高斯消去法解方程組的中間過程"); </p><p> Console.WriteLine("============================"); </p><
24、;p> Console.WriteLine("中間過程"); </p><p> Console.WriteLine("增廣矩陣:");</p><p> printArray(n, a);</p><p> Console.WriteLine();</p><p> for(int k
25、 = 0; k < n; k++)</p><p><b> {</b></p><p> Console.WriteLine("第{0}步", k + 1); </p><p> Console.WriteLine("初始矩陣:);</p><p> printArray(n
26、, a);</p><p> Console.WriteLine();</p><p> selectMainElement(n, k, a); </p><p> Console.WriteLine("選擇主元素后的矩陣:");</p><p> printArray(n, a);</p><
27、p> Console.WriteLine();</p><p> d = a[k, k];</p><p> for (int j = k; j <= n; j++)</p><p><b> {</b></p><p> a[k, j] = a[k, j] / d;</p><
28、p><b> }</b></p><p> Console.WriteLine("將第{0}行中a[{0},{0}]化為a1后的矩</p><p> 陣:", k + 1); </p><p> printArray(n, a); </p><p> Console.WriteLine
29、();</p><p> for(int i = k + 1; i < n; i++) </p><p><b> { </b></p><p> d = a[i, k];</p><p> for (int j = k; j <= n; j++)</p><p><b&
30、gt; {</b></p><p> a[i, j] = a[i, j] - d * a[k, j];</p><p><b> }</b></p><p><b> } </b></p><p> Console.WriteLine("消元后的矩陣:");
31、 </p><p> printArray(n, a); </p><p> Console.WriteLine(); </p><p><b> }</b></p><p> x[n - 1] = a[n - 1, n]; </p><p> for (int i = n - 1; i
32、 >= 0; i--) </p><p><b> { </b></p><p> x[i] = a[i, n];</p><p> for (int j = i + 1; j < n; j++)</p><p><b> {</b></p><p>
33、x[i] = x[i] - a[i, j] * x[j];</p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p> 2.3.3 選擇主元素程序</p><p> p
34、ublic static void selectMainElement(int n, int k, double[,] a)</p><p><b> {</b></p><p> double t, mainElement;</p><p><b> int l;</b></p><p>
35、 mainElement = Math.Abs(a[k, k]);</p><p><b> l = k; </b></p><p> for(int i = k + 1; i < n; i++) </p><p><b> { </b></p><p> if (mainElemen
36、t < Math.Abs(a[i, k]))</p><p><b> { </b></p><p> mainElement = Math.Abs(a[i, k]);</p><p><b> l = i;</b></p><p><b> }</b></
37、p><p><b> }</b></p><p> if (l != k) </p><p><b> {</b></p><p> for (int j = k; j <= n; j++) </p><p><b> { </b></
38、p><p> t = a[k, j];</p><p> a[k, j] = a[l, j];</p><p> a[l, j] = t;</p><p><b> }</b></p><p><b> }</b></p><p><b&g
39、t; }</b></p><p> 2.3.4 打印矩陣程序</p><p> public static void printArray(int n, double[,] a) </p><p><b> {</b></p><p> for(int i = 0; i < n; i++)
40、</p><p><b> {</b></p><p> for (int j = 0; j <= n; j++)</p><p><b> {</b></p><p> Console.Write("{0,10:F6} ", a[i, j]);</p>
41、<p><b> }</b></p><p> Console.WriteLine();</p><p><b> } </b></p><p><b> }</b></p><p> 圖2.4 增廣矩陣</p><p>
42、圖2.5 高斯消元第一步</p><p> 圖2.6 高斯消元第二步</p><p> 圖2.7 高斯消元第三步</p><p> 圖2.8 高斯消元第四步</p><p> 圖2.9 方程組的解</p><p> 第三章 程序設計中的重難點分析</p><p> 在本次
43、課程設計中的難點就是高斯消元。高斯消元中,第一步要進行選主元,即將x1對應的系數(shù)從大到小排列,然后將方程的順序交換。這一步用的是c#中最基本的排序功能。同事,這一步還用到了for循環(huán)的嵌套。第二步是將原矩陣化為上三角矩陣,這一步用到了for循環(huán)的嵌套并多次使用。第三步是輸出方程組的解,這一步同樣用到了for循環(huán),但不是嵌套。</p><p><b> 第四章 課設總結</b></p
44、><p> 本次為期兩周的課程設計,使我不僅將所學到的C#知識得以實踐,還學到了很多在課堂上沒有學到的東西,這對我的學習幫助很大。</p><p> 通過獨立完成一個自己比較喜歡的題目,并在題目的編寫過程中,不斷的遇到問題和解決問題,不僅可以鍛煉我的運用c#的能力,還可以增加我對c#的喜愛,并激勵我在以后去學習并研究它。</p><p> 同時,通過課設,我還發(fā)現(xiàn)
45、了自己學習中的很多不足。比如,由于我所學的知識只是皮毛,因此無法應對所有出現(xiàn)的問題,不得不尋求幫助。在解決問題的同時,我也弄明白了很多新的未知的東西,這種收獲的喜悅是無法用語言形容的。的確,計算機語言是復雜和枯燥的,但是掌握好一門語言,不僅是你多了一種技術,而且能夠幫助你在以后的找工作中脫穎而出。</p><p> 經(jīng)過課設,我更加堅定了以后好好學習c#的決心。荀子曾說過“不登高山,不知天之高也;不臨深溪,不知
46、地之厚也?!睂W以致用才是目的。同樣,有了興趣,學習才會變?yōu)橐患鞓返氖拢?lt;/p><p><b> 參考文獻</b></p><p> [1] 明日科技著 C#4.0從入門到精通 機械工業(yè)出版社 2011</p><p> [2] 明日科技著 C#經(jīng)典編程220例 清華大學出版社2012</p><p> [3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論