版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 《數(shù)據(jù)結(jié)構(gòu)》</b></p><p> 課 程 設(shè) 計(jì) 報(bào) 告 書</p><p> 題 目: 數(shù)組的存儲格式轉(zhuǎn)換 </p><p> 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 班
2、 級: 計(jì)121 </p><p> 學(xué) 號: </p><p> 完成時(shí)間: </p><p><b> 問題描述</b></p><p&
3、gt;<b> 問題描述</b></p><p> 根據(jù)數(shù)組的相關(guān)知識,以行列式的方式輸入矩陣,進(jìn)行簡單的運(yùn)算,轉(zhuǎn)置及求逆等過程,然后打印出該矩陣。</p><p><b> 基本要求</b></p><p> 需要按要求輸入矩陣,系統(tǒng)會自行運(yùn)算,然后輸出矩陣。</p><p><b&
4、gt; 概要設(shè)計(jì)</b></p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p><b> 函數(shù)申明</b></p><p> float MatDet(float *p, int n); //求矩陣的行列式</p><p> floa
5、t Creat_M(float *p, int m, int n, int k); //求矩陣元素A(m, n)的代數(shù)余之式</p><p> void print(float *p, int m,int n); //輸出矩陣n*n</p><p> bool Gauss(float *pSrc, float *pDst, int iRow)
6、; //采用部分主元的高斯消去法求方陣A的逆矩陣B</p><p> bool Transepose(float *pSrc,float *pSdst, int iRow, int iCol); //求矩陣轉(zhuǎn)置</p><p> bool MatMultiply(float *pSrc1, float *pSrc2,float *pDst,int iRow, int iCol);
7、//矩陣相乘</p><p><b> 主函數(shù)</b></p><p> float *buffer, *p; //定義數(shù)組首地址指針變量</p><p> int row, num; //定義矩陣的行數(shù)和矩陣元素個(gè)數(shù)</p><p><b> int
8、 i, j;</b></p><p> float determ; //定義矩陣的行列式</p><p> float a[N][N], b[N][N];</p><p><b> int n;</b></p><p> cout << "采用逆矩陣
9、的定義法求矩陣的逆矩陣!\n";</p><p> cout << "請輸入矩陣的行數(shù): ";</p><p> cin >> row;</p><p> num = 2 * row * row;</p><p> buffer = (float *)calloc(num, siz
10、eof(float)); //分配內(nèi)存單元</p><p> p = buffer;</p><p> if (NULL != p)</p><p><b> {</b></p><p> for (i = 0; i < row; i++)</p><p><b&
11、gt; {</b></p><p> cout << "Please input the number of " << i+1 << " row: ";</p><p> for (j = 0; j < row; j++)</p><p><b> {&l
12、t;/b></p><p> cin >> *p++;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b
13、></p><p><b> {</b></p><p> cout << "Can't distribute memory\n";</p><p><b> }</b></p><p> cout << "The orig
14、inal matrix : \n";</p><p> print(buffer, row); //打印該矩陣</p><p> determ = MatDet(buffer, row); //求整個(gè)矩陣的行列式</p><p> p = buffer + row * row;</p><p&g
15、t; if (determ != 0)</p><p><b> {</b></p><p> cout << "The determinant of the matrix is " << determ << endl;</p><p> for (i = 0; i < ro
16、w; i++) //求逆矩陣</p><p><b> {</b></p><p> for (j = 0; j < row; j++)</p><p><b> {</b></p><p> *(p+j*row+i) = Creat_M(buffer, i, j, row)/d
17、eterm;</p><p><b> }</b></p><p><b> }</b></p><p> cout << "The inverse matrix is: " << endl;</p><p> print(p, row);
18、 //打印該矩陣</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout << "The determinant is 0, and
19、there is no inverse matrix!\n";</p><p><b> }</b></p><p> free(buffer); //釋放內(nèi)存空間</p><p> cout << "采用部分主元的高斯消去法求方陣的逆矩陣!\n";</p><p
20、> cout << "請輸入方陣的階數(shù): ";</p><p><b> cin >> n;</b></p><p> cout << "請輸入" << n << "階方陣: \n";</p><p> //輸入
21、一個(gè)n階方陣</p><p> for (i = 0; i < n; i++)</p><p><b> {</b></p><p> for (j = 0; j < n; j++)</p><p><b> {</b></p><p> cin >
22、;> a[i][j];</p><p><b> }</b></p><p><b> }</b></p><p> //運(yùn)用高斯消去法求該矩陣的逆矩陣并輸出</p><p> if (Gauss(a, b, n))</p><p><b> {&l
23、t;/b></p><p> cout << "該方陣的逆矩陣為: \n";</p><p> for (i = 0; i < n; i++)</p><p><b> {</b></p><p> cout << setw(4);</p>&
24、lt;p> for (j = 0; j < n; j++)</p><p><b> {</b></p><p> cout << b[i][j] << setw(10);</p><p><b> }</b></p><p> cout <<
25、; endl;</p><p><b> }</b></p><p><b> } </b></p><p><b> return 0;</b></p><p><b> 功能函數(shù)</b></p><p> int
26、 i,m,n;</p><p> cout << "請輸入方陣的行數(shù): ";</p><p><b> cin >> m;</b></p><p> cout << "請輸入方陣的列數(shù): ";</p><p><b> cin
27、>> n;</b></p><p> float *a = new float[m*n];</p><p> cout << "請輸入" << m << "*"<< n << "階方陣: \n";</p><p> /
28、/輸入一個(gè)n階方陣</p><p> for (i = 0; i < m*n; i++)</p><p><b> {</b></p><p> cin >> a[i];</p><p><b> }</b></p><p> print(a,m,
29、n);</p><p> cout<<"轉(zhuǎn)置矩陣:"<<endl;</p><p> float *b = new float[n*m];</p><p> Transepose(a,b,m,n);</p><p> print(b,n,m);</p><p> c
30、out<<"矩陣乘積:"<<endl;</p><p> float *c = new float[m*m];</p><p> MatMultiply(a,b,c,m,n);</p><p> print(c,m,m);</p><p> cout<<"矩陣的逆:&q
31、uot;<<endl;</p><p> float *d = new float[m*m];</p><p> Gauss(c,d,m);</p><p> print(d,m,m);</p><p><b> cin>>m;</b></p><p> dele
32、te[] a;</p><p> delete[] b;</p><p> delete[] c;</p><p> delete[] d;</p><p><b> return 0;</b></p><p><b> }</b></p><p
33、> //----------------------------------</p><p> //功能: 求矩陣(n*n)的行列式</p><p> //入口參數(shù): 矩陣的首地址,矩陣的行數(shù)</p><p> //返回值: 矩陣的行列式值</p><p> //--------------------------------
34、--</p><p> float MatDet(float *p, int n)</p><p><b> {</b></p><p> int r, c, m;</p><p> int lop = 0;</p><p> float result = 0;</p>&
35、lt;p> float mid = 1;</p><p> if (n != 1)</p><p><b> {</b></p><p> lop = (n == 2) ? 1 : n; //控制求和循環(huán)次數(shù),若為2階,則循環(huán)1次,否則為n次</p><p> for (m = 0;
36、 m < lop; m++)</p><p><b> {</b></p><p> mid = 1; //順序求和, 主對角線元素相乘之和</p><p> for (r = 0, c = m; r < n; r++, c++)</p><p><b> {</
37、b></p><p> mid = mid * (*(p+r*n+c%n));</p><p><b> }</b></p><p> result += mid;</p><p><b> }</b></p><p> for (m = 0; m <
38、lop; m++)</p><p><b> {</b></p><p> mid = 1; //逆序相減, 減去次對角線元素乘積</p><p> for (r = 0, c = n-1-m+n; r < n; r++, c--)</p><p><b> {</b&
39、gt;</p><p> mid = mid * (*(p+r*n+c%n));</p><p><b> }</b></p><p> result -= mid;</p><p><b> }</b></p><p><b> }</b>&
40、lt;/p><p><b> else</b></p><p> result = *p;</p><p> return result;</p><p><b> }</b></p><p> //-----------------------------------
41、-------------------</p><p> //功能: 求k*k矩陣中元素A(m, n)的代數(shù)余之式</p><p> //入口參數(shù): k*k矩陣的首地址,矩陣元素A的下標(biāo)m,n,矩陣行數(shù)k</p><p> //返回值: k*k矩陣中元素A(m, n)的代數(shù)余之式</p><p> //----------------
42、---------------------------------------</p><p> float Creat_M(float *p, int m, int n, int k)</p><p><b> {</b></p><p><b> int len;</b></p><p>
43、<b> int i, j;</b></p><p> float mid_result = 0;</p><p> int sign = 1;</p><p> float *p_creat, *p_mid;</p><p> len = (k-1)*(k-1); //k階矩陣的代數(shù)余之
44、式為k-1階矩陣</p><p> p_creat = (float*)calloc(len, sizeof(float)); //分配內(nèi)存單元</p><p> p_mid = p_creat;</p><p> for (i = 0; i < k; i++)</p><p><b> {</b><
45、/p><p> for (j = 0; j < k; j++)</p><p><b> {</b></p><p> if (i != m && j != n) //將除第i行和第j列外的所有元素存儲到以p_mid為首地址的內(nèi)存單元</p><p><b> {</b>&
46、lt;/p><p> *p_mid++ = *(p+i*k+j);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> sign = (m+n)%2 == 0 ? 1
47、: -1; //代數(shù)余之式前面的正、負(fù)號</p><p> mid_result = (float)sign*MatDet(p_creat, k-1);</p><p> free(p_creat);</p><p> return mid_result;</p><p><b> }</b></p&
48、gt;<p> //----------------------</p><p> //功能: 打印n*n矩陣</p><p> //入口參數(shù): n*n矩陣的首地址,矩陣的行數(shù)n</p><p> //返回值: 無返回值</p><p> void print(float *p, int m, int n)</p
49、><p><b> {</b></p><p><b> int i, j;</b></p><p> for (i = 0; i < m; i++)</p><p><b> {</b></p><p> cout << set
50、w(4);</p><p> for (j = 0; j < n; j++)</p><p><b> {</b></p><p> cout << setiosflags(ios::right) << *p++ << setw(10);</p><p><b>
51、 }</b></p><p> cout << endl;</p><p><b> }</b></p><p><b> }</b></p><p> //----------------------------------------------</p&g
52、t;<p> //功能: 采用部分主元的高斯消去法求方陣A的逆矩陣B</p><p> //入口參數(shù): 輸入方陣,輸出方陣,方陣階數(shù)</p><p> //返回值: true or false</p><p> //--------------------------</p><p><b> 運(yùn)行與測試&l
53、t;/b></p><p><b> 進(jìn)入提示畫面</b></p><p><b> 按提示輸入后</b></p><p><b> 輸出界面</b></p><p><b> 總結(jié)與體會</b></p><p>
54、通過這一次的課程設(shè)計(jì),我掌握了另外的一種算法,對矩陣等復(fù)雜數(shù)據(jù)的輸入有了更深刻的理解,起初不知道應(yīng)該以怎樣的方式輸入矩陣,數(shù)據(jù)結(jié)構(gòu)這門課程在處理數(shù)據(jù)信息方面給了我很大的啟發(fā),應(yīng)該以怎樣的方式輸入數(shù)據(jù),處理數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)都很系統(tǒng)的解釋了出來,對我的幫助很大,一開始也沒想到自己真的能做出來,后來通過網(wǎng)上的一些成功案例,一步一步的寫了出來,在經(jīng)過調(diào)試,驗(yàn)證等一系列操作,終于解決了問題。也增加了自己的信心。</p><p&g
55、t;<b> 附源程序</b></p><p> #include <math.h></p><p> #include <malloc.h></p><p> #include <iomanip></p><p> #include <iostream><
56、/p><p> #define N 10 //定義方陣的最大階數(shù)為10</p><p> using namespace std;</p><p><b> //函數(shù)的聲明部分</b></p><p> float MatDet(float *p, int n); //
57、求矩陣的行列式</p><p> float Creat_M(float *p, int m, int n, int k); //求矩陣元素A(m, n)的代數(shù)余之式</p><p> void print(float *p, int m,int n); //輸出矩陣n*n</p><p> bool Gauss(f
58、loat *pSrc, float *pDst, int iRow); //采用部分主元的高斯消去法求方陣A的逆矩陣B</p><p> bool Transepose(float *pSrc,float *pSdst, int iRow, int iCol); //求矩陣轉(zhuǎn)置</p><p> bool MatMultiply(float *pSrc1, float *pSrc
59、2,float *pDst,int iRow, int iCol);//矩陣相乘</p><p> int main()</p><p><b> {</b></p><p> /*float *buffer, *p; //定義數(shù)組首地址指針變量</p><p> int row, num;
60、 //定義矩陣的行數(shù)和矩陣元素個(gè)數(shù)</p><p><b> int i, j;</b></p><p> float determ; //定義矩陣的行列式</p><p> float a[N][N], b[N][N];</p><p><b>
61、; int n;</b></p><p> cout << "采用逆矩陣的定義法求矩陣的逆矩陣!\n";</p><p> cout << "請輸入矩陣的行數(shù): ";</p><p> cin >> row;</p><p> num = 2 *
62、 row * row;</p><p> buffer = (float *)calloc(num, sizeof(float)); //分配內(nèi)存單元</p><p> p = buffer;</p><p> if (NULL != p)</p><p><b> {</b></p>
63、<p> for (i = 0; i < row; i++)</p><p><b> {</b></p><p> cout << "Please input the number of " << i+1 << " row: ";</p><p&g
64、t; for (j = 0; j < row; j++)</p><p><b> {</b></p><p> cin >> *p++;</p><p><b> }</b></p><p><b> }</b></p><p&
65、gt;<b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout << "Can't distribute memory\n";</p><p><b&
66、gt; }</b></p><p> cout << "The original matrix : \n";</p><p> print(buffer, row); //打印該矩陣</p><p> determ = MatDet(buffer, row); //求整個(gè)矩陣的行
67、列式</p><p> p = buffer + row * row;</p><p> if (determ != 0)</p><p><b> {</b></p><p> cout << "The determinant of the matrix is " <<
68、; determ << endl;</p><p> for (i = 0; i < row; i++) //求逆矩陣</p><p><b> {</b></p><p> for (j = 0; j < row; j++)</p><p><b> {</b>
69、;</p><p> *(p+j*row+i) = Creat_M(buffer, i, j, row)/determ;</p><p><b> }</b></p><p><b> }</b></p><p> cout << "The inverse matrix
70、 is: " << endl;</p><p> print(p, row); //打印該矩陣</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>&l
71、t;/p><p> cout << "The determinant is 0, and there is no inverse matrix!\n";</p><p><b> }</b></p><p> free(buffer); //釋放內(nèi)存空間</p><p>
72、 cout << "采用部分主元的高斯消去法求方陣的逆矩陣!\n";</p><p> cout << "請輸入方陣的階數(shù): ";</p><p><b> cin >> n;</b></p><p> cout << "請輸入"
73、<< n << "階方陣: \n";</p><p> //輸入一個(gè)n階方陣</p><p> for (i = 0; i < n; i++)</p><p><b> {</b></p><p> for (j = 0; j < n; j++)</p
74、><p><b> {</b></p><p> cin >> a[i][j];</p><p><b> }</b></p><p><b> }</b></p><p> //運(yùn)用高斯消去法求該矩陣的逆矩陣并輸出</p>
75、<p> if (Gauss(a, b, n))</p><p><b> {</b></p><p> cout << "該方陣的逆矩陣為: \n";</p><p> for (i = 0; i < n; i++)</p><p><b> {&
76、lt;/b></p><p> cout << setw(4);</p><p> for (j = 0; j < n; j++)</p><p><b> {</b></p><p> cout << b[i][j] << setw(10);</p>
77、<p><b> }</b></p><p> cout << endl;</p><p><b> }</b></p><p><b> } </b></p><p> return 0;*/</p><p>
78、 int i,m,n;</p><p> cout << "請輸入方陣的行數(shù): ";</p><p><b> cin >> m;</b></p><p> cout << "請輸入方陣的列數(shù): ";</p><p><b>
79、cin >> n;</b></p><p> float *a = new float[m*n];</p><p> cout << "請輸入" << m << "*"<< n << "階方陣: \n";</p><p>
80、; //輸入一個(gè)n階方陣</p><p> for (i = 0; i < m*n; i++)</p><p><b> {</b></p><p> cin >> a[i];</p><p><b> }</b></p><p> print(
81、a,m,n);</p><p> cout<<"轉(zhuǎn)置矩陣:"<<endl;</p><p> float *b = new float[n*m];</p><p> Transepose(a,b,m,n);</p><p> print(b,n,m);</p><p>
82、; cout<<"矩陣乘積:"<<endl;</p><p> float *c = new float[m*m];</p><p> MatMultiply(a,b,c,m,n);</p><p> print(c,m,m);</p><p> cout<<"矩陣的
83、逆:"<<endl;</p><p> float *d = new float[m*m];</p><p> Gauss(c,d,m);</p><p> print(d,m,m);</p><p><b> cin>>m;</b></p><p>
84、delete[] a;</p><p> delete[] b;</p><p> delete[] c;</p><p> delete[] d;</p><p><b> return 0;</b></p><p><b> }</b></p>&
85、lt;p> //----------------------------------</p><p> //功能: 求矩陣(n*n)的行列式</p><p> //入口參數(shù): 矩陣的首地址,矩陣的行數(shù)</p><p> //返回值: 矩陣的行列式值</p><p> //----------------------------
86、------</p><p> float MatDet(float *p, int n)</p><p><b> {</b></p><p> int r, c, m;</p><p> int lop = 0;</p><p> float result = 0;</p>
87、;<p> float mid = 1;</p><p> if (n != 1)</p><p><b> {</b></p><p> lop = (n == 2) ? 1 : n; //控制求和循環(huán)次數(shù),若為2階,則循環(huán)1次,否則為n次</p><p> for (m
88、= 0; m < lop; m++)</p><p><b> {</b></p><p> mid = 1; //順序求和, 主對角線元素相乘之和</p><p> for (r = 0, c = m; r < n; r++, c++)</p><p><b> {&
89、lt;/b></p><p> mid = mid * (*(p+r*n+c%n));</p><p><b> }</b></p><p> result += mid;</p><p><b> }</b></p><p> for (m = 0; m &
90、lt; lop; m++)</p><p><b> {</b></p><p> mid = 1; //逆序相減, 減去次對角線元素乘積</p><p> for (r = 0, c = n-1-m+n; r < n; r++, c--)</p><p><b> {<
91、;/b></p><p> mid = mid * (*(p+r*n+c%n));</p><p><b> }</b></p><p> result -= mid;</p><p><b> }</b></p><p><b> }</b&
92、gt;</p><p><b> else</b></p><p> result = *p;</p><p> return result;</p><p><b> }</b></p><p> //-------------------------------
93、-----------------------</p><p> //功能: 求k*k矩陣中元素A(m, n)的代數(shù)余之式</p><p> //入口參數(shù): k*k矩陣的首地址,矩陣元素A的下標(biāo)m,n,矩陣行數(shù)k</p><p> //返回值: k*k矩陣中元素A(m, n)的代數(shù)余之式</p><p> //------------
94、-------------------------------------------</p><p> float Creat_M(float *p, int m, int n, int k)</p><p><b> {</b></p><p><b> int len;</b></p><p
95、><b> int i, j;</b></p><p> float mid_result = 0;</p><p> int sign = 1;</p><p> float *p_creat, *p_mid;</p><p> len = (k-1)*(k-1); //k階矩陣的
96、代數(shù)余之式為k-1階矩陣</p><p> p_creat = (float*)calloc(len, sizeof(float)); //分配內(nèi)存單元</p><p> p_mid = p_creat;</p><p> for (i = 0; i < k; i++)</p><p><b> {</b>
97、</p><p> for (j = 0; j < k; j++)</p><p><b> {</b></p><p> if (i != m && j != n) //將除第i行和第j列外的所有元素存儲到以p_mid為首地址的內(nèi)存單元</p><p><b> {</b&
98、gt;</p><p> *p_mid++ = *(p+i*k+j);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> sign = (m+n)%2 == 0
99、? 1 : -1; //代數(shù)余之式前面的正、負(fù)號</p><p> mid_result = (float)sign*MatDet(p_creat, k-1);</p><p> free(p_creat);</p><p> return mid_result;</p><p><b> }</b><
100、;/p><p> //----------------------</p><p> //功能: 打印n*n矩陣</p><p> //入口參數(shù): n*n矩陣的首地址,矩陣的行數(shù)n</p><p> //返回值: 無返回值</p><p> void print(float *p, int m, int n)&l
101、t;/p><p><b> {</b></p><p><b> int i, j;</b></p><p> for (i = 0; i < m; i++)</p><p><b> {</b></p><p> cout <<
102、 setw(4);</p><p> for (j = 0; j < n; j++)</p><p><b> {</b></p><p> cout << setiosflags(ios::right) << *p++ << setw(10);</p><p><b
103、> }</b></p><p> cout << endl;</p><p><b> }</b></p><p><b> }</b></p><p> //----------------------------------------------<
104、/p><p> //功能: 采用部分主元的高斯消去法求方陣A的逆矩陣B</p><p> //入口參數(shù): 輸入方陣,輸出方陣,方陣階數(shù)</p><p> //返回值: true or false</p><p> //----------------------------------------------</p><
105、;p> bool Gauss(float *pSrc, float *pDst, int iRow)</p><p><b> {</b></p><p> int i, j, k;</p><p> int n = iRow;</p><p> float max, temp;</p>&
106、lt;p> float t[N][N]; //臨時(shí)矩陣</p><p> //將A矩陣存放在臨時(shí)矩陣t[n][n]中</p><p> for (i = 0; i < n; i++) </p><p><b> {</b></p><p> for (j
107、= 0; j < n; j++)</p><p><b> {</b></p><p> t[i][j] = pSrc[i*iRow+j];</p><p><b> }</b></p><p><b> }</b></p><p> /
108、/初始化B矩陣為單位陣</p><p> for (i = 0; i < n; i++) </p><p><b> {</b></p><p> for (j = 0; j < n; j++)</p><p><b> {</b></p><p
109、> pDst[i*iRow+j] = (i == j) ? (float)1 : 0;</p><p><b> }</b></p><p><b> }</b></p><p> for (i = 0; i < n; i++)</p><p><b> {</
110、b></p><p><b> //尋找主元</b></p><p> max = t[i][i];</p><p><b> k = i;</b></p><p> for (j = i+1; j < n; j++)</p><p><b>
111、 {</b></p><p> if (fabs(t[j][i]) > fabs(max))</p><p><b> {</b></p><p> max = t[j][i];</p><p><b> k = j;</b></p><p><
112、;b> }</b></p><p><b> }</b></p><p> //如果主元所在行不是第i行,進(jìn)行行交換</p><p> if (k != i)</p><p><b> {</b></p><p> for (j = 0; j &
113、lt; n; j++)</p><p><b> {</b></p><p> temp = t[i][j];</p><p> t[i][j] = t[k][j];</p><p> t[k][j] = temp;</p><p><b> //B伴隨交換</b>
114、</p><p> temp = pDst[i*iRow+j];</p><p> pDst[i*iRow+j] = pDst[k*iRow+j];</p><p> pDst[k*iRow+j] = temp;</p><p><b> }</b></p><p><b>
115、}</b></p><p> //判斷主元是否為0, 若是, 則矩陣A不是滿秩矩陣,不存在逆矩陣</p><p> if (t[i][i] == 0)</p><p><b> {</b></p><p> cout << "There is no inverse matrix!
116、";</p><p> return false;</p><p><b> }</b></p><p> //消去A的第i列除去i行以外的各行元素</p><p> temp = t[i][i];</p><p> for (j = 0; j < n; j++)<
117、/p><p><b> {</b></p><p> t[i][j] = t[i][j] / temp; //主對角線上的元素變?yōu)?</p><p> pDst[i*iRow+j] = pDst[i*iRow+j] / temp; //伴隨計(jì)算</p><p><b> }<
118、;/b></p><p> for (j = 0; j < n; j++) //第0行->第n行</p><p><b> {</b></p><p> if (j != i) //不是第i行</p><p><b> {</b>
119、</p><p> temp = t[j][i];</p><p> for (k = 0; k < n; k++) //第j行元素 - i行元素*j列i行元素</p><p><b> {</b></p><p> t[j][k] = t[j][k] - t[i][k]*temp;</
120、p><p> pDst[j*iRow+k] = pDst[j*iRow+k] - pDst[i*iRow+k]*temp;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p&g
121、t;<b> }</b></p><p> return true;</p><p><b> }</b></p><p> bool Transepose(float *pSrc,float *pSdst, int iRow, int iCol)//輸入源矩陣、目標(biāo)矩陣、源矩陣行和列</p><
122、;p><b> {</b></p><p> if (iRow && iCol)</p><p><b> {</b></p><p> for (int i=0;i<iCol;i++)</p><p><b> {</b></p&g
123、t;<p> for(int j=0; j<iRow; j++)</p><p><b> {</b></p><p> *(pSdst + i*iRow +j) = *(pSrc + j*iCol + i);</p><p><b> }</b></p><p><
124、;b> }</b></p><p> return true;</p><p><b> }</b></p><p> return false;</p><p><b> }</b></p><p> bool MatMultiply(floa
125、t *pSrc1, float *pSrc2, float *pDst, int iRow, int iCol)//輸入源矩陣1&2、目標(biāo)矩陣、源矩陣行和列</p><p><b> {</b></p><p> if (iRow && iCol)</p><p><b> {</b><
126、/p><p> for (int i=0;i<iRow;i++)</p><p><b> {</b></p><p> for (int j=0;j<iRow;j++)</p><p><b> {</b></p><p> *(pDst + i*iRow
127、 + j)=0;</p><p> for (int k=0;k<iCol;k++)</p><p><b> {</b></p><p> *(pDst + i*iRow + j) += *(pSrc1 + i*iCol + k)* *(pSrc2 + k*iRow +j);</p><p><b&g
128、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p> return true;</p><p><b> }</b></p><p> return false;</
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)多維數(shù)組
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)制轉(zhuǎn)換問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--產(chǎn)品進(jìn)銷存儲管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
評論
0/150
提交評論