Dosen Pengampu : Prof. Dr.Suhartono, M.Kom

Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang

Fakultas : Sains dan Teknologi

Jurusan : Teknik Informatika

Kelas : (C) Kalkulus

NIM : 230605110080

library(mosaicCalc)
## Loading required package: mosaic
## Registered S3 method overwritten by 'mosaic':
##   method                           from   
##   fortify.SpatialPolygonsDataFrame ggplot2
## 
## The 'mosaic' package masks several functions from core packages in order to add 
## additional features.  The original behavior of these functions should not be affected by this.
## 
## Attaching package: 'mosaic'
## The following objects are masked from 'package:dplyr':
## 
##     count, do, tally
## The following object is masked from 'package:Matrix':
## 
##     mean
## The following object is masked from 'package:ggplot2':
## 
##     stat
## The following objects are masked from 'package:stats':
## 
##     binom.test, cor, cor.test, cov, fivenum, IQR, median, prop.test,
##     quantile, sd, t.test, var
## The following objects are masked from 'package:base':
## 
##     max, mean, min, prod, range, sample, sum
## Loading required package: mosaicCore
## 
## Attaching package: 'mosaicCore'
## The following objects are masked from 'package:dplyr':
## 
##     count, tally
## The legacy packages maptools, rgdal, and rgeos, underpinning the sp package,
## which was just loaded, will retire in October 2023.
## Please refer to R-spatial evolution reports for details, especially
## https://r-spatial.org/r/2023/05/15/evolution4.html.
## It may be desirable to make the sf package available;
## package maintainers should consider adding sf to Suggests:.
## The sp package is now running under evolution status 2
##      (status 2 uses the sf package in place of rgdal)
## 
## Attaching package: 'mosaicCalc'
## The following object is masked from 'package:stats':
## 
##     D
library(ggplot2)
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select

Iterasi Jacobi adalah metode iteratif yang digunakan untuk menyelesaikan sistem persamaan linear. Metode ini sering digunakan dalam konteks sistem persamaan linear berukuran besar. Ide dasar dari metode ini adalah menghasilkan perkiraan iteratif untuk solusi sistem persamaan linear dengan melakukan iterasi pada matriks koefisien dan vektor solusi.

Misalkan kita memiliki sistem persamaan linear Ax=b, di mana A adalah matriks koefisien, x adalah vektor solusi, dan b adalah vektor konstan.

# Fungsi untuk iterasi Jacobi
jacobi_iteration <- function(A, b, iter) {
  n <- length(b)
  x <- numeric(n)  # Inisialisasi vektor solusi

  for (k in 1:iter) {
    x_new <- numeric(n)  # Inisialisasi vektor solusi pada iterasi baru
    for (i in 1:n) {
      x_new[i] <- (b[i] - sum(A[i, -i] * x[-i])) / A[i, i]
    }
    x <- x_new  # Update vektor solusi
  }

  return(x)
}

# Contoh penggunaan
A <- matrix(c(4, -1, 0, -1, 4, -1, 0, -1, 4), nrow = 3, byrow = TRUE)
b <- c(15, 10, 10)
iter <- 20

solusi_jacobi <- jacobi_iteration(A, b, iter)
print("Solusi dengan metode iterasi Jacobi:")
## [1] "Solusi dengan metode iterasi Jacobi:"
print(solusi_jacobi)
## [1] 4.910714 4.642857 3.660714

Contoh lain iterasi Jacobi

# Fungsi untuk metode iterasi Jacobi
jacobi <- function(A, b, x0 = NULL, tol = 1e-6, max_iter = 100) {
  n <- length(b)
  
  # Inisialisasi solusi awal jika tidak disediakan
  if (is.null(x0)) {
    x0 <- rep(0, n)
  }
  
  # Inisialisasi vektor solusi
  x <- x0
  
  # Inisialisasi variabel iterasi
  iter <- 0
  
  # Iterasi Jacobi
  while (iter < max_iter) {
    x_old <- x
    
    # Iterasi untuk setiap variabel
    for (i in 1:n) {
      sigma <- sum(A[i, -i] * x_old[-i])
      x[i] <- (b[i] - sigma) / A[i, i]
    }
    
    # Periksa kriteria konvergensi
    if (max(abs(x - x_old)) < tol) {
      break
    }
    
    iter <- iter + 1
  }
  
  # Output hasil
  if (iter == max_iter) {
    warning("Iterasi Jacobi tidak konvergen dalam jumlah maksimal iterasi.")
  } else {
    cat("Iterasi Jacobi konvergen setelah", iter, "iterasi.\n")
  }
  
  return(x)
}

# Contoh penggunaan
A <- matrix(c(4, -1, 0, -1, 4, -1, 0, -1, 4), nrow = 3, byrow = TRUE)
b <- c(15, 10, 10)

solusi <- jacobi(A, b)
## Iterasi Jacobi konvergen setelah 15 iterasi.
print("Solusi:")
## [1] "Solusi:"
print(solusi)
## [1] 4.910714 4.642857 3.660714

Pada contoh di atas, mendefinisikan fungsi jacobi yang menerima matriks koefisien A, vektor konstanta b, dan solusi awal X0. Fungsi ini kemudian melakukan iterasi Jacobi hingga kriteria konvergensi terpenuhi atau jumlah iterasi mencapai batas maksimal. Pada contoh penggunaan, mencoba menyelesaikan sistem persamaan linear dengan matriks koefisien A dan vektor konstanta b.