

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、gauss-jordan法實(shí)矩陣求逆 下面是實(shí)現(xiàn)gauss-jordan法實(shí)矩陣求逆。 #include stdlib.h #include math.h #include stdio.h int brinv(double a, int n) int *is,*js,i,j,k,l,u,v; double d,p; is=malloc(n*sizeof(int); js=malloc(n*sizeof(int); for (k=0; k=n-1; k+) d=0.0; for (i=k; i=n-1; i+) for (j=k; j=n-1; j+) l=i*n+j; p=fabs(al);
2、if (pd) d=p; isk=i; jsk=j; if (d+1.0=1.0) free(is); free(js); printf(err*not invn); return(0); if (isk!=k) for (j=0; j=n-1; j+) u=k*n+j; v=isk*n+j; p=au; au=av; av=p; if (jsk!=k) for (i=0; i=n-1; i+) u=i*n+k; v=i*n+jsk; p=au; au=av; av=p; l=k*n+k; al=1.0/al; for (j=0; j=n-1; j+) if (j!=k) u=k*n+j; a
3、u=au*al; for (i=0; i=n-1; i+) if (i!=k) for (j=0; j=n-1; j+) if (j!=k) u=i*n+j; au=au-ai*n+k*ak*n+j; for (i=0; i=n-1; i+) if (i!=k) u=i*n+k; au=-au*al; for (k=n-1; k=0; k-) if (jsk!=k) for (j=0; j=n-1; j+) u=k*n+j; v=jsk*n+j; p=au; au=av; av=p; if (isk!=k) for (i=0; i=n-1; i+) u=i*n+k; v=i*n+isk; p=
4、au; au=av; av=p; free(is); free(js); return(1); void brmul(double a, double b,int m,int n,int k,double c) int i,j,l,u; for (i=0; i=m-1; i+) for (j=0; j=k-1; j+) u=i*k+j; cu=0.0; for (l=0; l=n-1; l+) cu=cu+ai*n+l*bl*k+j; return; int main() int i,j; static double a44= 0.2368,0.2471,0.2568,1.2671, 1.11
5、61,0.1254,0.1397,0.1490, 0.1582,1.1675,0.1768,0.1871, 0.1968,0.2071,1.2168,0.2271; static double b44,c44; for (i=0; i=3; i+) for (j=0; j=3; j+) bij=aij; i=brinv(a,4); if (i!=0) printf(mat a is:n); for (i=0; i=3; i+) for (j=0; j=3; j+) printf(%13.7e ,bij); printf(n); printf(n); printf(mat a- is:n); f
6、or (i=0; i=3; i+) for (j=0; j=3; j+) printf(%13.7e ,aij); printf(n); printf(n); printf(mat aa- is:n); brmul(b,a,4,4,4,c); for (i=0; i=3; i+) for (j=0; j=3; j+) printf(%13.7e ,cij); printf(n); 矩陣求逆的快速算法 算法介紹 矩陣求逆在3d程序中很常見,主要應(yīng)用于求billboard矩陣。根據(jù)定義的計(jì)算方法乘法運(yùn)算,嚴(yán)峻影響了性能。在需要大量billboard矩陣運(yùn)算時(shí),矩陣求逆的優(yōu)化能極大提高性能。這里要介
7、紹的矩陣求逆算法稱為全選主元高斯-約旦法。 高斯-約旦法(全選主元)求逆的步驟如下: 首先,對(duì)于 k 從 0 到 n - 1 作如下幾步: 從第 k 行、第 k 列開頭的右下角子陣中選取肯定值最大的元素,并記住次元素所在的行號(hào)和列號(hào),在通過行交換和列交換將它交換到主元素位置上。這一步稱為全選主元。 m(k, k) = 1 / m(k, k) m(k, j) = m(k, j) * m(k, k),j = 0, 1, ., n-1;j != k m(i, j) = m(i, j) - m(i, k) * m(k, j),i, j = 0, 1, ., n-1;i, j != k m(i, k)
8、= -m(i, k) * m(k, k),i = 0, 1, ., n-1;i != k 最終,依據(jù)在全選主元過程中所記錄的行、列交換的信息進(jìn)行恢復(fù),恢復(fù)的原則如下:在全選主元過程中,先交換的行(列)后進(jìn)行恢復(fù);原來的行(列)交換用列(行)交換來恢復(fù)。 實(shí)現(xiàn)(4階矩陣) float inverse(claymatrix mout, const claymatrix rhs) claymatrix m(rhs); dword is4; dword js4; float fdet = 1.0f; int f = 1; for (int k = 0; k 4; k +) / 第一步,全選主元 flo
9、at fmax = 0.0f; for (dword i = k; i 4; i +) for (dword j = k; j 4; j +) const float f = abs(m(i, j); if (f fmax) fmax = f; isk = i; jsk = j; if (abs(fmax) 0.0001f) return 0; if (isk != k) f = -f; swap(m(k, 0), m(isk, 0); swap(m(k, 1), m(isk, 1); swap(m(k, 2), m(isk, 2); swap(m(k, 3), m(isk, 3); if (
10、jsk != k) f = -f; swap(m(0, k), m(0, jsk); swap(m(1, k), m(1, jsk); swap(m(2, k), m(2, jsk); swap(m(3, k), m(3, jsk); / 計(jì)算行列值 fdet *= m(k, k); / 計(jì)算逆矩陣 / 其次步 m(k, k) = 1.0f / m(k, k); / 第三步 for (dword j = 0; j 4; j +) if (j != k) m(k, j) *= m(k, k); / 第四步 for (dword i = 0; i 4; i +) if (i != k) for (j = 0; j 4; j +) if (j != k) m(i, j) = m(i, j) - m(i, k) * m(k, j); / 第五步 for (i = 0; i 4; i +) if (i != k) m(i, k) *= -m(k, k); for (k = 3; k = 0; k -) if (jsk != k) swap(m(k, 0), m(jsk, 0); swap(m(k, 1), m(jsk, 1); swap(m(k, 2), m(jsk, 2); swap
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 低空經(jīng)濟(jì)視域下智能管控系統(tǒng)技術(shù)演進(jìn)路徑研究
- 設(shè)備使用情況報(bào)告撰寫指南
- 腹腔內(nèi)彌漫性腫脹護(hù)理
- 2025屆駐馬店市重點(diǎn)中學(xué)物理高一下期末聯(lián)考模擬試題含解析
- 卵巢白體囊腫的護(hù)理
- 心肌病的治療及護(hù)理
- 子宮陰道瘺個(gè)案護(hù)理
- 質(zhì)量控制與醫(yī)療安全-洞察闡釋
- 皮膚干燥癥的護(hù)理查房
- 山東省青島市開發(fā)區(qū)2025屆高二物理第二學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- GB/T 307.4-2017滾動(dòng)軸承推力軸承 產(chǎn)品幾何技術(shù)規(guī)范(GPS)和公差值
- GB 29415-2013耐火電纜槽盒
- 《密碼法》培訓(xùn)只是講座PPT課件(帶內(nèi)容)
- 建筑工程文件歸檔管理明細(xì)表
- 如何解讀血常規(guī)報(bào)告
- 區(qū)域消防安全風(fēng)險(xiǎn)評(píng)估規(guī)程DB50-T 1114-2021
- 免疫調(diào)節(jié)治療在腦卒中的運(yùn)用課件
- 機(jī)關(guān)檔案管理工作培訓(xùn)PPT課件
- 25T汽車吊檢驗(yàn)報(bào)告
- 變頻空調(diào)中的永磁電機(jī)電感分析
- 高考常考語法填空詞性轉(zhuǎn)換匯總
評(píng)論
0/150
提交評(píng)論