Anda di halaman 1dari 21

I.

Tujuan
1. Eliminasi Gauss
Mempelajari metode Eliminasi Gauss untuk penyelesaian system persamaan aljabar
linier.
2. Eliminasi Gauss Jordan
Mempelajari metode Eliminasi Gauss Jordan untuk penyelesaian system persamaan
aljabar linier.
3. Eliminasi Gauss Seidel
Mempelajari metode Eliminasi Gauss untuk penyelesaian system persamaan aljabar
linier.
II. Teori Dasar

A. Eliminasi Gauss
Eliminasi Gauss adalah suatu metode untuk mengoperasikan nilai-nilai di dalam
matriks sehingga menjadi matriks yang lebih sederhana lagi. Dengan melakukan operasi
baris sehingga matriks tersebut menjadi matriks yang baris. Ini dapat digunakan sebagai
salah satu metode penyelesaian persamaan linear dengan menggunakan matriks. Caranya
dengan mengubah persamaan linear tersebut ke dalam matriks teraugmentasi dan
mengoperasikannya. Setelah menjadi matriks baris, lakukan substitusi balik untuk
mendapatkan nilai dari variabel-variabel tersebut.

Kelebihan dan Kekurangan


Metode ini digunakan dalam analisis numerik untuk meminimalkan mengisi selama
eliminasi, dengan beberapa tahap
Keuntungan :
- menentukan apakah sistem konsisten
- menghilangkan kebutuhan untuk menulis ulang variabel setiap langka
- lebih mudah untuk memecahkan
kelemahan :
- memiliki masalah akurasi saat pembulatan desimal
Contoh Soal :
Diketahui persamaan linear
x + 2y + z = 6
x + 3y + 2z = 9
2x + y + 2z = 12
Tentukan Nilai x, y dan z

Jawab:
Bentuk persamaan tersebut ke dalam matriks:
1 2 1 6
1 3 2 9
2 1 2 12

Operasikan Matriks nya:


1 2 1 6
0 1 1 3
2 1 2 12 Baris ke-2 dikurangi baris ke-1

1 2 1 6
0 1 1 3
0 -3 0 0 Baris ke-3 dikurangi 2 kali baris ke-1

1 1 1 6
0 1 1 3
0 0 3 9 Baris ke-3 ditambah 3 kali baris ke-2

1 2 1 6
0 1 1 3
0 0 1 3 Baris ke-3 dibagi dengan 3

Maka mendapatkan 3 persamaan linier baru yaitu


x + 2y + z = 6
y+z=3
z=3

Kemudian lakukan substitusi balik maka didapatkan:


y+z=3
y+3=3
y=0
x + 2y + z = 6
x+0+3=6
x=3
Jadi nilai dari x = 3 , y = 0 ,dan z = 3

B. Eliminasi Gauss Jordan


Salah satu metode yang dapat digunakan untuk menyelesaikan sistem persamaan
linier adalah metode eliminasi Gauss-Jordan. Metode ini diberi nama Gauss-Jordan untuk
menghormati CarlFriedrich Gauss dan Wilhelm Jordan. Metode ini sebenarnya adalah
modifikasi dari metode eliminasi Gauss, yang dijelaskan oleh Jordan di tahun 1887.

Metode Gauss-Jordan ini menghasilkan matriks dengan bentuk baris eselon yang
tereduksi(reduced row echelon form), sementara eliminasi Gauss hanya menghasilkan
matriks sampai pada bentuk baris eselon (row echelon form).
Eliminasi Gauss-Jordan adalah pengembangan dari eliminasi Gauss yang hasilnya
lebih sederhanalagi. Caranya adalah dengan meneruskan operasi baris dari eliminasi Gauss
sehingga menghasilkan matriks yang Eselon-baris. Ini juga dapat digunakan sebagai salah
satu metode penyelesaian persamaan linear dengan menggunakan matriks.
Metode ini digunakan untuk mencari invers dari sebuah matriks.
Prosedur umum untuk metode eliminasi Gauss-Jordan ini adalah
1. Ubah sistem persamaan linier yang ingin dihitung menjadi matriks augmentasi.
2. Lakukan operasi baris elementer pada matriks augmentasi (A|b) untuk mengubah
matriks
A menjadi dalam bentuk baris eselon yang tereduksi

