Algoritma Eliminasi Gauss-Naif

persamaan linier merupakan persoalan yang biasa kita temukan dalam matematika. penyelesaian persamaan linier biasanya menggunakan proses subtitusi dan eliminasi. pada kesempatan kali ini saya mencoba berbagi penyelesaian persamaan linier menggunakan program yaitu menggunakan algoritma Eliminasi Gauss-Naif atau biasa disebut Eliminasi Gauss. pada operasi ini kita menggunakan matrik dalam prosesnya.


untuk proses pseduocode sebagai berikut


untuk sources codenya saya menggunakan bahasa c sebagai berikut

#include "stdio.h";
#define MAX 20

void baca();
void obe();
void akar();
void input();

int n = 3;
//float A[3][4] = {{1,3,2,44},{1,4,1,49},{2,5,5,83}};
//float A[3][4] = {{4,2,2,8},{7,1,7,49},{0,-1,5,25}};
//float A[3][3+1] = {{1,1,1,6},{1,2,-1,2},{2,1,2,10}};
float A[MAX][MAX];// = {{1,1,1,6},{1,2,-1,2},{2,1,2,10}};
//float A[n][n+1] = {{1,1,1,6},{1,2,-1,2},{2,1,2,10}};

//float B[3];
float B[MAX];

int main(){
	input();
	baca();
	obe();
	baca();
	akar();
	return 0;
}

void akar(){
	float X[n-1];
	int i,j,k;
	float sigma;
	
	X[n-1] = B[n-1]/A[n-1][n-1];
	for(k=n-2;k>=0;k--){
		sigma = 0;
		for(j = k+1 ; j < n ; j++){
			sigma = sigma + A[k][j] * X[j];
		}
		X[k] = (B[k] - sigma) / A[k][k];
	}
	
	for(i = 0 ; i < n ; i++){
		printf("X[%d] = %lg\n",i,X[i]);
	}
}
void input(){
	int i,j;
	printf("Ordo matriks : ");
	fflush(stdin);
	scanf("%d",&n);
	
	for(i = 0 ; i < n ; i++){
		for(j = 0; j < n+1 ; j++){
			printf("matriks[%d][%d] : ", i,j);
			fflush(stdin);
			scanf("%f",&A[i][j]);
		}
	}
}

void obe(){
	int i,j,k;
	float c;
	for(i=0;i < n-1;i++){
		for(j=i+1;j < n;j++){
			c = A[j][i] / A[i][i];
			for(k=0;k < n+1;k++){
				A[j][k] = A[j][k] - c * A[i][k];
			}
		}
	}
	for(i=0;i < n;i++){
		B[i] = A[i][n];
	}
}
void baca(){
	int i,j;
	for(i=0;i < n;i++){
		for(j=0;j < n+1;j++){
			printf("%.2f\t",A[i][j]);
		}
		printf("\n");
	}
	printf("\n");
}

Posting Komentar