Lompat ke isi

Metode Jacobi: Perbedaan antara revisi

Ensiklopedia Pengetahuan Universitas Islam Sultan Agung
Maintenance script (bicara | kontrib)
Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 28481376; atribusi sumber disertakan.
 
Maintenance script (bicara | kontrib)
Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi
 
Baris 40: Baris 40:


== Algoritma Metode Iterasi Jacobi ==
== Algoritma Metode Iterasi Jacobi ==
INPUT:
INPUT:
: <math>n</math>, A, b, dan hampiran awal '''Y'''=(y<sub>1</sub> y<sub>2</sub> y<sub>3</sub>...y<sub>n</sub>)<sup>T</sup>, batas toleransi T, dan maksimum iterasi N
: <math>n</math>, A, b, dan hampiran awal '''Y'''=(y<sub>1</sub> y<sub>2</sub> y<sub>3</sub>...y<sub>n</sub>)<sup>T</sup>, batas toleransi T, dan maksimum iterasi N
Baris 59: Baris 58:


  '''Input:''' , (diagonal dominant) matrix <math>A</math>, right-hand side vector <math>b</math>, convergence criterion
  '''Input:''' , (diagonal dominant) matrix <math>A</math>, right-hand side vector <math>b</math>, convergence criterion
  '''Output:'''
  '''Output:'''  
  '''Comments:'''
  '''Comments:'''  
 


  '''while''' convergence not reached '''do'''
  '''while''' convergence not reached '''do'''
Baris 77: Baris 75:


== Algoritma Metode Iterasi Jacobi dalam bentuk ''software'' Matlab ==
== Algoritma Metode Iterasi Jacobi dalam bentuk ''software'' Matlab ==
Penggunaan [[Algoritma|algoritme]] Metode Iterasi Jacobi dalam bentuk matlab. [[MATLAB|Matlab]] merupakan program pengolahan data numerik.
Penggunaan [[Algoritma|algoritme]] Metode Iterasi Jacobi dalam bentuk matlab. [[MATLAB|Matlab]] merupakan program pengolahan data numerik.


Baris 238: Baris 235:


=== Contoh lain ===
=== Contoh lain ===
Contohnya kita diberi sistem linier berikut:
Contohnya kita diberi sistem linier berikut:


Baris 263: Baris 259:
Dengan menggunakan perkiraan yang diperoleh, prosedur iteratif diulangi sampai akurasi yang diinginkan tercapai. Berikut ini adalah solusi yang diperkirakan setelah lima iterasi.
Dengan menggunakan perkiraan yang diperoleh, prosedur iteratif diulangi sampai akurasi yang diinginkan tercapai. Berikut ini adalah solusi yang diperkirakan setelah lima iterasi.


 
{| class="wikitable" border="1"
|-
! <math>x_1</math>
! <math>x_2</math>
! <math>x_3</math>
! <math>x_4</math>
|-
| 0.6
| 2.27272
| -1.1
| 1.875
|-
| 1.04727
| 1.7159
| -0.80522
| 0.88522
|-
| 0.93263
| 2.05330
| -1.0493
| 1.13088
|-
| 1.01519
| 1.95369
| -0.9681
| 0.97384
|-
| 0.98899
| 2.0114
| -1.0102
| 1.02135
|}
Solusi yang tepat dari sistem ini adalah .
Solusi yang tepat dari sistem ini adalah .


Baris 269: Baris 296:
Prosedur numerik berikut hanya melakukan iterasi untuk menghasilkan vektor solusi.
Prosedur numerik berikut hanya melakukan iterasi untuk menghasilkan vektor solusi.


<syntaxhighlight lang="python">
def jacobi(A, b, x_init, epsilon=1e-10, max_iterations=500):
    D = np.diag(np.diag(A))
    LU = A - D
    x = x_init
    for i in range(max_iterations):
        D_inv = np.diag(1 / np.diag(D))
        x_new = np.dot(D_inv, b - np.dot(LU, x))
        if np.linalg.norm(x_new - x) < epsilon:
            return x_new
        x = x_new
    return x
# problem data
A = np.array([
    [5, 2, 1, 1],
    [2, 6, 2, 1],
    [1, 2, 7, 1],
    [1, 1, 2, 8]
])
b = np.array([29, 31, 26, 19])
# you can choose any starting vector
x_init = np.zeros(len(b))
x = jacobi(A, b, x_init)
print("x:", x)
print("computed b:", np.dot(A, x))
print("real b:", b)
</syntaxhighlight>


Menghasilkan keluaran:
Menghasilkan keluaran:
Baris 279: Baris 336:


