Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Mata Kuliah : Kalkulus
Prodi : Teknik Informatika
Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
1. Selesaikan sistem persamaan linier berikut menggunakan eliminasi Gauss!
\[−4x+4y=−1\] \[−2x+2y−3z=−3\] \[3x+1y−3z=−3\]
Penyelesaian
gauss_jordan <- function (a){
m <- nrow (a)
n <- ncol (a)
piv <- 1
# cek elemen diagonal utama apakah bernilai nol
for(row_curr in 1:m){
if(piv <= n){
i <- row_curr
while(a[i, piv] == 0 && i < m){
i <- i + 1
if(i > m){
i <- row_curr
piv <- piv + 1
if(piv > n)
return (a)
}
}
# jika diagonal utama bernilai nol,lakukan row swapping
if(i != row_curr)
a <- swap_row(a, i, row_curr)
# proses pembentukan matriks reduced row echelon form
piv_val <- a[row_curr , piv]
a <- scale_row (a, row_curr , 1 / piv_val)
for(j in 1: m){
if(j != row_curr){
k <- a[j, piv]/a[row_curr, piv]
a <- replace_row (a, row_curr, j, -k)
}
}
piv <- piv + 1
}
}
return (a)
}
(m <- matrix (c(-4,4,-1,-4,2,-3,
-3,3,1,3,-3,-3), nrow=3))
## [,1] [,2] [,3] [,4]
## [1,] -4 -4 -3 3
## [2,] 4 2 3 -3
## [3,] -1 -3 1 -3
1. Temukan akar persamaan dari persamaan non-linier f(x)=x3−2x+2 menggunakan metode terbuka dengan x0=0 dan x0=1/2!
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))
}
\(f(x)\) = \(x\)3 - 2\(x\) + 2
\(a)\) \(x\)0 = 0
root_secant(function(x){x^3-2*x+2}, x=0)
## $`function`
## function(x){x^3-2*x+2}
## <bytecode: 0x00000000164f8b98>
##
## $root
## [1] -1.769292
##
## $iter
## [1] 26
\(b)\) \(x\)0 = 1/2
root_secant(function(x){x^3-2*x+2}, x=1/2)
## $`function`
## function(x){x^3-2*x+2}
## <bytecode: 0x000000001409a048>
##
## $root
## [1] -1.769292
##
## $iter
## [1] 16
2. Apakah kelebihan dari metode tertutup (contoh: metode biseksi) dibanding metode terbuka (contoh: Newton-Raphson)? (catatan: pembaca dapat pula mencari dari referensi lainnya)
Salah satu contoh metode tertutup adalah metode biseksi yang memiliki kelebihan dibanding metode lainnya karena merupakan metode yang paling mudah dan paling sederhana. Selain itu, metode Biseksi selalu berhasil menemukan akar (solusi) yang dicari, atau dengan kata lain selalu konvergen.
Perlu diperhatikan bahwa, metode Biseksi adalah metode pencarian akar yang memerlukan interval yang mencapit akar sebagai masukan/input.Sementara,metode lainnya seperti Newton-Raphson, tidak memerlukan interval yang mencapit akar, bahkan tidak memerlukan interval sebagai masukan/inputnya, melainkan hanya sebuah titik.
\(Kesimpulannya\) \(kelebihan\) \(dari\) \(metode\) \(tertutup\) \(adalah\) \(prosesnya\) \(selalu\) \(konvergen\) \(dibanding\) \(metode\) \(terbuka\) \(yang\) \(prosesnya\) \(tidak\) \(selalu\) \(konvergen\).
3. Temukan akar persamaan dari persamaan f(x)=sin(x)/x dengan rentang pencarian x=0,5 dan x=1 !
\(f(x)\) = \(sin (x)\)/\(x\)
\(a)\) \(x\) = 0,5
root_secant(function(x)
{(sin(x)/x)},
x=0.5)
## $`function`
## function(x)
## {(sin(x)/x)}
## <bytecode: 0x0000000015820a80>
##
## $root
## [1] 6.283185
##
## $iter
## [1] 7
\(b)\) \(x\) = 1
root_secant(function(x)
{(sin(x)/x)},
x=1)
## $`function`
## function(x)
## {(sin(x)/x)}
## <bytecode: 0x0000000015c81fa8>
##
## $root
## [1] 3.141593
##
## $iter
## [1] 8
1. Diberikan data titik (3,5), (0,-2), dan (4,1). Tentukan persamaan polinomial untuk melakukan interpolasi pada ketiga titik tersebut!
Penyelesaian
poly_inter <- function(x, y){
if(length(x) != length(y))
stop("Lenght of x and y vectors must be the same")
n <- length(x)-1
vandermonde <- rep(1, length(x))
for(i in 1:n){
xi <- x^i
vandermonde <- cbind(vandermonde, xi)
}
beta <- solve(vandermonde, y)
names(beta) <- NULL
return(beta)
}
x <- c(3, 0, 4)
y <- c(5, -2, 1)
Koefisien persamaan polinomial dihitung menggunakan fungsi poly_inter()
(coeff <- poly_inter(x, y))
## [1] -2.000000 7.083333 -1.583333
Berdasarkan hasil perhitungan, diperoleh nilai β. Nilai tersebut selanjutnya digunakan untuk membentuk persamaan polinomial. Berikut merupakan persamaan polinomial yang terbentuk:
\[f(x)= -2x^2 + 7x - 1\]
Fungsi horner_poly() selanjutnya digunakan untuk mengevaluasi polinomial tersebut. Berikut adalah hasil substitusi x pada persamaan tersebut:
horner_poly <- function(x, coeff){
n <- length(x)
y <- rep(0, n)
for(i in length(coeff):1){
y <- coeff[i] + x * y
}
return(y)
}
horner_poly(0, coeff)
## [1] -2
1. Hitung integral fungsi \(f(x)\)=\(sin\)2(\(x\)) pada domain \(x∈[0,π]\) !
Bentuk penyelesaiannya bisa dengan menggunakan metode Trapezoidal, berikut adalah sintaks yang digunakan :
trapezoid <- function(ftn, a, b, n = 100) {
h <- (b-a)/n
x.vec <- seq(a, b, by = h)
f.vec <- sapply(x.vec, ftn) # ftn(x.vec)
Trap <- h*(f.vec[1]/2 + sum(f.vec[2:n]) + f.vec[n+1]/2)
return(Trap)
}
mendefinisikan fungsi \(f(x)\)
f <- function(x){
sin(x)^2
}
menghitung soal Integral menggunakan Trapezoid dengan permisalan n=6
trapezoid(f,0,pi,n = 6)
## [1] 1.570796
Referensi
https://bookdown.org/moh_rosidi2610/Metode_Numerik/linearaljabar.html#latihan