You are on page 1of 57

PROGRAM MATRIK REDUCED ROW ECHELON FORM (RREF)

https://www.emathhelp.net/en/calculators/linear-algebra/reduced-row-echelon-form-rref-
calculator/?i=%5B%5B1%2C-2%2C1%2C0%5D%2C%5B0%2C2%2C-
8%2C8%5D%2C%5B5%2C0%2C-
5%2C10%5D%5D&reduced=on
Grup 1
Anggota:
1. Muhammad Gilbran Alfarizi (G1C022060)

2. Fatih Rafi Nurhuda (G1C022072)


3. Fadri Zulmi (G1C022042)
4. Gilang Gustiawan

(G1C022010) #include <iostream>


#include <vector>

using namespace std;

void printMatrix(const vector<vector<double>>& matrix) {


for (const auto& baris : matrix) {
for (double value : baris)
{ cout << value << "\t";
}
cout << endl;
}
}

void reduceToRREF(vector<vector<double>>& matrix)


{ int barisCount = matrix.size();

int colCount = matrix[0].size();

int lead = 0;
cout << "\nLangkah-langkah reduksi matriks ke bentuk RREF:" << endl;
printMatrix(matrix);

for (int r = 0; r < barisCount; ++r)


{ if (colCount <= lead) {
break;
}

int i = r;
while (matrix[i][lead] == 0) {
++i;
if (barisCount == i)
{ i = r;

++lead;
if (colCount == lead)
{ break;
}
}
}

if (matrix[i][lead] == 0) {
cout << "Langkah " << r + 1 << ": Tidak ada elemen non-nol di kolom leading, penukaran baris "
<< r + 1 << " dengan baris " << i + 1 << endl;
swap(matrix[i], matrix[r]);
printMatrix(matrix);
}

double val = matrix[r][lead];


for (int j = 0; j < colCount; ++j)
{
matrix[r][j] /= val;
}

cout << "Langkah " << r + 1 << ": Bagilah baris " << r + 1 << " oleh pembagi " << val << endl;
printMatrix(matrix);

for (int i = 0; i < barisCount; ++i)


{ if (i != r) {
double factor = matrix[i][lead];
for (int j = 0; j < colCount; ++j) {
matrix[i][j] -= factor * matrix[r][j];
}
}
}

cout << "Langkah " << r + 1 << ": Eliminasi elemen pada kolom yang sama di baris lain" << endl;
printMatrix(matrix);

++lead;
}
}

int main() {
int baris, cols;

cout << "Masukkan jumlah baris matriks:


"; cin >> baris;

cout << "Masukkan jumlah kolom matriks: ";


cin >> cols;
vector<vector<double>> matrix(baris, vector<double>(cols, 0));

cout << "Masukkan elemen matriks baris-kolom:" << endl;


for (int i = 0; i < baris; ++i) {

for (int j = 0; j < cols; ++j) {


cout << "Masukkan elemen pada posisi (" << i + 1 << "," << j + 1 <<
"): "; cin >> matrix[i][j];

}
}

cout << "\nTampilan matriks awal:" << endl;


printMatrix(matrix);

reduceToRREF(matrix);

cout << "\nMatriks (RREF):" <<


endl; printMatrix(matrix);

return 0;
}
Kelompok 2 Aljabar
https://idealcalculator.com/rref-calculator-with-steps-reduced-row-echelon-form-
calculator/#google_vignette
Anggota :
1. M.Hengki Prastiyo (G1C022028)
2. Deki Anrian Talo (G1C022022)
3. Renaldi Astaman (G1C022034)
4. Indra Silaban (G1C022082)

#include <iostream>
#include <vector>

using namespace std;


