矩陣計算 C 練習

2021-10-12 09:49:33 字數 2041 閱讀 9875

【問題描述】

矩陣是線性代數中的重要概念,應用領域非常廣泛,在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 逆矩陣各元素即其伴隨矩陣各元素除以...