Nama : Diki Faisal Huda
Nim : 220605110058
Kelas : C
Mata Kuliah : Kalkulus
Dosen Pengampuh : Prof.Dr.Suhartono,M.Kom
Jurusan : Teknik Informatika
Universitas : UIN Maulana Malik Ibrahim Malang
6.3 Fungsi dengan parameter nonlinier
Teknik aljabar linier dapat digunakan untuk mencari kombinasi linier terbaik dari suatu himpunan fungsi. Namun, seringkali, ada parameter dalam fungsi yang muncul secara nonlinier. Contohnya termasuk k dalam f(t)=Aexp(kt)+C dan P dalam Asin(2πPt)+C
. Menemukan parameter nonlinier ini tidak dapat dilakukan secara langsung menggunakan aljabar linier, meskipun metode aljabar linier memang membantu menyederhanakan situasi.
Untungnya, gagasan bahwa jarak antar fungsi dapat diukur berfungsi dengan baik ketika ada parameter nonlinear yang terlibat. Jadi kami akan terus menggunakan “jumlah sisa kuadrat” saat mengevaluasi seberapa dekat perkiraan fungsi dengan sekumpulan data.
6.4 Fungsi eksponensial
Sebagai ilustrasi, perhatikan data “Income-Housing.csv” yang menunjukkan hubungan eksponensial antara fraksi keluarga dengan dua mobil dan pendapatan:
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
Families <- read.csv("http://www.mosaic-web.org/go/datasets/Income-Housing.csv")
gf_point(TwoVehicles ~ Income, data = Families)
“pembusukan” eksponensial terhadap hampir 100% keluarga yang memiliki
dua kendaraan. Bentuk matematis dari fungsi eksponensial ini adalah
Aexp(kY)+C. A dan C adalah parameter linier yang tidak diketahui. k
adalah parameter nonlinear yang tidak diketahui – ini akan menjadi
negatif untuk peluruhan eksponensial. Aljabar linier memungkinkan kita
menemukan parameter linier terbaik A dan C agar sesuai dengan data. Tapi
bagaimana menemukan k ?
Misalkan Anda menebak k . Tebakan tidak harus benar-benar acak; Anda dapat melihat dari datanya sendiri bahwa “waktu paruh” adalah sekitar $25.000. Parameter k sesuai dengan waktu paruh, ln(0,5)/waktu paruh, jadi di sini tebakan yang baik untuk k adalah ln(0,5)/25000, yaitu
kguess <- log(0.5) / 25000
kguess
## [1] -2.772589e-05
Dimulai dengan tebakan tersebut, Anda dapat menemukan nilai terbaik dari parameter linier A dan C melalui teknik aljabar linier
project( TwoVehicles ~ 1 + exp(Income*kguess), data = Families)
## (Intercept) exp(Income * kguess)
## 110.4263 -101.5666
Pastikan bahwa Anda benar-benar memahami arti dari pernyataan di atas. Ini TIDAK berarti bahwa TwoVehicles adalah jumlah 1+exp−Income×kguess. Sebaliknya, ini berarti bahwa Anda sedang mencari kombinasi linear dari dua fungsi 1 dan exp−Income×kguess yang sedekat mungkin cocok dengan TwoVehicles. Nilai yang dikembalikan oleh memberi tahu Anda apa kombinasi ini nantinya: berapa banyak dari 1 dan berapa banyak exp−Income×kguess
untuk menambahkan bersama untuk mendekati TwoVehicles.
Anda dapat membuat fungsi yang merupakan kombinasi linier terbaik dengan menambahkan kedua fungsi secara eksplisit:
f <- makeFun( 110.43 - 101.57*exp(Income * k) ~ Income, k = kguess)
gf_point(TwoVehicles ~ Income, data = Families) %>%
slice_plot(f(Income) ~ Income)
titik data. Tapi Anda juga bisa melihat nilai numerik dari fungsi untuk
setiap pendapatan:
f(Income = 10000)
## [1] 33.45433
f(Income = 50000)
## [1] 85.0375
Sangat informatif untuk melihat nilai fungsi untuk tingkat Pendapatan tertentu dalam data yang digunakan untuk penyesuaian, yaitu, kerangka data Keluarga:
Results <- Families %>%
dplyr::select(Income, TwoVehicles) %>%
mutate(model_val = f(Income = Income),
resids = TwoVehicles - model_val)
Results
## Income TwoVehicles model_val resids
## 1 3914 17.3 19.30528 -2.0052822
## 2 10817 34.3 35.17839 -0.8783904
## 3 21097 56.4 53.84097 2.5590313
## 4 34548 75.3 71.45680 3.8432013
## 5 51941 86.6 86.36790 0.2320981
## 6 72079 92.9 96.66273 -3.7627306
Residunya adalah selisih antara nilai model ini dan nilai sebenarnya dari TwoVehicles dalam kumpulan data.
Kolom resi memberikan residual untuk setiap baris. Tapi Anda juga bisa menganggap kolom resi sebagai vektor. Ingatlah bahwa panjang kuadrat vektor adalah jumlah residu kuadrat
sum(Results$resids^2)
## [1] 40.32358
DAFTAR PUSTAKA: https://dtkaplan.github.io/RforCalculus/index.html?fbclid=IwAR1d_WcAeawvUaBnLKlkRoO2sV4b-6nRX0eNR3DT457DKN7NJV8NV0giSLo