Universitas : UIN Maulana Malik Ibrahim Malang

Fakultas : Sains dan Teknologi

Jurusan : Teknik Informatika

Gambar 1.1: Akar persamaan non-linier

Kali ini kita akan mengerjakan soal akar persamaan non-linier serta diferensiasi dan integrasi numerik.

Soal!

  1. Temukan akar persamaan dari persamaan non-linier f(x)=x^3−2x+2 menggunakan metode terbuka dengan x0=0 dan x0=1/2!

  2. Temukan akar persamaan dari persamaan dengan rentang pencarian x=0,5 dan x=1!

  3. Hitung integral fungsi f(x)=sin^2(x) pada domain x∈[0,π]!

Jawaban

1. Temukan akar persamaan dari persamaan non-linier f(x)=x^3−2x+2 menggunakan metode terbuka dengan x0=0 dan x0=1/2!

Jawab:

Kita akan menggunakan salah satu metode yang ada di metode terbuka yaitu metode secant.

Berikut adalah sintaks fungsi tersebut:

root_secant <- function(f, x, tol=1e-7, N=100){
  iter <- 0
  
  xold <- x
  fxold <- f(x)
  x <- xold+10*tol
  
  while(abs(x-xold)>tol){
    iter <- iter+1
    if(iter>N)
      stop("No solutions found")
    
    fx <- f(x)
    xnew <- x - fx*((x-xold)/(fx-fxold))
    xold <- x
    fxold <- fx
    x <- xnew
  }
  
  root<-xnew
  return(list(`function`=f, root=root, iter=iter))
}
  1. jika x=0
root_secant(function(x){(x^3)-(2*x)+2}, x=0)
## $`function`
## function(x){(x^3)-(2*x)+2}
## <bytecode: 0x0000000015846788>
## 
## $root
## [1] -1.769292
## 
## $iter
## [1] 26

Berdasarkan hasil iterasi diperoleh nilai x = -1.769292 dengan jumlah iterasi yang diperlukan sebanyak 26 kali.

  1. jika x=1/2
root_secant(function(x){(x^3)-(2*x)+2}, x=1/2)
## $`function`
## function(x){(x^3)-(2*x)+2}
## <bytecode: 0x0000000012c36050>
## 
## $root
## [1] -1.769292
## 
## $iter
## [1] 16

Berdasarkan hasil iterasi diperoleh nilai x = -1.769292 dengan jumlah iterasi yang diperlukan sebanyak 16 kali.

2. Temukan akar persamaan dari persamaan dengan rentang pencarian x=0,5 dan x=1!

Jawab:

Kita menggunakan metode secant.

  1. jika x=1/2
root_secant(function(x){sin(x)/x}, x=0.5)
## $`function`
## function(x){sin(x)/x}
## <bytecode: 0x0000000014cbe008>
## 
## $root
## [1] 6.283185
## 
## $iter
## [1] 7

Berdasarkan hasil iterasi diperoleh nilai x = 6.283185 dengan jumlah iterasi yang diperlukan sebanyak 7 kali.

  1. jika x=1
root_secant(function(x){sin(x)/x}, x=1)
## $`function`
## function(x){sin(x)/x}
## <bytecode: 0x0000000015086ef8>
## 
## $root
## [1] 3.141593
## 
## $iter
## [1] 8

Berdasarkan hasil iterasi diperoleh nilai x = 3.141593 dengan jumlah iterasi yang diperlukan sebanyak 8 kali.

3. Hitung integral fungsi f(x)=sin^2(x) pada domain x∈[0,π]!

Jawab:

Kita akan menggunakan metode trapezodial.

Sintaks fungsi tersebut adalah sebagai berikut:

trap <- function(f, a, b, m=100){
  x <- seq(a, b, length.out = m+1)
  y <- f(x)
  
  p_area <- sum((y[2:(m+1)] + y[1:m])) 
  p_area <- p_area * abs(b-a)/(2*m)
  return(p_area)
}

pada domain x∈[0,π], kita misalkan m=2

trap(function(x){sin(x)^2}, a=0, b=pi, m=2)
## [1] 1.570796

Jadi, hasilnya adalah 1.570796

Daftar Pustaka

  1. https://bookdown.org/moh_rosidi2610/Metode_Numerik/rootfinding.html#latihan-1

  2. https://bookdown.org/moh_rosidi2610/Metode_Numerik/diffinteg.html#latihan-3

  3. https://bookdown.org/moh_rosidi2610/Metode_Numerik/diffinteg.html#trapezoida