Pengubahan dilakukan dengan membuat matriks yang elemen-elemennya adalah


koefisien-
koefisien dari sistem persamaan linier..
Sedangkan langkah-langkah pada operasi baris elementer yaitu :
1.Menukar posisi dari 2 baris.
Ai ↔Aj
2.Mengalikan baris dengan sebuah bilangan skalar positif.
Ai = k*Aj
3.Menambahkan baris dengan hasil kali skalar dengan baris lainnya
Algoritma Metode Eliminasi Gauss adalah:
1. Masukkan matrik A, dan vektor B beserta ukurannya n
2. Buat augmented matrik [A|B] namakan dengan A
3. Untuk baris ke i dimana i=1 s/d n, perhatikan apakah nilai ai,i =0 :
Bila ya :
pertukarkan baris ke i dan baris ke i+k≤n, dimana ai+k ,i ≠0, bila tidak ada berarti
perhitungan tidak bisa dilanjutkan dan proses dihentikan dengan tanpa penyelesaian. Bila
tidak : lanjutkan
4. Untuk baris ke j, dimana j = i+1 s/d n

Kelebihan dan Keuntungan :


Mengubah sistem persamaan linier yang ingin dihitung menjadi matriks augmentasi.
merupakan variasi dari eliminasi gauss dengan kebutuhan dapat mgenyelesaikan matriks
invers

C. Eliminasi Gauss Seidel


Metode interasi Gauss-Seidel adalah metode yang menggunakan proses iterasi
hingga diperoleh nilai-nilai yang berubah-ubah. Metode iterasi Gauss-Seidel
dikembangkan dari gagasan metode iterasi pada solusi persamaan tak linier .
Rumus dari metode eliminasi Gauss-Seidel :

Xi (k) = 1 bi - ∑ aiixj(k) - ∑ aiiXj(k-1) , I = 1,2,3,4,……n


aii

Kekurangan dan Kelebihan


