loading...
loading...

Thursday, June 9, 2016

Source Code METODE JACOBI c++


PENYELESAIAN PERSAMAAN LINEAR SERENTAK

Persamaan Linear serentak adalah suatu persamaan dengan variabel bebas,
misalnya :
y1 = a11x1 + a12x2 + a13x3 +... + a1nxn  
y2 = a21x1 + a22x2 + a23x3 +... + a2nxn
y2 = a31x1 + a32x2 + a33x3 +... + a3nxn

Penyelesaian dari persamaan tersebut bisa menggunakan bantuan matriks. Namun untuk ordo (jumlah  variabel dan jumlah persamaan) yang tinggi, penyelesaian dapat menggunakan nilai pendekatan. Oleh  sebab itu, metode numerik bisa digunakan untuk persamaan ini.
Metode yang bisa dipakai akan  dijelaskan di bawah ini.

 METODE JACOBI
Metode iterasi Jakobi adalah metode penyelesaian persamaan serentak melalui proses iterasi dengan  menggunakan persamaan sbb :
   
x1 n1=hi/aii−∑ j=1 n
aij/aiix j n...3a
     dimana j <> i
Kelemahan dari metode ini adalah : 1. Jika ordo persamaan cukup tinggi maka konsumsi waktu untuk eksekusi program menjadi lama. 2. Metode ini hanya bisa dipakai jika persamaan yang akan diselesaikan memenuhi syarat  persamaan berikut
∣aii∣∑ j=1 n
∣aij∣,i=1,2,...,Npersamaan3b
dimana j <> I
Berikut algoritma Metode Jacobi 1. Cek apakah susunan persamaan yang akan diselesaikan memenuhi syarat persamaan 3b. Jika ya,  maka lanjut ke langkah kedua. 2. Menyusun matriks koefisien, matriks variabel, dan matriks hasil. 3. Langkah ketiga adalah menentukan titik variabel x awal kemudian melakukan iterasi dengan  persamaan 3a hingga didapatkan nilai variabel x yang tidak berubah atau hampir tidak berubah  dari iterasi yang sebelumnya.
Contoh : Carilah penyelesaian dari persamaan sbb :  8x1x2x3=8 x1−7x22x3=−4 x12x29x3=12
Langkah pertama, menyusun urutan persamaan sehingga memenuhi persyaratan pada persamaan 3b.  Urutannya sebagai berikut :  persamaan   8x1x2x3=8 diletakkan pada posisi paling pertama dikarenakan koefisien a11  memiliki nilai paling besar. Kemudian posisi nomer dua adalah persamaan  x1−7x22x3=−4 dikarenakan koefisien a22 memiliki nilai paling besar dari ketiga persamaan. Dan yang terakhir adalah  persamaan  x12x29x3=12 .
Langkah kedua, menyusun matriks koefisien, matriks variabel dan matriks hasil. matriks koefisien :

A=8 1 1
1 −7 2
−1 2 9 matriks variabel : x=x1 x2 x3 matriks hasil : h=8 −4 12
Langkah ketiga, menentukan titik awal variabel, misal diambil nilai awal dari x1, x2,   x3 = 0.  Kemudian melakukan iterasi dengan persamaan 3a hingga nilai  x1, x2, x3 tidak berubah. Contoh iterasi  pertama sbb : x1=8 8 −a12 a11 x2 a13 a11 x3 x1=8/8−00=1
x2=−4 −7
−a21 a22
x1
a23 a22
x3 x2=0.571−00=0.571
x3=12 9
−a31 a33
x1
a32 a33
x2 x3=1.333−00=1.333 setelah dilanjutkan hingga iterasi ke 8 maka hasil dari x1, x2, x3 semuanya adalah 1.

berikut adalah contoh programnya

#include <iostream>
#include <math.h>
#include <conio.h>
#include<stdio.h>
using namespace std;
//Iterasi Jacobi

int main(){
    int i, j;
    int n = 3;
    double A['n']['n']={{4.,-10.,7.},
                       {3., -8., 3.},
                       {3., 2., -7.}};
    double b['n']={30., -8., 15.};
    double xi['n']={0., 0., 0.};
    double itmax = 10;
    double iter = 0;
    double xf['n'], sum;
    
    cout<<"Program Persamaan Metode Jacobi\n";
    
    cout<<"Matriks A : \n";
    for (i=0; i<n; i++){
        for (j=0; j<n; j++){
            cout<<A[i][j]<<"\t";
            }
    cout<< "Vektor b : \n";
    
    for (i=0; i<n; i++){
        cout<< b[i]<<"\t";
        }
        
    cout<<"Tebakan awal x(k=0): \n";
    for(i=0; i<n; i++){
             cout<<xi[i]<<" ";
             }
    cout<<endl;
    
    cout<<"Nilai barisan Solusi x(k) : \n"<<endl;
    do{
       for (i=0; i<n; i++){
           sum = 0.;
           for(j=0; j<n; j++){
                    if (j != i){
                          sum = sum - A[i][j]*xi[j];
                          }
                    }
                    xf[i] = (b[i] + sum)/A[i][i];
                    }
                    
       for (i=0; i<n; i++){
           xi[i] = xf[i]; //tukAR X(K) DENGAN X(K+1)
           cout<<(" ",xf[i])<<endl;
           }
           
       cout<<endl;
       iter++;
       }
    while(itmax>iter);
    getch();
    return 0;
}
}
               

jangan lupa commend yah untuk kelanjutan posting selanjutnya
terima kasih 


www.ayeey.com www.resepkuekeringku.com www.desainrumahnya.com www.yayasanbabysitterku.com www.luvne.com www.cicicookies.com www.tipscantiknya.com www.mbepp.com www.kumpulanrumusnya.com www.trikcantik.net

0 comments:

Post a Comment