Saya sering berakhir dalam situasi di mana perlu untuk memeriksa apakah perbedaan yang diperoleh di atas presisi mesin. Sepertinya untuk tujuan ini R memiliki variabel berguna: .Machine$double.eps
. Namun ketika saya beralih ke kode sumber R untuk panduan tentang menggunakan nilai ini saya melihat beberapa pola yang berbeda.
Contohnya
Berikut beberapa contoh dari stats
perpustakaan:
t.test.R
if(stderr < 10 *.Machine$double.eps * abs(mx))
chisq.test.R
if(abs(sum(p)-1) > sqrt(.Machine$double.eps))
mengintegrasikan
rel.tol < max(50*.Machine$double.eps, 0.5e-28)
lm.influence.R
e[abs(e) < 100 * .Machine$double.eps * median(abs(e))] <- 0
princomp.R
if (any(ev[neg] < - 9 * .Machine$double.eps * ev[1L]))
dll.
Pertanyaan
- Bagaimana seseorang dapat memahami alasan di balik semua berbeda
10 *
,100 *
,50 *
dansqrt()
pengubah? - Apakah ada pedoman tentang cara
.Machine$double.eps
menyesuaikan perbedaan karena masalah presisi?
double.eps
. Jika Anda melakukan beberapa operasi pada nomor floating point, maka toleransi kesalahan Anda juga harus menyesuaikan. Inilah mengapa all.equal memberi Anda tolerance
argumen.