Metode eliminasi gauss-seidel digunakan untuk menyelesaikan SPL yg berukuran kecil
karena metode ini lebih efisien. Dengan metode iterasi Gauss-Seidel sesatan pembulatan
dapat diperkecil karena dapat meneruskan iterasi sampai solusinya seteliti mungkin sesuai
dengan batas sesatan yang diperbolehkan.
Kelemahan dari metode ini adalah masalah pivot (titik tengah) yang harus benar–benar
diperhatikan, karena penyusun yang salah akan menyebabkan iterasi menjadi divergen dan
tidak diperoleh hasil yang benar.
III. Prosedur Percobaan
a. Algoritma Eliminasi Gauss
1) Masukkan jumlah ordo matriks n dan inputkan masing-masing elemen augmented
matriks A
2) Untuk kolom ke-i, di mana : 0 <= i < n-1 lakukan OBE (operasi baris elementer) sbb :
Untuk baris ke-j, di mana: i+1 <= j < n - hitung nilai konstanta c : c = A[j][i] / A[i][i]
- Untuk kolom ke-k, di mana : 0 <= k < n+1 (termasuk kolom yg berisi vektor b)
hitunglah : A[j][k] = A[j][k] - c * A[i][k]
3) Isikan elemen matriks pada kolom ke-n (kolom terakhir dari augmented matriks) ke
dalam matriks vektor b sbb : Untuk baris ke-i : 0 <= i < n b[i] = A[i][n]
4) Hitung akar x dengan cara melakukan substitusi mundur sbb : - x[n-1] = b[n-1]/A[n-
1][n-1] - Untuk baris ke-k, di mana : n-2 >= k >= 0 - sigma = 0 - untuk kolom ke-j, di
mana : k+1 <= j < n , hitunglah sigma = sigma + A[k][j] * x[j] - x[k] = (b[k] - sigma)
/ A[k][k] - Untuk indeks ke-i, di mana : 0 <= i < n tampilkan akar x[i]
b. Algoritma Gauss Jordan
1) Masukkan jml ordo matriks n dan inputkan masing-masing elemen augmented matriks
A
2) Masukkan nilai epsilon (ep) untuk mentolerir nilai pivot
3) Lakukan pengecekan pivot mulai dari kolom ke-i, di mana : 0 <= i < n lakukan : a.
pivot = A[i][i] b. besar = i; c. jika |pivot| < ep, maka perlu dilakukan pertukaran baris
sbb : - untuk baris ke-p, di mana : i+1 <= p < n lakukan jika |pivot| < |A[p][i]|, maka
pivot = A[p][i] besar = p - tukar_baris ke-i dengan baris ke-besar
4) Lakukan pertukaran baris ke-i dengan baris ke-besar - Untuk kolom ke-j, di mana : 0
<= j <= n lakukan : - temp[j] = A[i][j] - A[i][j] = A[besar][j] - A[besar][j] = temp[j]
5) Untuk kolom ke-i, di mana : 0 <= i < n-1 lakukan OBE (operasi baris elementer) pada
baris-baris di BAWAH diagonal sbb : Untuk baris ke-j, di mana: i+1 <= j < n i. hitung
nilai konstanta c : c = A[j][i] / A[i][i] ii. Untuk kolom ke-k, di mana : 0 <= k < n+1
(termasuk kolom yg berisi vektor b) hitunglah : temp = c * A[i][k] A[j][k] = A[j][k] -
temp
6) Untuk baris ke-j, di mana : 0 <= j < n lakukan operasi untuk menjadikan semua elemen
pada diagonal bernilai 1 sbb : pivot = A[j][j] Untuk kolom ke-k, di mana : 0 <= k < n
hitunglah : A[j][k] = A[j][k] / pivot
7) Untuk kolom ke-i, di mana : 0 <= i < n lakukan OBE (operasi baris elementer) pada
baris-baris di ATAS diagonal sbb : Untuk baris ke-j, di mana: i-1 >= j >= 0 i. hitung
nilai konstanta c : c = A[j][i] ii. Untuk kolom ke-k, di mana : 0 <= k <= n+1 (termasuk
kolom yg berisi vektor b) hitunglah : temp = c * A[i][k] A[j][k] = A[j][k] - temp
8) Hitung akar x dengan cara melakukan substitusi mundur sbb : - Untuk indeks ke-i, di
mana : 0 <= i < n tampilkan akar x[i] = A[i][n]

c. Algoritma Gauss Seidel


1) Set penghitung iterasi k = 1
2) WHILE k <= N DO

(a) FOR i = 1, 2, 3, ..., n, hitung :


(b) Set X = (x1 x2 x3 ...xn)T
(c) IF ||X - Y|| < T THEN STOP
(d) Tambah penghitung iterasi, k = k + 1
(e) FOR i = 1, 2, 3, ..., n, Set yi = xi
(f) Set Y = (y1 y2 y3 ...yn)T
3) Tulis pesan "metode gagal setelah N iterasi"
4) STOP.

IV. Flow Chart


V. Hasil Dan Analisa
1. Eliminasi Gauss
a. 5X1 + 4X2 = 25
4X1 – 3X2 +7X3 = 3
X2 – 6X3 + 4X4 = 17
12X3 + 2X4 = 36

Dari perhitungan di atas, maka didapatkan nilai X sebagai berikut :


X1 = 1 X3 = 2
X2 = 5 X4 = 6
b. Baris II dan baris III ditukar
5X1 + 4X2 = 25
X2 – 6X3 + 4X4 = 17
4X1 – 3X2 +7X3 = 3
12X3 + 2X4 = 36

Dari perhitungan di atas, maka didapatkan nilai X sebagai berikut :


X1 = 1 X3 = 2
X2 = 5 X4 = 6
c. Baris I dan Baris IV ditukar
12X3 + 2X4 = 36
4X1 – 3X2 +7X3 = 3
X2 – 6X3 + 4X4 = 17
5X1 + 4X2 = 25

Perhitungan di atas, Tidak ada penyelesaian (error)