// Fungsi untuk menampilkan matriks
void displayMatrix(const vector<vector<double>>& matrix)
{ for (const auto& row : matrix) { for
(const auto& element : row) {
cout << element << " ";
}
cout << endl;
}
}
// Fungsi untuk mengonversi matriks ke dalam bentuk row echelon
void rowEchelonForm(vector<vector<double>>& matrix) { int rows
= matrix.size(); int cols = matrix[0].size(); int lead = 0;
cout << "\nLangkah Bentuk Eselon Baris Tereduksi (RREF):\n" << endl;
displayMatrix(matrix); cout << endl;
for (int r = 0; r < rows; ++r) {
if (lead >= cols)
break;
int i = r;
while (matrix[i][lead] == 0) {
++i; if (i
== rows) {
i = r;
++lead; if (lead
==
cols)
return;
}
}
// Tukar baris i dan r swap(matrix[i],
matrix[r]);
cout << "Langkah " << r + 1 << ":" << endl;
displayMatrix(matrix); cout << endl;
// Membuat elemen diagonal menjadi 1
double divisor = matrix[r][lead]; for
(int j = 0; j < cols;
++j) matrix[r][j] /=
divisor;

cout << "Bagi Baris " << r + 1 << " dengan " << divisor << ":" << endl;
displayMatrix(matrix); cout
<< endl;
// Lakukan operasi baris untuk membuat elemen lain di kolom yang sama menjadi 0 for
(int i = 0; i < rows; ++i) { if (i != r) {

double factor = matrix[i][lead]; for


(int j = 0; j < cols; ++j)
matrix[i][j] -
= factor * matrix[r][j];
cout << "Baris " << i + 1 << " - (" << factor << ") * Baris " << r + 1 << ":" << endl;
displayMatrix(matrix);
cout << endl;
}
}
++lead;
}
}
int main() {
int rows, cols;
cout << "Masukkan jumlah baris: "; cin
>> rows;
cout << "Masukkan jumlah kolom:
"; cin >> cols;
// Input matriks dari pengguna
cout << "Masukkan elemen-elemen matriks:" << endl;
vector<vector<double>> matrix(rows, vector<double>(cols));
for (int i = 0; i < rows; ++i) { for (int j = 0; j < cols; ++j) {
cin >> matrix[i][j];
}
}
cout << "\nMatriks awal:" << endl; displayMatrix(matrix);
// Konversi matriks ke dalam bentuk row echelon rowEchelonForm(matrix);
cout << "\nHasil bentuk row echelon:" << endl;
displayMatrix(matrix);
return 0;
}
SOAL:

HASIL DARI WEBSITE:


HASIL PEMPROGRAMAN:
Kelompok 3 Aljabar membuat codingan Transforming a matrix to reduced
row echelon form(mengubah matriks menjadi bentuk eselon baris tereduksi
http://www.math.odu.edu/~bogacki/cgi-bin/lat.cgi?c=rref

Zikki Sanjaya (G1C022050)


Sultanul Aulia Maulana (G1C022056)
Muammar Thoriq (G1C022036)
Rizky Kurniawan (G1C022026)
#include <iostream>
#include <vector>

using namespace std;

// Fungsi untuk mencetak matriks


void printMatrix(const vector<vector<double>>& matrix) {
for (const auto& row : matrix) {
for (double val : row) {
cout << val << " ";
}
cout << endl;
}
}

// Fungsi untuk membuat matriks baris echelon tereduksi


void rref(vector<vector<double>>& matrix, vector<string>& steps) {
int rowCount = matrix.size();
int colCount = matrix[0].size();

int lead = 0;

cout << "Initial Matrix:" << endl;


printMatrix(matrix);
steps.push_back("Initial Matrix");

for (int r = 0; r < rowCount; r++) {


if (lead >= colCount)
break;

int i = r;
while (matrix[i][lead] == 0) {
i++;
if (i == rowCount) {
i = r;
lead++;
if (colCount == lead)
return;
}
}

// Tukar baris i dan r


swap(matrix[i], matrix[r]);
steps.push_back("Step " + to_string(r + 1) + ": Swap row " + to_string(i + 1) + " with row " +
to_string(r + 1));
cout << "After Swap:" << endl;
printMatrix(matrix);

// Skala baris r sehingga leading entry menjadi 1


double div = matrix[r][lead];
for (int j = 0; j < colCount; j++)
matrix[r][j] /= div;
steps.push_back("Step " + to_string(r + 1) + ": Scale row " + to_string(r + 1) + " (divide by " +
to_string(div) + ")");
cout << "After Scale:" << endl;
printMatrix(matrix);

// Eliminasi Gauss untuk membuat semua elemen di bawah leading entry menjadi 0
for (int i = 0; i < rowCount; i++) {
if (i != r) {
double factor = matrix[i][lead];
for (int j = 0; j < colCount; j++) {
matrix[i][j] -= factor * matrix[r][j];
}
steps.push_back("Step " + to_string(r + 1) + ": Subtract " + to_string(factor) + " times
row " + to_string(r + 1) + " from row " + to_string(i + 1));
cout << "After Subtract:" << endl;
printMatrix(matrix);
}
}

lead++;
}
}

int main() {
// Inisialisasi matriks 3x4
vector<vector<double>> matrix(3, vector<double>(4, 0));

// Masukkan elemen-elemen matriks


cout << "Masukkan elemen-elemen matriks:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cout << "Masukkan elemen matriks [" << i + 1 << "][" << j + 1 << "]: ";
cin >> matrix[i][j];
}
}

vector<string> steps;
rref(matrix, steps);

cout << "\nLangkah-langkah Transformasi ke RREF:" << endl;


for (const string& step : steps) {
cout << step << endl;
}
cout << "\nMatriks RREF:" << endl;
printMatrix(matrix);

return 0;
}

