C語(yǔ)言求矩陣的逆矩陣_第1頁(yè)
C語(yǔ)言求矩陣的逆矩陣_第2頁(yè)
C語(yǔ)言求矩陣的逆矩陣_第3頁(yè)
C語(yǔ)言求矩陣的逆矩陣_第4頁(yè)
C語(yǔ)言求矩陣的逆矩陣_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言求矩陣的逆矩陣班級(jí): 自動(dòng)化1604小組成員: 潘孝楓 金豆2017年4月作業(yè)要求:1. 用C語(yǔ)言編程;2. 查閱相關(guān)資料,至少了解三種以上的求矩陣的逆的方法;3. 倆人一組,提交大作業(yè)報(bào)告,含源代碼。方法一:用伴隨矩陣求矩陣的逆矩陣(潘孝楓)求矩陣的逆求伴隨矩陣求矩陣的行列式功能模塊輸入矩陣最主要的問(wèn)題就是求解矩陣的逆矩陣,而且是一個(gè)動(dòng)態(tài)矩陣1. 求解矩陣的伴隨矩陣,套用求行列式的函數(shù) 解決問(wèn)題的關(guān)鍵是如何運(yùn)用一個(gè)循環(huán)遞歸將求行列式的函數(shù)反復(fù)嵌套函數(shù)的分塊 1. 求矩陣的行列式的函數(shù)2. 求余子式的函數(shù)3. 求逆的函數(shù)#include #include #define N 9/默認(rèn)行列

2、式最大輸入階數(shù)為9float Fun(int n, float aNN );/定義行列式計(jì)算程序,n為行列式階數(shù),a為矩陣a/*主程序*/ int main(void) int n ; /定義階數(shù)n int i, j, i1, j1,i2 ,j2 ; /定義循環(huán)變量 float aNN , bNN , cNN; /定義數(shù)組,a為原始錄入數(shù)組,b為中間變量數(shù)組,用于提取與計(jì)算余子式,c為輸出結(jié)果數(shù)組float d; /定義a的行列式值printf(Input the order of matrix a:); /輸入a的階數(shù) scanf(%d,&n);printf(Input matrix a:n

3、);/輸入矩陣a for( i = 0; i n; i+) for( j = 0; j n; j+)scanf(%f, &aij); d=Fun( n, a ); /計(jì)算a的行列式if(fabs(d)1e-6) /判斷a的行列式值是否為0printf(The determinant is not invertible!);/輸出“行列式值為0,不可逆 ” elseprintf(The determinant of a is %f,d); /非0繼續(xù)運(yùn)算if(n=1)/階數(shù)為1的情況c00=1/d;else /階數(shù)大于1的情況for( i = 0; i =n-1; i+)for( j = 0;

4、j = n-1; j+)for(i1=0, i2=0; i2n-1; i1+, i2+)for(j1=0, j2=0; j2n-1; j1+, j2+)if(i1 = i)i1+;if(j1 = j)j1+;bi2j2=ai1j1;/提取aij所對(duì)應(yīng)的余子式到矩陣b中cji=pow( -1 , i + j ) * Fun( n - 1 , b)/d;/計(jì)算aij對(duì)應(yīng)的代數(shù)余子式,存入矩陣c中并完成轉(zhuǎn)置printf(n);/輸出結(jié)果for(i=0;in;i+)for(j=0;jn;j+)printf(%10f,cij);printf(n);/*求行列式*/float Fun( int n, fl

5、oat aNN )/定義求矩陣行列式的程序,采用逐步降階求值 float bNN;/定義矩陣b int i = 0, j = 0;/定義循環(huán)變量i,jfloat sum = 0;/定義行列式運(yùn)算結(jié)果sum int c = 0,p = 0;/定義輔助變量c,p if(n = 1)/行列式階數(shù)為1函數(shù)直接返回a00值return a00; for(i = 0;i n; i+)/針對(duì)行列式第一列展開(kāi) for(c = 0;c n-1; c+) for(j = 0;j n-1;j+) if (c i)/判斷錄入數(shù)組b時(shí)行數(shù)值,如果c大于i,則在執(zhí)行錄入數(shù)組a時(shí)行數(shù)下移一行,否則不執(zhí)行數(shù)+1的操作 p =

6、 0; else p = 1; bcj = ac+pj+1;/取出aij第一列每個(gè)元素對(duì)應(yīng)的余子式存入數(shù)組b中 sum += ai0 * Fun(n - 1, b ) * pow(- 1 , i );/求出a第一列每個(gè)元素代數(shù)余子式之和,其中嵌套Fun進(jìn)行逐步降階完成高階行列式計(jì)算 return sum; 方法二:用行初等變換來(lái)求矩陣的逆/應(yīng)用矩陣初等變換的方法求逆矩陣/參數(shù)說(shuō)明:/naturalmat原矩陣/num矩陣的階數(shù)/InvMat求解結(jié)果,逆矩陣boolMatrix_Inv(double*naturalmat,intnum,double*InvMat)inti,j,k;double*

7、MatEnhanced;/增廣矩陣(A|E) MatEnhanced=(double*)malloc(num*sizeof(double*);for(i=0;inum;i+)MatEnhancedi=(double*)malloc(2*num*sizeof(double);double*temp;temp=(double*)malloc(2*num*sizeof(double);doublexishu=1;/初等變換時(shí)系數(shù),設(shè)初值為1for(i=0;inum;i+)/增廣矩陣賦值,前半部分for(j=0;jnum;j+)MatEnhancedij=naturalmatij;for(i=0;in

8、um;i+)/增廣矩陣賦值,后半部分for(j=num;j2*num;j+)MatEnhancedij=0;/先將后半部分全部賦值為0MatEnhancedii+num=1;/再將其對(duì)角線部分賦值為1/接下來(lái)進(jìn)行初等行變換for(i=0;inum;i+)if(MatEnhancedii=0)/如果前半部分的對(duì)角線上的元素為0,此時(shí)進(jìn)行行變換if(i=num-1)/如果是最后一行,那么說(shuō)明該矩陣不可returnfalse;/對(duì)第i行以后的各行進(jìn)行判斷,找到第i個(gè)元素不為零的行,并與第i行進(jìn)行交換for(j=i;jnum;j+)if(MatEnhancedji!=0)k=j;/記住該行的行號(hào)bre

9、ak;/退出循環(huán)/接下來(lái)對(duì)第i行和第k行進(jìn)行交換temp=MatEnhancedk;/第k行MatEnhancedk=MatEnhancedi;MatEnhancedi=temp;/初等變換for(j=0;jnum;j+)/對(duì)其他行的所有列進(jìn)行計(jì)算if(j!=i)/本行不參與計(jì)算if(MatEnhancedji!=0)/只有當(dāng)其不為零時(shí)進(jìn)行計(jì)算,否則不計(jì)算xishu=MatEnhancedji/MatEnhancedii;for(k=i;k2*num;k+)/對(duì)后面的所有列進(jìn)行計(jì)算MatEnhancedjk-=xishu*MatEnhancedik;/將本行所有列都除以對(duì)角線上的值,將前半部分化成單位矩陣xishu=MatEnhancedii;for(j=i;j2*num;j+)if(xishu!=0)MatEnhancedij/=x

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論