2. Eliminasi Gauss Jordan
a. 5X1 + 4X2 = 25
4X1 – 3X2 +7X3 = 3
X2 – 6X3 + 4X4 = 17
12X3 + 2X4 = 36
Dari perhitungan di atas, maka didapatkan nilai X sebagai berikut :
X1 = 1 X3 = 2
X2 = 5 X4 = 6
b. Baris I dengan Baris III ditukar
X2 – 6X3 + 4X4 = 17
4X1 – 3X2 +7X3 = 3
5X1 + 4X2 = 25
12X3 + 2X4 = 36

Perhitungan di atas, Tidak ada penyelesaian (error)

c. Baris II dengan baris IV ditukar


5X1 + 4X2 = 25
12X3 + 2X4 = 36
X2 – 6X3 + 4X4 = 17
4X1 – 3X2 +7X3 = 3

Perhitungan di atas, tidak ada penyelesaian (error)


3. Eliminasi Gauss Seidel
a. X1 + 7X2 – 3X3 = -51
-4X1 – 4X2 + 9X3 = 61
12X1 – X2 +3X3 = 3

Maka didapat nilai X1, X2 , X3 pada setiap Iterasi adalah :


Iterasi 1 : X1 = -51 X2 = 35,75 X3 = 218, 583344
Iterasi 2 : X1 = 354,500031 X2 = 122,062492 X3 = -1374,645996
Iterasi 3 : X1 = -5029,375488 X2 = 1921,171997 X3 = 20760,558594
Iterasi 4 : X1 = 48782,472656 X2 = -2086,46582 X3 = -195822,703125
Iterasi 5 : X1 = -572913,875 X2 = 132297,546875 X3 = 2335757,5
b. Kolom I dengan kolom II ditukar
7X2 + X1 – 3X3 = -51
-4X2 – 4X1 + 9X3 = 61
-X2 – 12X1 +3X3 = 3

Maka didapat nilai X1 , X2 dan X3 pada setiap iterasi adalah :


Iterasi 1 : X1 = -7,285714 X2 = -7.964286 X3 = 32.095238
Iterasi 2 ; X1 = 7.607142 X2 = 49.357140 X3 = -192.226181
Iterasi 3 : X1 = -96.719382 X2 = -351.0.952 X3 = 1374.584961
Iterasi 4 : X1 = 631.970642 X2 = 2445.595459 X3 = -9569.058594
Iterasi 5 : X1 = -4457.681641 X2 = -17087.949219 X3 = 66868.570313
c. Kolom I dengan kolom III ditukar

-3X3 +7X2 + X1 = -51


9X3 – 4X2 – 4X1 = 61
3X3 – X2 + 12X1 = 8
Maka didapat nilai X1 , X2 dan X3 pada setiap iterasi adalah :
Iterasi 1 : X1 = 17 X2 = 23 X3 = -1.666667
Iterasi 2 ; X1 = 70.111107 X2 = 144.166656 X3 = -4.847223
Iterasi 3 : X1 = 351.773102 X2 = 781.086731 X3 = -22.186050
Iterasi 4 : X1 = 1832.140259 X2 = 4129.251465 X3 = -113.264122
Iterasi 5 : X1 = 9614.165039 X2 = 21729.884766 X3 = -592.050781
d. Kolom II dan kolom III ditukar
X1 – 3X3 + 7X2 = -51
-4X1 + 9X3 – 4X2 = 61
12X1 +3X3 – X2 = 8

Maka didapat nilai X1 , X2 dan X3 pada setiap iterasi adalah :