Dengan soal

Hasil web
Hasil codingan
Kelompok 4 :
1. Christeas Budianto Tambunan (G1C022046)
2. Ranes Dianu Berta (G1C022062)
3. Benedrick Jovanka Tarigan (G1C022012)
4. Rangga Rezky Aran Puka (G1C022020)
Link website :
https://mathcracker.com/rref-calculator

Codingan:
#include <iostream>
#include <vector>

using namespace std;

// Fungsi untuk mencetak matriks


void printMatrix(const vector<vector<double>>& matrix) {
for (const auto& row : matrix) {
for (double element : row) {
cout << element << "\t";
}
cout << endl;
}
}

// Fungsi untuk membuat matriks RREF dan mencetak langkah-langkah


void rowEchelonForm(vector<vector<double>>& matrix) {
int rows = matrix.size();
int cols = matrix[0].size();
int lead = 0;

cout << "Langkah-langkah Pengerjaan:" << endl;


printMatrix(matrix);

for (int r = 0; r < rows; r++) {


cout << "\nLangkah " << r + 1 << ":\n";

if (cols <= lead) {


break;
}

int i = r;
while (matrix[i][lead] == 0) {
i++;
if (rows == i) {
i = r;
lead++;
if (cols == lead) {
break;
}
}
}

for (int j = 0; j < cols; j++) {


swap(matrix[i][j], matrix[r][j]);
}

double val = matrix[r][lead];


cout << "Pembagian baris " << r + 1 << " dengan " << val << ":\n";
for (int j = 0; j < cols; j++) {
matrix[r][j] /= val;
}

for (int i = 0; i < rows; i++) {


if (i != r) {
double factor = matrix[i][lead];
cout << "Kurangkan baris " << i + 1 << " dengan " << factor << " kali baris " << r + 1 << ":\n";
for (int j = 0; j < cols; j++) {
matrix[i][j] -= factor * matrix[r][j];
}
}
}

printMatrix(matrix);
lead++;
}
}

int main() {
int rows, cols;
cout << "Program By: Kelompok 4 :)" << endl;
cout << "Masukkan jumlah baris: ";
cin >> rows;

cout << "Masukkan jumlah kolom: ";


cin >> cols;

vector<vector<double>> matrix(rows, vector<double>(cols, 0));

cout << "Masukkan elemen matriks:" << endl;


for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << "Memasukkan Elemen Baris " << i + 1 << ", Kolom " << j + 1 << ": ";
cin >> matrix[i][j];
}
cout << endl;
}
cout << "Matriks dalam x1, x2, x3: " << endl;
cout << "x1 - 2x2 + x3 = 0"<< endl;
cout << "2x2 - 8x3 = 8" << endl;
cout << "5x1 - 5x3 = 10 " << endl;

cout << "\nMatriks Augmented:" << endl;


printMatrix(matrix);

rowEchelonForm(matrix);

cout << "\nMatriks RREF Akhir:" << endl;


printMatrix(matrix);

return 0;
}
Soal :
Hasil Pemrograman matrix 3x4 :
Hasil dari website :
PROGRAM MATRIKS METODE ELIMINASI GAUSS UNTUK MENEMUKAN SOLUSI SISTEM
PERSAMAAN LINIER DENGAN DUA VARIABEL (X,Y,DAN Z)
GRUB 5
Anggota:
1. Wahyu Wardana Sitepu (G1C022038)
2. Muhammad Fachrul Rozi (G1C022074)
3. Ardi Wasianto (G1C020030)
4. Arya Duta Ghandy (G1C021040)

ALAMAT WEB
https://www.omnicalculator.com/math/row-echelon-form

codingan matriks

#include <iostream>
#include <vector>

using namespace std;

