Dosen : Prof. Dr. Suhartono, S.Si., M.Kom_196805192003121001

Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang

Fakultas : Sains Dan Teknologi

Program Studi : Teknik Informatika

Kelas : C

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
## The legacy packages maptools, rgdal, and rgeos, underpinning the sp package,
## which was just loaded, will retire in October 2023.
## Please refer to R-spatial evolution reports for details, especially
## https://r-spatial.org/r/2023/05/15/evolution4.html.
## It may be desirable to make the sf package available;
## package maintainers should consider adding sf to Suggests:.
## The sp package is now running under evolution status 2
##      (status 2 uses the sf package in place of rgdal)
## 
## Attaching package: 'mosaicCalc'
## The following object is masked from 'package:stats':
## 
##     D

Turunan Selisih Hingga

Kapan pun Anda memiliki rumus yang dapat digunakan untuk membangun turunan simbolik, itulah yang harus Anda gunakan. Turunan selisih hingga berguna dalam situasi di mana Anda tidak memiliki rumus seperti itu. Perhitungannya sederhana namun memiliki kelemahan yang menunjukkan kelebihan dari evanescent- h mendekati.

Untuk suatu fungsi f ( x ) dan angka “kecil” yang bukan nol h , selisih hingga mendekati turunannya dengan rumus ini: x f ( x ) f ( x + h ) f ( x h ) 2 h   .

Untuk mendemonstrasikannya, mari kita buat pendekatan perbedaan hingga x sin ( x ) . Karena kita sudah mengetahui turunan simboliknya—itulah x sin ( x ) = cos ( x ) —Tidak ada tujuan praktis dari demonstrasi ini. Namun, hal ini dapat berfungsi untuk menegaskan aturan simbolis.

Kami akan memanggil pendekatan perbedaan hingga fq_sin()dan menggunakannya makeFun()untuk membangunnya

fq_sin <- makeFun((sin(x+h)- sin(x-h))/(2*h) ~ x, h=0.01)

Perhatikan bahwa fq_sin()memiliki parameter, hyang nilai defaultnya disetel ke 0.01. Apakah 0,01 “kecil” atau tidak bergantung pada konteksnya. Secara operasional, kita mendefinisikan “kecil” sebagai nilai yang secara praktis memberikan hasil yang sama meskipun diperkecil dengan faktor 2 atau 10.

Sebagai demonstrasi itu fq_sin()dengan h = 0.01 mendekati yang asli x sin ( x ) , kami mengeksploitasi pengetahuan kami itu x sin ( x ) = cos ( x ) . Gambar 20.1 memplot perbedaan antara h = 0.01 perkiraan dan turunan asli.

slice_plot(fq_sin(x, h=0.01) - cos(x) ~ x, bounds(x=-10:10)) %>%
  slice_plot(fq_sin(x, h=0.001) - cos(x) ~ x, color="magenta") %>%
  gf_labs(y="Error from true value.")

Anda perlu memperhatikan dengan cermat skala sumbu vertikal pada Gambar 20.1 untuk melihat apa yang terjadi. Untuk h = 0.01 , fq_sin()tidak persis sama dengan cos(), namun hampir sama, selalu berada dalam \[0,00017. Untuk banyak tujuan, ini sudah cukup akurat. Namun tidak untuk semua tujuan. Kita dapat membuat perkiraan menjadi lebih baik dengan menggunakan yang lebih kecil <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>h</mi> </math> . Misalnya saja <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>h</mi> <mo>=</mo> <mn>0.01</mn> </math> versi fq_sin()akurat hingga \]0,0000017.

Dalam penggunaan praktisnya, seseorang menggunakan metode beda hingga dalam kasus di mana seseorang belum mengetahui fungsi turunan eksaknya. Misalnya saja jika fungsinya adalah gelombang suara yang direkam dalam bentuk file audio MP3.

Dalam situasi seperti ini, cara praktis untuk menentukan apa yang kecil h adalah memilih satu berdasarkan pemahaman Anda tentang situasinya. Misalnya, sebagian besar persepsi kita tentang suara melibatkan campuran sinusoidal dengan periode yang lebih lama dari satu per dua ribu detik, jadi Anda bisa memulainya dengan h dari 0,002 detik. Gunakan tebakan ini h untuk membangun calon perkiraan perbedaan hingga. Kemudian, buat kandidat lain menggunakan waktu yang lebih kecil h, katakanlah, 0,0002 detik. Jika kedua kandidat tersebut sangat cocok satu sama lain, maka Anda telah mengonfirmasi pilihan Anda h memadai.

Sangat menggoda untuk berpikir bahwa perkiraannya menjadi lebih baik dan lebih baik lagi ketika hdibuat lebih kecil. Namun hal tersebut belum tentu berlaku untuk perhitungan komputer. Alasannya adalah besaran-besaran di komputer hanya mempunyai ketelitian yang terbatas: sekitar 15 digit. Sebagai ilustrasi, mari kita hitung besaran sederhana, ( 3 ) 2 3 . Secara matematis, besaran ini tepat nol. Namun di komputer, ini belum sepenuhnya nol:

sqrt(3)^2 - 3
## [1] -4.440892e-16
## [1] -4.440892e-16

Kita dapat melihat hilangnya presisi ini jika kita membuat hpendekatan perbedaan hingga menjadi sangat kecil x sin ( x ) . Pada Gambar 20.2 kita menggunakan h = 0.000000000001. Hasilnya tidak memuaskan.

slice_plot(  fq_sin(x, h=0.000000000001) - cos(x) ~ x, 
           bounds(x=-10:10)) %>%
  slice_plot(fq_sin(x, h=0.0000000000001) - cos(x) ~ x,
             color="magenta") %>%
  gf_labs(y="Error from true value.")