Iterasi 1 : X1 = -51 X2 = -15.888889 X3 = -667.666687
Iterasi 2 ; X1 = 4575 X2 = 1743.370361 X3 = 60122.109375
Iterasi 3 : X1 = -415675.656250 X2 = -158017.015625 X3 = -5462167
Iterasi 4 : X1 = 37761068 X2 = 14355074 X3 = 496198016
Iterasi 5 : X1 = -3430320896 X2 = -1304054528 X3 = -45076013056
VI. Analisa
Pada Percobaan Eliminasi Gauss di bagian b yaitu ketika baris 1 dan baris 4 di
tukar,tidak ada penyelesaian karena pivot a (1)(1) bernilai 0.Pada percobaan eliminasi
gauss Jordan di bagian b ketika baris 1 dan baris 4 di tukar,tidak ada penyelesaian
karena pivot dan a33 bernilai 0.Yang harusnya mempunyai nilai jika ingin bisa
menyelesaikan eliminasi gauss Jordan (syarat).Pada percobaan eliminasi gauss Jordan di
bagian c ketika baris 2 dengan baris 4 di tukar,tidak ada penyelesaian karena nilai a21
dan a44 bernilai 0.syarat untuk bisa menyelesaikan eliminasi ini yaitu harus mempunyai
nilai dan akhirnya nanti akan menjadi 1.
VII. Kesimpulan
1. Metode Gauss-Jordan ini menghasilkan matriks dengan bentuk baris eselon yang
tereduksi(reduced row echelon form), sementara eliminasi Gauss hanya menghasilkan
matriks sampai pada bentuk baris eselon (row echelon form).
2. Pada eliminasi gauss dan gauss Jordan,jika ada pivpot yang bernilai 0 maka tidak ada
penyelesaian.
3. Jika menggunakan program dev c++ ,tidak semua persaam bisa di cari
penyelesaiannya.
4. pivot after pivotion tidak boleh sama dengan nol karena dapat membuat X tidak dapat
ditemukan
1.Listing Program Eliminasi Gauss
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 20

void gauss2(double a[MAX][MAX], double b[MAX], int, int, double x[MAX]);