void printMatrix(const vector<vector<double>>& matrix) {


for (const auto& row : matrix) {
for (double element : row) {
cout << element << "\t";
}
cout << endl;
}
}

void gaussianElimination(vector<vector<double>>& augmentedMatrix) {


int rows = augmentedMatrix.size();
int cols = augmentedMatrix[0].size();

cout << "Original Augmented Matrix:" << endl;


printMatrix(augmentedMatrix);
cout << "--------------------------" << endl;

for (int i = 0; i < min(rows, cols - 1); ++i) {

int maxRowIndex = i;
for (int k = i + 1; k < rows; ++k) {
if (abs(augmentedMatrix[k][i]) > abs(augmentedMatrix[maxRowIndex][i])) {
maxRowIndex = k;
}
}

if (maxRowIndex != i) {
cout << "Langkah " << i + 1 << ": Tukar baris " << i + 1 << " dan baris " << maxRowIndex
+ 1 << endl;
swap(augmentedMatrix[i], augmentedMatrix[maxRowIndex]);
printMatrix(augmentedMatrix);
cout << "--------------------------" << endl;
}
double pivot = augmentedMatrix[i][i];
if (pivot != 0) {
cout << "Langkah " << i + 1 << ": Bagilah baris " << i + 1 << " dari " << pivot << endl;
for (int j = 0; j < cols; ++j) {
augmentedMatrix[i][j] /= pivot;
}
printMatrix(augmentedMatrix);
cout << "--------------------------" << endl;

for (int k = 0; k < rows; ++k) {


if (k != i) {
double factor = augmentedMatrix[k][i];
cout << "Langkah " << i + 1 << ": Kurangi " << factor << " kali baris " << i + 1 << "
dari baris " << k + 1 << endl;
for (int j = 0; j < cols; ++j) {
augmentedMatrix[k][j] -= factor * augmentedMatrix[i][j];
}
printMatrix(augmentedMatrix);
cout << "--------------------------" << endl;
}
}
}
}

cout << "Hasil Akhir:" << endl;


printMatrix(augmentedMatrix);
}

int main() {

vector<vector<double>> augmentedMatrix = {
{1, -2, 1, 0},
{0, 2, -8, 8},
{5, 0, -5, 10}
};

gaussianElimination(augmentedMatrix);

return 0;
}

Bentuk hasil dari web


HASIL PADA CODINGAN
Kelompok 6 aljabar

Kalkulator matriks dan transformasinnya ke bentuk eselon baris berdasarkan web


https://github.com/taylorrodriguez/rref-calculator

Anggota :

1. Khafari fajar fardhu (G1C022008)


2. Bayu zolenra (G1C022030)
3. Jedi dia natanael sion (G1C022048)
4. Jery siprawinata (G1C022070)

PROGRAM:

#include <iostream>
#include <vector>

using namespace std;

// Fungsi untuk menampilkan matriks


void displayMatrix(const vector<vector<double>>& matrix) {
for (const auto& row : matrix) {
for (double element : row) {
cout << element << " ";
}
cout << endl;
}
cout << endl;
}

// Fungsi untuk mengurangi baris matriks menjadi bentuk RREF


void reducedRowEchelonForm(vector<vector<double>>& matrix) {
int rows = matrix.size();
int cols = matrix[0].size();
cout << "Matriks Awal:" << endl;
displayMatrix(matrix);

for (int i = 0; i < min(rows, cols - 1); i++) {


// Cari baris dengan elemen pertama tidak nol
int nonZeroRow = -1;
for (int j = i; j < rows; j++) {
if (matrix[j][i] != 0) {
nonZeroRow = j;
break;
}
}

if (nonZeroRow != -1) {
// Tukar baris dengan baris yang memiliki elemen pertama tidak nol
swap(matrix[i], matrix[nonZeroRow]);

cout << "Langkah " << i + 1 << ":" << endl;


displayMatrix(matrix);

// Ubah elemen pertama menjadi 1


double factor = 1.0 / matrix[i][i];
for (int j = i; j < cols; j++) {
matrix[i][j] *= factor;
}

cout << "Elemen pertama diubah menjadi 1:" << endl;


displayMatrix(matrix);

// Nolkan elemen di atas dan di bawah elemen pertama


for (int j = 0; j < rows; j++) {
if (j != i) {
double multiplier = matrix[j][i];
for (int k = i; k < cols; k++) {
matrix[j][k] -= multiplier * matrix[i][k];
}
}
}

cout << "Elemen di atas dan di bawah elemen pertama diubah menjadi 0:"
<< endl;
displayMatrix(matrix);
}
}
}

