C 將矩陣轉換為行最簡型矩陣

2021-10-17 04:03:53 字數 1911 閱讀 2508

是否還在困擾,將矩陣化為行最簡型矩陣的時候總是出錯?是否還在生氣,妥善保管的答案不見蹤跡?沒事,這個**將幫你把這些問題一網打盡。通過自己設定矩陣的行數與列數,輸入乙個矩陣,使其輸出行最簡型矩陣,親測無誤奧。話不多說,來看看吧!

第一步:輸入矩陣

輸入矩陣首先得確定矩陣的行數與列數,這裡利用兩個巨集定義。其次再利用二維陣列,輸入矩陣,儲存矩陣資料。

第二步:化為行階梯型矩陣

這部分**也很重要,化為行階梯型矩陣是為化為行最簡型矩陣做鋪墊。這裡需要利用數學概念,根據行階梯型矩陣的定義,即應使得每行首非零元素所在列下方全為0。

**整體思路為從矩陣的第一行開始,到矩陣的最後一行結束,迴圈使每一行都除以該行首非零元素(方便計算),並與其下幾行資料對應地進行加減,使其該行首非零元素所在列下面資料都為0。

第三步:化為行最簡型矩陣

根據行最簡型矩陣的概念,應使得每行首非零元素為1,並使其所在一列除該元素外均為0。

**整體思路為利用已有的化為行最簡型的**,從最後一行開始,到第一行結束,迴圈使每一行首非零元素(經過上個**,均已為1)都與其上幾行資料對應地進行加減,使其該行首非零元素所在列除該元素都為0。

第四步:輸出矩陣

直接將之前儲存並修改後的二維陣列直接輸出即可。

**如下:

#include

#include

#include

#define row 3

#define col 4

using

namespace std;

//第一步:輸入矩陣

//第二部:化為行階梯型矩陣

//第三步:化為行最簡型矩陣

//第四步:輸出矩陣

class

matrix

;void

input()

;void

row_echelo_form()

;//化為行階梯型矩陣

void

row_******st_form()

;//化為行最簡型矩陣

void

output()

;~matrix()

;private

:double a[row]

[col];}

;void matrix ::

input()

cout

row_echelo_form()

//儲存該行首非零元素;

double s=a[p]

[q];

//將該行元素都除以該行首非零元素,使首非零元素為1;

if(a[p]

[q]!=

1& s!=0)

for(

int j=q;j)//將第該行首零元素下面元素全化為0; 因該行首非零元素為1,計算便捷;

for(

int i=p+

1;i++p;

++q;}}

void matrix ::

row_******st_form()

q++;//將該行首非零元素一列化為0;因該行首非零元素為1,計算便捷;

for(

int i=p-

1;i>=

0;i--)}

p--;q--;}

}void matrix ::

output()

cout

本**目標明確,即實現矩陣的輸入輸出,同時通過行階梯型矩陣化為行最簡型矩陣。難點為行階梯型矩陣的處理,實現每行首非零元素化為1並且依次進行行之間的加減是整個演算法的核心。

缺點為,無法處理較大數字矩陣以及極個別資料,因可能出現分數相除除不盡的情況。

改進措施,建立fraction分數類,建立fraction類的二維陣列a[row][col]或者進一步優化運算的演算法。

matlab將矩陣化為行最簡形

用基礎的函式寫了乙個matlab指令碼將矩陣變成行最簡式。未參考matlab自帶的rref函式,基本與其無關,如有bug可反饋。大致思路 把矩陣含有0的行放在最下面,然後下面的行減去上面的行,最後變成行最簡型。function r my rs a a表示輸入矩陣 r表示輸出的行最簡型矩陣 t 1 進...

案例 求出矩陣的最簡型? sympy登場

學過線性代數的同學都知道,在將矩陣進行初等變換化為最簡型時過程有多麼繁瑣。今天,給大家帶來乙個小專案 使用 python 化簡矩陣。將要學習 使用特殊的科學計算庫 sympy,來化簡矩陣。在數學中,矩陣是乙個按照長方陣列排列的複數或實數,最早來自於方程組的係數及常數所構成的方陣。矩陣變換是線性代數中...

Python將xls檔案轉換為矩陣的方法

python將xls檔案轉換為矩陣的方法,在機器學習和深度學習中都用得到,備份 def load data path 原始資料集為xls檔案,將匯入的xls檔案轉換為矩陣 data xlrd.open workbook path table data.sheets 0 nrows table.nro...