Trong trường hợp này, NaN
(không phải là một số) được trả về vì tính toán của số mũ tràn theo số học chính xác kép.
0
điểm kinh nghiệm( x )1 + điểm kinh nghiệm( x )= 11 + điểm kinh nghiệm( - x )= 1 - điểm kinh nghiệm( - x ) + điểm kinh nghiệm( - 2 x ) - ⋯ .
x > 710điểm kinh nghiệm( - 710 ) ≈ 10- 308≈ 2- 1024 1
Điều thú vị là, R
sẽ không sản xuất một NaN
khi mũ underflows . Do đó, bạn chỉ có thể chọn phiên bản tính toán đáng tin cậy hơn, tùy thuộc vào dấu hiệu của x
, như trong
f <- function(x) ifelse(x < 0, exp(x) / (1 + exp(x)), 1 / (1 + exp(-x)))
Vấn đề này xuất hiện trong hầu hết tất cả các nền tảng điện toán (tôi vẫn chưa thấy ngoại lệ) và chúng sẽ thay đổi trong cách chúng xử lý tràn và tràn. Các hàm mũ nổi tiếng với việc tạo ra các loại vấn đề này, nhưng chúng không đơn độc. Do đó, chỉ cần có một giải pháp là không đủ R
: một nhà thống kê giỏi hiểu các nguyên tắc số học máy tính và biết cách sử dụng chúng để phát hiện và làm việc xung quanh các đặc điểm riêng của môi trường điện toán của cô ấy.