Email : garryjuliusperman@gmail.com
rpubs :
https://rpubs.com/Garr
Jurusan : Statistika
Bisnis
Address : ARA Center, Matana University Tower
Jl. CBD Barat Kav, RT.1, Curug Sangereng,
Kelapa Dua, Tangerang, Banten 15810.
Aproksimasi
\[\int_{0}^{1}{e^(-x^2)dx}\] dengan menggunakan kaidah Simpson (1/3) dan jumlah partisi selang n = 10.
f <- function(x) {
return(exp(-x^2))}
simpson <- function(f, a, b, m){
h <- (b-a)/m # jarak selang
x <- a # awal selang
I <- f(a)+f(b)
sigma <- 0
if(m%%2 != 0){
stop("Jumlah panel harus genap")
}else{
for(i in 1:(m-1)){
x <- x+h
if(i%%2==0){
sigma <- sigma + 2*f(x)
}else{
sigma <- sigma + 4*f(x)
}
}
}
return((h/3)*(I+sigma))
}
simpson(f, a=0, b=1, m=10)## [1] 0.7468249
Misalkan D(2h) dan D(4h) adalah hampiran dengan lebar selang 2h dan 4h menggunakan rumus hampiran selisih-pusat orde O(h4). Tentukan hampiran \[f'(1,2)\] jika diketahui fungsi \[f(x)=e^x\] dalam selang interval dengan batas bawah 0,8 dan batas atas 1,6 serta h = 0,1 mengunakan Ektrapolasi Richardson. \[f(x)=e^xf'(x)=\frac{-f_2+8f_1-8f_{-1}+f_{-2}}{12h}H\]
f = function(x) {
return(exp(x))}
x = c(0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6)
f1=f(x)
f1## [1] 2.225541 2.459603 2.718282 3.004166 3.320117 3.669297 4.055200 4.481689
## [9] 4.953032
titik x=1,2; titik: \[\begin{align} x_1&=1.3\\ x_2&=1.4\\ x_{-1}&=1.1\\ x_{-2}&=1.0\\ \end{align}\]
h = 0.1
f_1 = f(1.3)
f_2 = f(1.4)
f_min1 = f(1.1)
f_min2 = f(1.0)
D2h = (((-f_2)+(8*f_1)-(8*f_min1)+(f_min2))/(12*2*h))
D2h## [1] 1.660053
D4h = (((-f_2)+(8*f_1)-(8*f_min1)+(f_min2))/(12*4*h))
D4h## [1] 0.8300265
dengan rumus richardson ekstraplorasi
f12 = D2h + (((D2h)-(D4h))/15)
f12## [1] 1.715388
Diberikan tabel yang berisi titik-titik sebuah fungsi f(x) sebagai berikut :
x <- c(1.000,1.100,1.198,1.199,1.200,1.201,1.202,1.300,1.400)
f_x<-c(0.54030,0.45360,0.6422,0.36329,0.36236,0.36143,0.36049,0.26750,0.16997)Tentukan nilai \[f'(1,2)\] dan\[f''(1,2)\] untuk h=0,1 dan h=0,001 dengan rumus hampiran selisih-pusat orde O(h2).
library(DT)## Warning: package 'DT' was built under R version 4.1.3
dataf<-data.frame(x,f_x)
datatable(dataf)#turunan pertama
x0=1.2
x1=1.201
x_1=1.199
fx0=0.36236
fx1=0.36143
fx_1=0.36329
h1=0.1
h2=0.001
f0_1=(fx1-fx_1)/(2*h1)
print(f0_1, digits=5)## [1] -0.0093
f0_2=(fx1-fx_1)/(2*h2)
print(f0_2, digits=5)## [1] -0.93
#turunan kedua
f01=(fx1-(2*fx0)+fx_1)/0.01
print(f01, digits=5)## [1] -5.5511e-15
f01=(fx1-(2*fx0)+fx_1)/h2*
print(f01, digits=5)## [1] -5.5511e-15
Diketahui \[f(x)=x^2COS(x^2);1,5≤x≤2,5\]
dan h = 0,1. Aproksimasi
\[\int_{1,5}^{2,5}{f(x)dx}\]
dengan kaidah trapesium.
trapezoid <- function(ftn, a, b, n = 10) {
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)
}
f <- function(x){
(x^2)*cos(x^2)
}
trapezoid(f,1.5,2.5,n = 10)## [1] -0.4400977
Berdasarkan metode Euler’s tentukan tiga aproksimasi pertama, jika diketahui persamaan diferensial dan syarat awalnya sebagai berikut :
\[y'=y^2(1+2x);y(-1)=1;dx-0,5\]
f1 <- function(x,y){y^3*(1+2*x)/3}
euler <- function(f, x0, y0, h, n){
x <- x0
y <- y0
for(i in 1:n){
y0 <- y0 + h*f(x0, y0)
x0 <- x0 + h
x <- c(x,x0)
y <- c(y,y0)
}
return(data.frame(x=x, y=y))
}
euler_1= euler(f1, x0=-1, y0=1, h=0.5, n=2)
euler_1## x y
## 1 -1.0 1.0000000
## 2 -0.5 0.8333333
## 3 0.0 0.8333333