== Lihat pula ==
== Lihat pula ==
*[[Metode Gauss–Seidel]]
*[[Metode Gauss–Seidel]]
*[[Relaksasi berlebihan berturut-turut]]
*[[Relaksasi berlebihan berturut-turut]]
Baris 285: Baris 341:
*[[Propagasi Keyakinan#Propagasi keyakinan Gaussian .28GaBP.29|Propagasi Keyakinan Gaussian]]
*[[Propagasi Keyakinan#Propagasi keyakinan Gaussian .28GaBP.29|Propagasi Keyakinan Gaussian]]
* [[Pemisahan matriks]]
* [[Pemisahan matriks]]
== Referensi ==
: Sahid. 2005. ''Pengantar Komputasi Numerik dengan MATLAB''. ANDI, Yogyakarta


== Pranala luar ==
== Pranala luar ==
 
*  
*
* [http://www.math-linux.com/spip.php?article49 Jacobi Method from www.math-linux.com]
* [http://www.math-linux.com/spip.php?article49 Jacobi Method from www.math-linux.com]


== Sumber dan atribusi ==
== Sumber dan atribusi ==


Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Metode+Jacobi&oldid=28481376 Wikipedia bahasa Indonesia], revisi 28481376 (2025-11-14T07:29:36Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Metode+Jacobi&oldid=28481376 Wikipedia bahasa Indonesia], revisi 28481376 (2025-11-14T07:29:36Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.
<!-- WIKI_UNISSULA_PRESENTATION_V4 -->

Revisi terkini sejak 23 Agustus 2026 04.20

Metode Iterasi Jacobi merupakan salah satu bidang analisis numerik yang digunakan untuk menyelesaikan permasalahan persamaan linear dan sering dijumpai dalam berbagai disiplin ilmu. Metode Iterasi Jacobi merupakan salah satu metode tak langsung, yaitu bermula dari suatu hampiran penyelesaian awal dan kemudian berusaha memperbaiki hampiran dalam tak berhingga tetapi langkah konvergen. Metode Iterasi Jacobi ini digunakan untuk menyelesaikan persamaan linear berukuran besar dan proporsi koefisien nolnya besar.

Metode ini ditemukan oleh matematikawan yang berasal dari Jerman, Carl Gustav Jacob Jacobi. Penemuan ini diperkirakan pada tahun 1800-an.

Kalau kita mengubah dalam Sistem Persamaan Linear, maka dapat ditulis sebagai berikut

Ax=b.

Kemudian, diketahui bahwa A=D+(L+U), di mana D merupakan matriks diagonal, L merupakan matriks segitiga bawah, dan U merupakan matriks segitiga atas.

Kemudian, persamaan di atas dapat diubah menjadi:

Dx+(L+U)x=b.

Kemudian,

x=D1[b(L+U)x],

Jika ditulis dalam aturan iteratif, maka metode Jacobi dapat ditulis sebagai:

x(k+1)=D1[b(L+U)x(k)],

di mana k merupakan banyaknya iterasi. Jika x(k) menyatakan hampiran ke- k penyelesaian SPL, maka x(0) adalah hampiran awal.

xi(k)=1aii(bijiaijxj(k1)),i=1,2,,n.

Deskripsi

Jadi

A𝐱=𝐛

menjadi sistem kuadrat dari nilai dalam persamaan linier yaitu:

A=[a11a12a1na21a22a2nan1an2ann],𝐱=[x1x2xn],𝐛=[b1b2bn].

Setelah itu nilai dapat diuraikan menjadi komponen diagonal , bagian segitiga bawah dan bagian segitiga atas :

A=D+L+UdarimanaD=[a11000a22000ann] and L+U=[0a12a1na210a2nan1an20].

Algoritma Metode Iterasi Jacobi

INPUT:

n, A, b, dan hampiran awal Y=(y1 y2 y3...yn)T, batas toleransi T, dan maksimum iterasi N

OUTPUT:

X=(x1 x2 x3...xn)T, vektor galat hampiran g, dan H yang merupakan matriks dengan baris vektor-vektor hampiran selama iterasi.
  1. Set penghitung iterasi k=1
  2. WHILE k<=N DO
    1. FOR i=1,2,3,...,n, Hitung xi=1aii(bijiaijyj)
    2. SET X=(x1x2x3...xn)T
    3. IF ||X_Y||<T THEN STOP
    4. Tambah penghitung iterasi, k=k+1
    5. FOR i=1,2,3,...,n, Set yi=xi
    6. SET Y=(y1 y2 y3...yn)T
  3. Tulis pesan "Metode gagal setelah N iterasi"
  4. STOP
Input: , (diagonal dominant) matrix A, right-hand side vector b, convergence criterion
Output: 
Comments: 
while convergence not reached do
    for i := 1 step until n do
        for j := 1 step until n do
            if j ≠ i then
            end
        end
         </math>}}
    end
end

Algoritma Metode Iterasi Jacobi dalam bentuk software Matlab

Penggunaan algoritme Metode Iterasi Jacobi dalam bentuk matlab. Matlab merupakan program pengolahan data numerik.

INPUT:

n, A, b, dan hampiran awal Y=(y1 y2 y3...yn)T, batas toleransi T, dan maksimum iterasi N

OUTPUT:

X=(x1 x2 x3...xn)T, vektor galat hampiran g, dan H yang merupakan matriks dengan baris vektor-vektor hampiran selama iterasi.
H=X0'
n=length (b)
X=X0
for k:=1 until N
for i:=i until n,
S = b (i) - A (i,[1:i-1,i+1:n]) * X0 ([1:i-1,i+1:n])
X(i) = S / A (i,i)
end
g = abs (X-X0)
err = norm (g)
relerr = err / (norm (X)+eps)
X0 = X
H = [H;X0']
if (err<T)|(relerr<T), break, end
end

Kekonvergenan

MEtode ini akan bernilai konvergen jika matriksnya merupakan matriks dominan secara diagonal, yaitu apabila unsur diagonal pada kolom tersebut lebih besar dari penjumlahan unsur-unsur lainnya pada kolom tersebut.

|aii|>ij|aij|.

Contoh

Sistem linear dari bentuk Ax=b dengan perkiraan awal x(0) diberikan oleh

A=[2157], b=[1113]danx(0)=[11].

Kami menggunakan persamaan x(k+1)=D1(b(L+U)x(k)), dijelaskan di atas, untuk memperkirakan x. Pertama, kami menulis ulang persamaan dalam bentuk yang lebih mudah D1(b(L+U)x(k))=Tx(k)+C, dimana T=D1(L+U) dan C=D1b. Dari nilai-nilai yang diketahui

D1=[1/2001/7], L=[0050]danU=[0100].

we determine T=D1(L+U) as

T=[1/2001/7]{[0050]+[0100]}=[01/25/70].

Further, C is found as

C=[1/2001/7][1113]=[11/213/7].

Dengan T dan C dihitung, kami perkirakan x sebagai x(1)=Tx(0)+C:

x(1)=[01/25/70][11]+[11/213/7]=[5.08/7][51.143].

Hasil iterasi berikutnya

x(2)=[01/25/70][5.08/7]+[11/213/7]=[69/1412/7][4.9291.714].

Proses ini diulangi sampai konvergensi (yaitu, sampai Ax(n)b kecil). Solusi setelah 25 iterasi adalah

x=[7.1113.222].

Contoh lain

Contohnya kita diberi sistem linier berikut:

10x1x2+2x3=6,x1+11x2x3+3x4=25,2x1x2+10x3x4=11,3x2x3+8x4=15.

Bila kita memilih sebagai pendekatan awal, maka solusi perkiraan pertama diberikan oleh

x1=(6+0(20))/10=0.6,x2=(25+0+0(30))/11=25/11=2.2727,x3=(11(20)+0+0)/10=1.1,x4=(15(30)+0)/8=1.875.

Dengan menggunakan perkiraan yang diperoleh, prosedur iteratif diulangi sampai akurasi yang diinginkan tercapai. Berikut ini adalah solusi yang diperkirakan setelah lima iterasi.

x1 x2 x3 x4
0.6 2.27272 -1.1 1.875
1.04727 1.7159 -0.80522 0.88522
0.93263 2.05330 -1.0493 1.13088
1.01519 1.95369 -0.9681 0.97384
0.98899 2.0114 -1.0102 1.02135

Solusi yang tepat dari sistem ini adalah .

Contoh menggunakan Python dan NumPy

Prosedur numerik berikut hanya melakukan iterasi untuk menghasilkan vektor solusi.

<syntaxhighlight lang="python"> def jacobi(A, b, x_init, epsilon=1e-10, max_iterations=500):

   D = np.diag(np.diag(A))
   LU = A - D
   x = x_init
   for i in range(max_iterations):
       D_inv = np.diag(1 / np.diag(D))
       x_new = np.dot(D_inv, b - np.dot(LU, x))
       if np.linalg.norm(x_new - x) < epsilon:
           return x_new
       x = x_new
   return x
  1. problem data

A = np.array([

   [5, 2, 1, 1],
   [2, 6, 2, 1],
   [1, 2, 7, 1],
   [1, 1, 2, 8]

]) b = np.array([29, 31, 26, 19])

  1. you can choose any starting vector

x_init = np.zeros(len(b)) x = jacobi(A, b, x_init)

print("x:", x) print("computed b:", np.dot(A, x)) print("real b:", b) </syntaxhighlight>

Menghasilkan keluaran:

x: [3.99275362 2.95410628 2.16183575 0.96618357]
computed b: [29. 31. 26. 19.]
real b: [29 31 26 19]

Lihat pula

Pranala luar

Sumber dan atribusi

Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 28481376 (2025-11-14T07:29:36Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.