




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C語言程序設(shè)計(jì) 姓 名 學(xué) 號 一卡通號 n階方陣求逆矩陣題目n階方陣求逆(B級)功能要求:輸入一個(gè)nn256階方陣A,方程系數(shù)矩陣與向量均從文本文件讀入;輸出A的逆矩陣至文本文件;將得到的逆矩陣與矩陣A相乘,驗(yàn)證其結(jié)果是否為單位矩陣。提示:具體算法可參考相關(guān)文獻(xiàn)。題目分析逆矩陣定義: 設(shè)A為n階方陣,如果存在n階方陣B,使得 AB=BA=E, 那么稱A是可逆的,并稱B是A的逆矩陣。否 那么,便說A是不可逆的。題目分析矩陣乘法: 假設(shè)A是一個(gè)m*n階矩陣,B是一個(gè)n*p階矩陣,那么AB=C是一個(gè)m*p階矩陣,而C中的每一個(gè)i,j元都等于A的第i行中的各元和B的第j列的各對應(yīng)元之乘積的和。 算法
2、設(shè)計(jì) 在數(shù)學(xué)問題中,求解方陣逆矩陣的方法有很多。其中比較常見的一種方法是用初等變換求方陣的逆矩陣,即高斯消元法求逆矩陣。高斯消元法可以用來找出一個(gè)可逆矩陣的逆矩陣。設(shè)A 為一個(gè)N * N的矩陣,其逆矩陣可被兩個(gè)分塊矩陣表示出來。將一個(gè)N * N單位矩陣 放在A 的右手邊,形成一個(gè)N * 2N的分塊矩陣B = A,I 。經(jīng)過高斯消元法的計(jì)算程序后,矩陣B 的左手邊會變成一個(gè)單位矩陣I ,而逆矩陣A - 1 會出現(xiàn)在B 的右手邊。 開始從文本讀入系數(shù)矩陣及向量將矩陣變成增廣矩陣找到一行中不為零的數(shù)是否跳出當(dāng)前循環(huán)該矩陣為奇異矩陣單位化矩陣消元直到循環(huán)玩每一行輸出逆矩陣至文本文件逆矩陣與原矩陣相乘結(jié)
3、束如下圖是程序的算法流程圖。從中我們可以看出該程序主要分為七局部,分別為:文件的讀入局部、判斷是否為逆矩陣局部、單位化矩陣局部、消元局部、打印步驟局部、檢驗(yàn)乘積局部及輸出局部。其中單位化和消元局部是本程序設(shè)計(jì)的核心,即高斯消元法的主要步驟。具體程序如下:/采用高斯消元法#include #include #define maxn 1000#define err 1e-8/宏定義保證計(jì)算中準(zhǔn)確性double amaxnmaxn*3;/maxn是代碼最大元素的下標(biāo)double abs(double a)/返回傳遞給它的參數(shù)的絕對值函數(shù) if (a0) return a; else return -
4、a;/定義絕對值函數(shù) 在運(yùn)算的過程中,我們要判斷一些數(shù)據(jù)是否為零,這時(shí)候我們采用宏定義#define err 1e-8方式,通過將得出數(shù)據(jù)在絕對值與e-8進(jìn)行比較,可以保證我們計(jì)算的準(zhǔn)確性。 int main() printf(Now read the matrix from m.txt.n); int n,i,j,k; double l; FILE * f1 =fopen(m.txt,r); fscanf(f1,%d,&n);/從文本文件讀入方程系數(shù)矩陣 memset(a,0,sizeof(a);/數(shù)組a初始化 for (i=0;in;i+) for (j=0;jn;j+) fscanf(f
5、1,%lf,&aij);/從文本讀入矩陣 aij+2*n=aij;/在n*2n階矩陣后再加上原矩陣形成n*3n階矩陣 fclose(f1); printf(Done reading.n);從文本文件分別讀入方程系數(shù)矩陣與向量 for (i=0;in;i+) aii+n=1;/建立單位矩陣,即將單位矩陣變成伴隨矩陣 for (i=0;in;i+) bool got=false;/定義布爾型變量 for (j=i;jerr) got=true; for (k=0;k=i;j-) aij/=aii;/單位化矩陣 for (j=0;jerr) for (k=n*2-1;k=i;k-) ajk-=aik
6、*aji/aii;/消元 此局部是本程序設(shè)計(jì)的核心,是高斯消元法的單位化和消元局部。/打印每步化簡及計(jì)算過程 printf(Step %i:n,i); for (j=0;jn;j+) for (k=0;kn*2;k+) printf(%.2lf ,ajk); printf(n); printf(nn); printf(Done nijvzhengwei:nn);for (i=0;in;i+) for (j=0;jn;j+) printf(%.2lf ,aij+n);printf(n);/在程序中輸出逆矩陣 為了保證程序的可視性,我們在這里打印每步的計(jì)算和化簡過程。printf(n); prin
7、tf(nijvzhengyijinshuruzhiwenbenwenjian“ans.txt.nn);/逆矩陣已經(jīng)輸入至文本文件ans.txt f1=fopen(ans.txt,w); fprintf(f1,%in,n); for (i=0;in;i+) for (j=0;jn;j+) fprintf(f1,%.2lf ,aij+n); fprintf(f1,n); fclose(f1); /輸出逆矩陣在程序運(yùn)行時(shí)輸出答案,并輸出答案至自動創(chuàng)立的文本文件ans.txt printf(A * A-1=n); for (i=0;in;i+) for (j=0;jn;j+) l=0; for (k=
8、0;kn;k+) l+=aik+2*n*akj+n; printf(%.2lf ,l+err); /判斷逆矩陣與原矩陣的乘積是否為單位矩陣 printf(n); printf(n); return 0; 此局部是判斷逆矩陣與原矩陣的乘積是否為單位矩陣。參考m*n階矩陣與n*p階矩陣相乘的程序,我們利用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。運(yùn)行結(jié)果不存在逆矩陣:不存在逆矩陣的情形有很多種,可能是初始矩陣的某行全為零,也有可能是初始矩陣經(jīng)過變化之后其某行全部變?yōu)榱?。此時(shí),無答案輸出至文本文件。2.存在逆矩陣的情形,這里選取了一6階方陣,如下圖為一6階方陣,在VC中運(yùn)行運(yùn)行后,我們可以得到如下的結(jié)果 如下圖我們可以清楚的看到,程序在將從文本輸入的矩陣變成增廣矩陣之后,分別對每一行元素進(jìn)行單位化
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 事業(yè)單位工會活動方案
- 稅務(wù)顧問服務(wù)協(xié)議書
- 云計(jì)算服務(wù)平臺建設(shè)合同
- 樁基工程施工專業(yè)分包規(guī)定合同
- 合同付款補(bǔ)充協(xié)議書
- 煙草產(chǎn)品購銷合同
- 公司商鋪?zhàn)赓U合同書
- 獨(dú)家代理銷售合同
- 辦公效率提升解決方案實(shí)踐
- 旅游行業(yè)線上營銷推廣協(xié)議
- 清洗衛(wèi)生間(課件)三年級下冊勞動人民版
- 《無菌檢查培訓(xùn)》課件
- 2024-2030年中國香菇行業(yè)銷售狀況及供需前景預(yù)測報(bào)告
- 幼兒園開學(xué)師德培訓(xùn)
- GB/T 44570-2024塑料制品聚碳酸酯板材
- 2024年廣東省深圳市中考英語試題含解析
- 金蛇納瑞2025年公司年會通知模板
- GB/T 16288-2024塑料制品的標(biāo)志
- 《記念劉和珍君》課件
- 北師大版《書法練習(xí)指導(dǎo)》五年級下冊教案、教學(xué)內(nèi)容、教學(xué)計(jì)劃、學(xué)情分析
- 中小型無人駕駛航空器垂直起降場技術(shù)要求
評論
0/150
提交評論