Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #define maks 100
- float A[maks][maks],x[maks], b[maks];
- int n;
- void tukar_baris(int i, int besar) {
- float temp[100];
- int j;
- for(j=0;j<=n;j++) {
- temp[j] = A[i][j];
- A[i][j] = A[besar][j];
- A[besar][j] = temp[j];
- }
- }
- void carimatriksb() {
- static int i,j;
- for(i=0;i<n;i++) {
- b[i]=A[i][n];
- }
- }
- void tampil() {
- int i,j;
- for(i=0;i<n;i++) {
- for(j=0;j<n+1;j++) {
- printf("%3g",A[i][j]);
- }
- printf("\n");
- }
- printf("\n");
- }
- void masukkan() {
- int i,j;
- float v[100];
- printf(" Masukkan ukuran matriks : "); scanf("%d",&n);
- puts("----------------------------------------");
- for(i=0;i<n;i++) {
- for(j=0;j<n;j++) {
- printf(" matrik A[%d][%d] = ",i+1,j+1);
- scanf("%f",&A[i][j]);
- A[i][j] = A[i][j];
- }
- }
- puts("----------------------------------------");
- printf(" Masukkan vektor matriks : \n");
- puts("----------------------------------------");
- for(i=0;i<j;i++) {
- printf(" vektor [%d] = ",i+1);
- scanf("%f",&v[i]);
- A[i][j] = v[i];
- }
- printf("\n Matriks awal:\n");
- puts("----------------------------------------");
- tampil();
- }
- void main() {
- int i,j, konvergen, max_iter, iter;
- float smtr, temp, e, ep;
- float xnow[100], xbef[100];
- puts(" METODE ELIMINASI GAUSS SEIDEL");
- puts("========================================");
- masukkan();
- printf(" Jumlah iterasi maksimum : ");
- scanf("%d",&max_iter);
- printf(" Toleransi error : ");
- scanf("%f",&ep);
- puts("----------------------------------------");
- fflush(stdin);
- carimatriksb();
- for(i=0;i<n;i++) {
- xnow[i] = 0; // nilai awal
- }
- puts("");
- printf("%-5s","iter x1");
- for(i=1;i<n;i++) {
- printf("%10.5s%d","x",i+1);
- }
- for(i=0;i<n;i++) {
- printf("%10.5s","e");
- }
- printf("\n%-5d",0);
- for(i=0;i<n;i++) {
- printf("%-11.5g",xnow[i]);
- }
- printf("\n");
- iter = 1;
- konvergen = 0;
- while(konvergen==0 && iter<max_iter) {
- for(i=0;i<n;i++) {
- temp = 0;
- for(j=0;j<n;j++) {
- if(i != j) {
- temp = temp + A[i][j] * xnow[j];
- }
- }
- smtr = (b[i] - temp) / A[i][i];
- xbef[i] = xnow[i];
- xnow[i] = smtr;
- }
- printf("%-5d",iter);
- for(i=0;i<n;i++) {
- printf("%-11.5g",xnow[i]);
- }
- for(i=0;i<n;i++) {
- e = fabs(xnow[i] - xbef[i]);
- printf("%-11.5g",e);
- if(i==0 && e<ep) {
- konvergen = 1;
- }
- if(e > 100) {
- printf("hasil divergen\n");
- exit(0);
- }
- }
- printf("\n");
- iter++;
- }
- printf("Hasilnya : \n");
- for(i=0;i<n;i++) {
- printf("x%d : %g\n",i+1,xnow[i]);
- }
- }
- // lpuarmy.blogspot.com
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement