OPERASI MATEMATIK menggunakan R
3+5*3
## [1] 18
(5+7)*6
## [1] 72
#ADDITION
4+2
## [1] 6
#SUBSTRACTION
4-3
## [1] 1
#MULTIPLICATION
6*3
## [1] 18
#DIVISION
18/3
## [1] 6
#EKSPONETIATION
6^4
## [1] 1296
#MODULUS
2%%3
## [1] 2
#INTEGER
5%/%3
## [1] 1
Pada R tanda # berfungsi menambahkan keterangan untuk menjelaskan sebuah sintaks pada R
Logaritma dan eksponensial
log10(6) # logaritma basis 10 untuk 6
## [1] 0.7781513
exp(4) # eksponensial 4
## [1] 54.59815
abs(-2) # nilai absolut -2
## [1] 2
sqrt(4) # akar kuadrat 4
## [1] 2
x <- 34
y <- 35
# Operator >
x > y
## [1] FALSE
# Operator <
x < y
## [1] TRUE
# operator ==
x == y
## [1] FALSE
# Operator >=
x >= y
## [1] FALSE
# Operator <=
x <= y
## [1] TRUE
# Operator !=
x != y
## [1] TRUE
v <- c(TRUE,TRUE, FALSE)
t <- c(FALSE,FALSE,FALSE)
# Operator !
print(!v)
## [1] FALSE FALSE TRUE
# operator &
print(v&t)
## [1] FALSE FALSE FALSE
# Operator |
print(v|t)
## [1] TRUE TRUE FALSE
operator & dan | akan mengecek logika tiap elemen pada vektor secara berpesangan (sesuai urutan dari kiri ke kanan). Operator %% dan || hanya mengecek dari kiri ke kanan pada observasi pertama. Misal saat menggunakan && jika observasi pertama TRUE maka observasi pertama pada vektor lainnya akan dicek, namun jika observasi pertama FALSE maka proses akan segera dihentikan dan menghasilkan FALSE.
# Harga sebuah lemon adalah 500 rupiah
lemon <- 500
# Atau
500 -> lemon
# dapat juga menggunakan tanda "="
lemon = 500
R memungkinkan penggunaan <-,->, atau = sebagai perintah pengisi nilai variabel R bersifat case-sensitive. Maksudnya adalah variabel Lemon tidak sama dengan lemon (Besar kecil huruf berpengaruh)
# Menggunakan fungsi print()
print(lemon)
## [1] 500
# Atau
lemon
## [1] 500
R akan menyimpan variabel lemon sebagai objek pada memori. Sehingga kita dapat melakukan operasi terhadap objek tersebut seperti mengalikannya atau menjumlahkannya dengan bilangan lain
# Operasi perkalian terhadap objek lemon
5*lemon
## [1] 2500
Kita dapat juga mengubah nilai dari objek lemon dengan cara menginput nilai baru terhadap objek yang sama. R secara otomatis akan menggatikan nilai sebelumnya
lemon <- 1000
# Print lemon
print(lemon)
## [1] 1000
ls()
## [1] "lemon" "t" "v" "x" "y"
Kumpulan objek yang telah tersimpan dalam memori disebut sebagai workspace
Untuk menghapus objek pada memori kita dapat menggunakan fungsi rm(). Pada sintaks berikut penulis hendak menghapus objek lemon.
Operasi Vektor
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
##
## Attaching package: 'mosaicCalc'
## The following object is masked from 'package:stats':
##
## D
A <- matrix(1:9,3)
B <- matrix(10:8,3)
C <- matrix(1:6,3)
# penjumlahan dengan skalar
A+1
## [,1] [,2] [,3]
## [1,] 2 5 8
## [2,] 3 6 9
## [3,] 4 7 10
A <- matrix(1:9,3)
B <- matrix(10:18,3)
C <- matrix(1:6,3)
# penjumlahan dengan skalar
A+1
## [,1] [,2] [,3]
## [1,] 2 5 8
## [2,] 3 6 9
## [3,] 4 7 10
# penjumlahan A+B
A+B
## [,1] [,2] [,3]
## [1,] 11 17 23
## [2,] 13 19 25
## [3,] 15 21 27
# Perkalian matriks
A%*%B
## [,1] [,2] [,3]
## [1,] 138 174 210
## [2,] 171 216 261
## [3,] 204 258 312
scale_row <- function(m, row, k){
m[row, ] <- m[row, ]*k
return(m)
}
# membuat matriks A
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)
}
tridiagmatrix <- function (L, D, U, b){
n <- length (D)
L <- c(NA , L)
## forward sweep
U[1] <- U[1] / D[1]
b[1] <- b[1] / D[1]
for(i in 2:(n - 1)){
U[i] <- U[i] / (D[i] - L[i] * U[i - 1])
b[i] <- (b[i] - L[i] * b[i - 1]) /
(D[i] - L[i] * U[i - 1])
}
b[n] <- (b[n] - L[n] * b[n - 1])/(D[n] - L[n] * U[n - 1])
## backward sweep
x <- rep.int (0, n)
x[n] <- b[n]
for(i in (n - 1) :1)
x[i] <- b[i] - U[i] * x[i + 1]
return (x)
}