int main() {
// Meminta pengguna memasukkan matriks secara manual
vector<vector<double>> matrix(3, vector<double>(4, 0.0));
cout << "Masukkan elemen matriks 3x4 secara manual:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cout << "Masukkan elemen baris ke-" << i + 1 << " kolom ke-" << j + 1
<< ": ";
cin >> matrix[i][j];
}
}

reducedRowEchelonForm(matrix);

cout << "Matriks setelah Reduksi Baris Tereduksi (RREF):" << endl;
displayMatrix(matrix);
return 0;
}

DENGAN SOAL:

HASIL DARI PROGRAM :


HASIL DARI WEB https://github.com/taylorrodriguez/rref-calculator SEBAGAI
PERBANDINGAN:
Kelompok 7 Cara terbaik untuk menemukan Bentuk Eselon Baris Tereduksi (rref)
Alamat web: https://math.stackexchange.com/questions/1149771/best-way-to-find-reduced-row-
echelon-form-rref-of-a-matrix
Anggota: 1. Barry Amanullah (G1C022016)
2. Andra (G1C022066)
3. Soritua Munthe (G1C022004)
4. Bertino Jaya Siringoringo (G1C019030)

#include <iostream>
#include <vector>
void printMatrix(const std::vector<std::vector<double>>& matrix) {
for (const auto& row : matrix) {
for (double value : row) {
std::cout << value << " ";
}
std::cout << std::endl;
}
std::cout << std::endl;
}
void rowOperation(std::vector<std::vector<double>>& matrix, int i, int j, double k) {
int n = matrix[0].size(); // Jumlah kolom
for (int idx = 0; idx < n; ++idx) {
matrix[j][idx] -= k * matrix[i][idx];
}
}
void reduceToRREF(std::vector<std::vector<double>>& matrix) {
int lead = 0;
int rowCount = matrix.size();
int colCount = matrix[0].size();
for (int r = 0; r < rowCount; r++) {
if (colCount <= lead) {
break;
}

int i = r;
while (matrix[i][lead] == 0) {
i++;
if (rowCount == i) {
i = r;
lead++;
if (colCount == lead) {
return;
}
}
}

std::swap(matrix[i], matrix[r]);

if (matrix[r][lead] != 0) {
double val = matrix[r][lead];
std::cout << "Menggunakan " << val << " sebagai faktor pembagi untuk baris " << r+1
<< std::endl;
for (int j = 0; j < colCount; j++) {
matrix[r][j] /= val;
}
std::cout << "Baris " << r+1 << " dibagi dengan " << val << " menjadi:" << std::endl;
printMatrix(matrix);
}
for (i = 0; i < rowCount; i++) {
if (i != r) {
double val = matrix[i][lead];
std::cout << "Menggunakan " << val << " sebagai faktor pengurang untuk menghapus
entri di baris " << i+1 << std::endl;
for (int j = 0; j < colCount; j++) {
matrix[i][j] -= val * matrix[r][j];
}
std::cout << "Baris " << r+1 << " dikalikan dengan " << val << " dan dikurangkan dari
baris " << i+1 << " menjadi:" << std::endl;
printMatrix(matrix);
}
}
lead++;
}
}
int main() {
////ubah angka dibawah untuk matriks yang lain
std::vector<std::vector<double>> matrix = {{1, -2, 1, 0}, {0, 2, -8, 8}, {5, 0, -5, 10}};

std::cout << "Matriks awal:" << std::endl;


printMatrix(matrix);

reduceToRREF(matrix);

std::cout << "Matriks dalam bentuk RREF:" << std::endl;


printMatrix(matrix);
return 0;
}
Hasil coding
Hasil Web
Kelompok 8 Aljabar Matrix Row Echelon Calculator
https://www.symbolab.com/solver/matrix-row-echelon-calculator
Anggota : 1. Galih Satria Purnama (G1C022018)
2. Rasyid Shidiq (G1C022014)
3. Jelang Abdi Setyo (G1C022006)
4. Ray Natanael Simanjorang (G1C022054)

#include <iostream>
#include <vector>

using namespace std;

// Fungsi untuk menampilkan matriks