void cetak(double a[MAX][MAX], double b[MAX], int);
void hasil(double a[MAX][MAX], double b[MAX], int);
main(){
double a[MAX][MAX], b[MAX], x[MAX];
int dimensi, baris, kolom, flag;
char z;
do{

printf(" nama \n");


printf(" nrp \n");
printf(" (ELIMINASI GAUSS JORDAN) \n");
printf("========================================\n");

printf("Masukkan dimensi : ");


scanf("%d", &dimensi);
printf("masukkan koefisien matriks :\n");
for(baris=1; baris<=dimensi; baris++){
for(kolom=1; kolom<=dimensi; kolom++){
printf("a(baris[%d],kolom[%d]) : ", baris, kolom);
scanf("%lf", &a[baris][kolom]);
}
}

printf("\nmasukkan vektor hasil :\n");


for(baris=1; baris<=dimensi; baris++){
printf("b(baris[%d]) : ", baris);
scanf("%lf", &b[baris]);
}
cetak(a, b, dimensi);
gauss2(a, b, dimensi, flag, x);
if(flag!=0){
hasil(a, b, dimensi);
}
printf("\n\n");
}while(z=='y'||z=='Y');
}
void gauss2(double a[MAX][MAX], double b[MAX], int dimensi, int flag, double
x[MAX]){
double pivot1, pivot2;
int pos, baris, kolom;
flag = 1;
for(pos=1; pos<=dimensi; pos++){
pivot1 = a[pos][pos];
if(pivot1 == 0){
flag=0;
printf("pivot pada a[%d][%d] bernilai nol, tidak ada penyelesaian", pos, pos);
break;
}
else{
for(kolom=1; kolom<=dimensi; kolom++)
a[pos][kolom]=a[pos][kolom]/pivot1;
b[pos]=b[pos]/pivot1;
cetak(a, b, dimensi);
for(baris=pos; baris<=dimensi; baris++){
if(baris+1<=dimensi){
pivot2 = a[baris+1][pos];
for(kolom=1; kolom<=dimensi; kolom++)
a[baris+1][kolom]=a[pos][kolom]*(-pivot2)+a[baris+1][kolom];
b[baris+1]=b[pos]*(-pivot2)+b[baris+1];
cetak(a, b, dimensi);
}
}
}
}
}
void cetak(double a[MAX][MAX], double b[MAX], int dimensi){
int baris, kolom;
printf("\n");
for(kolom=1; kolom<=dimensi; kolom++)
printf(" a%d ", kolom);
printf(" b \n");
for(baris=1; baris<=dimensi; baris++){
for(kolom=1; kolom<=dimensi; kolom++)
printf("%6.2lf", a[baris][kolom]);
printf("%6.2lf\n", b[baris]);
}
}
void hasil(double a[MAX][MAX], double b[MAX], int dimensi){
int pos, kolom, i;
double x[MAX], temp;
x[dimensi]=b[dimensi]/a[dimensi][dimensi];
for (pos=dimensi-1;pos>=1;pos--){
temp=b[pos];
for(kolom=pos+1;kolom<=dimensi;kolom++)
temp=temp-a[pos][kolom]*x[kolom];
x[pos]=temp/a[pos][pos];
}
printf("\n\nHASILNYA ADALAH\n");
printf("------------------------\n");
printf("| I \t | X(I) |\n");
printf("------------------------\n");
for (i=1;i<=dimensi;i++)
{
printf("|");
printf("%5d", i);
printf("\t |");
printf("%lf |\n", x[i]);
}
printf("------------------------\n");
system("PAUSE");
return ;
}
2. Listing program Eliminasi Gauss Jordan
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char*argv[])
{
unsigned int yan,brs,klm,cbrs,cklm,temp;
printf(" nama \n");
printf(" nrp \n");
printf(" (ELIMINASI GAUSS) \n");
printf("========================================\n");
printf("Masukkan jumlah variable:");
scanf("%d",&yan);
float ratio,matrix[yan][yan+1];
for(brs=1;brs<=yan;brs++)
{
printf("masukkan baris ke %d\n",brs);
for(klm=1;klm<=yan+1;klm++)
{
scanf("%f",&matrix[brs][klm]);
}
}
for(brs=1;brs<=yan;brs++)
{
printf("\n");
for(klm=1;klm<=yan+1;klm++)
{
printf("%9.3f",matrix[brs][klm]);
}
}
for(temp=1;temp<=yan;temp++)
{
ratio=matrix[temp][temp];
for(klm=1;klm<=yan+1;klm++)
matrix[temp][klm]/=ratio;
for(brs=temp+1;brs<=yan;brs++)
{
ratio=matrix[brs][temp];
for(klm=1;klm<=yan+1;klm++)
matrix[brs][klm]-=matrix[temp][klm]*ratio;
}
}
for(temp=yan-1;temp>=1;temp--)
{
for(brs=temp;brs>=1;brs--)
{
ratio=matrix[brs][temp+1];
for(klm=1;klm<=yan+1;klm++)
matrix[brs][klm]-=matrix[temp+1][klm]*ratio;
}
}

printf("\n\n");
for(brs=1;brs<=yan;brs++)
{
printf("\n");
for(klm=1;klm<=yan+1;klm++)
printf("%9.3f",matrix[brs][klm]);
}
printf("\n\n");
for(brs=1;brs<=yan;brs++)
printf("Nilai X(%d):%9.3f\n",brs,matrix[brs][yan+1]);
printf("\n");
system("PAUSE");
return 0;}
3. Listing program Eliminasi Gauss seidel
#include<iostream>
#include<conio.h>

using namespace std;

int main(void)
{
float a[10][10], b[10], x[10], y[10];
int n = 0, m = 0, i = 0, j = 0;
cout << "Enter size of 2d array(Square matrix) : ";
cin >> n;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
cout << "Enter values no :(" << i << ", " << j << ") ";
cin >> a[i][j];
}
}
cout << "\nEnter Values to the right side of equation\n";
for (i = 0; i < n; i++)
{
cout << "Enter values no :(" << i << ", " << j << ") ";
cin >> b[i];
}
cout << "Enter initial values of x\n";
for (i = 0; i < n; i++)
{
cout << "Enter values no. :(" << i<<"):";
cin >> x[i];
}
cout << "\nEnter the no. of iteration : ";
cin >> m;
while (m > 0)
{
for (i = 0; i < n; i++)
{
y[i] = (b[i] / a[i][i]);
for (j = 0; j < n; j++)
{
if (j == i)
continue;
y[i] = y[i] - ((a[i][j] / a[i][i]) * x[j]);
x[i] = y[i];
}
printf("x%d = %f ", i + 1, y[i]);
}
cout << "\n";
m--;
}
system("PAUSE");
return 0;

Anda mungkin juga menyukai