【問題描述】
矩陣是線性代數中的重要概念,應用領域非常廣泛,在c/c++中,通常將矩陣定義為乙個二維陣列。
本問題中,將輸入兩個矩陣 a 和 b,實現對矩陣的數乘、矩陣加法、矩陣乘法以及行列式的計算。
如果對矩陣的演算法不了解,請查閱相關資料。
【輸入形式】
輸入的第一行為兩個正整數 m 和 n,分別表示矩陣 a 的行數和列數;
接下來的 m 行,每行 n 個用空格分隔的整數,表示矩陣 a 的元素值;
接下來的一行,為乙個整數 x, 用於對矩陣 a 進行數乘;
接下來的一行為兩個正整數 k 和 l, 分別表示矩陣 b 的行數和列數;
接下來的 k 行,每行為 l 個用空格分隔的整數,表示矩陣 b 的元素值。
【輸出形式】
輸出的第一部分為 m 行,每行為 n 個用空格分隔的整數,表示 x 數乘 a 的結果;
接下來(如果有),如果 a 和 b 可以相加,則輸出 m 行,每行為 n 個用空格分隔的整數,表示矩陣 a+b 的結果;
接下來(如果有),如果 a 和 b 可以相乘,則輸出 m 行,每行為 l 個用空格分隔的整數,表示矩陣 a×b 的結果;
接下來一行(如果有),如果 a 的行列式存在,則輸出乙個整數,表示 a 的行列式的值;
接下來一行(如果有),如果 b 的行列式存在,則輸出乙個整數,表示 b 的行列式的值。
【樣例輸入1】
2 229 51
7 84
92 9
1 1 4 8 5 7 4 5 9
2 5 5 1 6 1 4 8 6
【樣例輸出1】
261 459
63 756
131 284 371 283 451 254 320 553 567
175 427 448 140 539 133 364 707 567
2079
#include
#include
using namespace std;
class matrix
;matrix:
:matrix
(int
&m,int
&n)}
matrix:
:matrix
(matrix &a,
int&&m,
int&n)
//從矩陣a中刪除第m行第n列後得到新的矩陣
for(
int i =
0; i < rows;i++
)else}}
}matrix::~
matrix()
matrix matrix:
:multi
(int x)
// 數乘
}return tmp;
}void matrix:
:out()
//輸出矩陣
cout <<
"\n";}
}void matrix:
:input()
matrix matrix:
:operator+
(matrix &another)
//過載加法運算實現矩陣相加
}return tmp;
}matrix matrix:
:operator*
(matrix &another)
//過載乘法運算實現矩陣相乘
tmp.p[i]
[j]= sum;}}
return tmp;
}int matrix:
:det()
//拉普拉斯展開定理了解一下,大數3 p18頁
return result;}}
intmain()
/* 求矩陣a和矩陣b的乘積矩陣 */
if(n==k)
/* 矩陣a的行列式的值 */
if(m==n)
cout
)
cout
)
}
C語言計算逆矩陣
花了4天寫的,不過三天在重學線代。1 include2 include 操作記憶體 3 include pow 函式,計算 1的n次方,可以不用這個函式,偷懶使用現成的45 6顯示矩陣 7matrix 矩陣 8order 階數9 10void showmatrix float matrix,int ...
C 類寫的矩陣計算
pragma once include dibimage.h include exception.h 矩陣類 宣告 class matrix,matrix submatrix long offset throw exception matrix submatrix long x,long y,lon...
C 計算矩陣的逆矩陣方法例項分析
1.思路 1 對矩陣進行合法性檢查 矩陣必須為方陣 2 計算矩陣行列式的值 determinant函式 3 只有滿秩矩陣才有逆矩陣,因此如果行列式的值為0 在 中以絕對值小於1e 6做判斷 則終止函式,報出異常 4 求出伴隨矩陣 adjointmatrix函式 5 逆矩陣各元素即其伴隨矩陣各元素除以...