void displayMatrix(const vector<vector<double>>& matrix) {
for (const auto& row : matrix) {
for (const auto& element : row) {
cout << element << " ";
}
cout << endl;
}
}
// Fungsi untuk mengonversi matriks ke dalam bentuk row echelon
void rowEchelonForm(vector<vector<double>>& matrix) {
int rows = matrix.size();
int cols = matrix[0].size();
int lead = 0;

cout << "\nLangkah-langkah menuju Bentuk Row Echelon:\n" << endl;


displayMatrix(matrix);
cout << endl;

for (int r = 0; r < rows; ++r) {


if (lead >= cols)
break;

int i = r;
while (matrix[i][lead] == 0) {
++i;
if (i == rows) {
i = r;
++lead;
if (lead == cols)
return;
}
}
// Tukar baris i dan r
swap(matrix[i], matrix[r]);
cout << "Langkah " << r + 1 << ":" << endl;
displayMatrix(matrix);
cout << endl;
// Membuat elemen diagonal menjadi 1
double divisor = matrix[r][lead];
for (int j = 0; j < cols; ++j)
matrix[r][j] /= divisor;

cout << "Bagi Baris " << r + 1 << " dengan " << divisor << ":" << endl;
displayMatrix(matrix);
cout << endl;

// Lakukan operasi baris untuk membuat elemen lain di kolom yang sama menjadi 0
for (int i = 0; i < rows; ++i) {
if (i != r) {
double factor = matrix[i][lead];
for (int j = 0; j < cols; ++j)
matrix[i][j] -= factor * matrix[r][j];
cout << "Baris " << i + 1 << " - (" << factor << ") * Baris " << r + 1 << ":" << endl;
displayMatrix(matrix);
cout << endl;
}
}
++lead;
}
}
int main() {
int rows, cols;

cout << "Masukkan jumlah baris: ";


cin >> rows;
cout << "Masukkan jumlah kolom: ";
cin >> cols;

// Input matriks dari pengguna


cout << "Masukkan elemen-elemen matriks:" << endl;
vector<vector<double>> matrix(rows, vector<double>(cols));
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
cin >> matrix[i][j];
}
}
cout << "\nMatriks awal:" << endl;
displayMatrix(matrix);

// Konversi matriks ke dalam bentuk row echelon


rowEchelonForm(matrix);

cout << "\nHasil bentuk row echelon:" << endl;


displayMatrix(matrix);

return 0;
}
soal

Hasil Web

Hasil Codingan
Kelompok 9 Bentuk Eselon Baris Tereduksi Matriks

Grup 9

Dengan web : https://www.dcode.fr/matrix-row-echelon

Anggota : 1.Rahmat Alvi G1C022040

2.Ardian Sahputra Pane G1C022052

3.Adi Adhatul Ikhsan G1C022078

4.Irawan Tri Yunanto G1C022080

#include <iostream>
#include <vector>

using namespace std;

void printMatrix(const vector<vector<double>>& matrix) {


for (const auto& row : matrix) {
for (double element : row) {
cout << element << "\t";
}
cout << endl;
}
cout << endl;
}

void makeRowEchelonForm(vector<vector<double>>& matrix) {


int rowCount = matrix.size();
int colCount = matrix[0].size();

cout << "Matriks Awal:" << endl;


printMatrix(matrix);

for (int i = 0; i < rowCount; i++) {


cout << "Langkah " << i + 1 << ":" << endl;

// Membuat elemen diagonal menjadi 1


double diagonalElement = matrix[i][i];
cout << "Bagi Baris " << i + 1 << " dengan " << diagonalElement << ":" << endl;
for (int j = 0; j < colCount; j++) {
matrix[i][j] /= diagonalElement;
}
printMatrix(matrix);

// Mengeliminasi elemen non-nol di bawah dan di atas diagonal


for (int k = 0; k < rowCount; k++) {
if (k != i) {
double factor = matrix[k][i];
cout << "Kurangkan " << factor << " kali Baris " << i + 1 << " dari Baris " << k +
1 << ":" << endl;
for (int j = 0; j < colCount; j++) {
matrix[k][j] -= factor * matrix[i][j];
}
printMatrix(matrix);
}
}
}
}

int main() {
int rows, cols;

cout << "Masukkan jumlah baris matriks: ";


cin >> rows;

cout << "Masukkan jumlah kolom matriks: ";


cin >> cols;

vector<vector<double>> matrix(rows, vector<double>(cols, 0));

cout << "Masukkan elemen-elemen matriks:" << endl;


for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << "Matriks[" << i + 1 << "][" << j + 1 << "]: ";
cin >> matrix[i][j];
}
}

makeRowEchelonForm(matrix);

cout << "Matriks dalam Bentuk Echelon Baris Tereduksi:" << endl;
printMatrix(matrix);

return 0;
}
DENGAN SOAL
HASIL DARI WEB
HASIL DARI CODINGAN
Kelompok 10
1.Nanda (G1C021038)
2.Rahmat Hadi Ismanto (G1C021062)
3.Bill Clinton Manullang (G1C021070)
Website: Grup 10

Transforming Matriks to Reduced Row Echelon Form (RREF)


https://atozmath.com/MatrixEv.aspx?q=reduce

PROGRAM CODING MATRIKS 3 x 4


#include <iostream>
#include <vector>
using namespace std;

// Fungsi untuk mencetak matriks


void printMatrix(const vector<vector<double>> &matrix) {
int rows = matrix.size();
int cols = matrix[0].size();
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
// Fungsi untuk menukar dua baris pada matriks
void swapRows(vector<vector<double>> &matrix, int row1, int row2) {
int cols = matrix[0].size();
for (int j = 0; j < cols; j++) {
swap(matrix[row1][j], matrix[row2][j]);
}
}
// Fungsi untuk mengalikan satu baris dengan skalar
void scaleRow(vector<vector<double>> &matrix, int row, double scalar) {
int cols = matrix[0].size();
for (int j = 0; j < cols; j++) {
matrix[row][j] *= scalar;
}
}
// Fungsi untuk mengurangkan baris2 dengan baris1 yang telah dikalikan dengan suatu
faktor
void subtractRows(vector<vector<double>> &matrix, int row1, int row2, double factor) {
int cols = matrix[0].size();
for (int j = 0; j < cols; j++) {
matrix[row2][j] -= factor * matrix[row1][j];
}
}
// Fungsi untuk melakukan reduksi baris tereduksi
void reducedRowEchelonForm(vector<vector<double>> &matrix) {
int rows = matrix.size();
int cols = matrix[0].size();
int lead = 0; // Posisi leading 1 dalam setiap baris
for (int r = 0; r < rows; r++) {
if (cols <= lead) {
break;
}
int i = r;
while (matrix[i][lead] == 0) {
i++;
if (rows == i) {
i = r;
lead++;
if (cols == lead) {
break;
}
}
}
cout << "Langkah " << r + 1 << ":" << endl;
cout << "Swap baris " << r + 1 << " dengan baris " << i + 1 << endl;
swapRows(matrix, i, r);
printMatrix(matrix);
cout << "Skalar kali baris " << r + 1 << " dengan 1/dijagonal atas" << endl;
scaleRow(matrix, r, 1.0 / matrix[r][lead]);
printMatrix(matrix);
for (int i = 0; i < rows; i++) {
if (i != r && matrix[i][lead] != 0) {
cout << "Kurangkan baris " << i + 1 << " dengan " << matrix[i][lead] << " kali
baris " << r + 1 << endl;
subtractRows(matrix, r, i, matrix[i][lead]);
printMatrix(matrix);
}
}

lead++;
cout << "------------------------------------" << endl;
}
}
int main() {
int rows, cols;
// Meminta input dari pengguna untuk jumlah baris dan kolom
cout << "Masukkan jumlah baris matriks: ";
cin >> rows;
cout << "Masukkan jumlah kolom matriks: ";
cin >> cols;
// Meminta input elemen matriks dari pengguna
vector<vector<double>> matrix(rows, vector<double>(cols));
cout << "Masukkan elemen-elemen matriks:" << endl;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << "Masukkan elemen baris " << i + 1 << " kolom " << j + 1 << ": ";
cin >> matrix[i][j];
}
}
// Tampilkan matriks awal
cout << "Matriks awal:" << endl;
printMatrix(matrix);
// Ubah matriks menjadi bentuk eselon baris tereduksi dan tampilkan prosesnya
reducedRowEchelonForm(matrix);
// Tampilkan matriks hasil
cout << "Matriks eselon baris tereduksi:" << endl;
printMatrix(matrix);
return 0;
}
Hasil Dari codingan C++
Hasil dari web : Transforming Matriks to Reduced Row Echelon Form
https://atozmath.com/MatrixEv.aspx?q=reduce

You might also like