Tôi đã kiểm tra kết quả 0 ^ 0 trong máy tính trên các phiên bản khác nhau:
- iOS 10.3 => 1
- iOS 11.4 => Lỗi
- macOS 10.12.6 => 1
- macOS 10.13.5 => Không phải là số
Lý do của sự khác biệt là gì?
Tôi đã kiểm tra kết quả 0 ^ 0 trong máy tính trên các phiên bản khác nhau:
Lý do của sự khác biệt là gì?
Câu trả lời:
Mặc dù 0⁰ thường không được xác định, một số nhánh của toán học xác định rõ ràng là 1 bởi vì, như bạn có thể thấy , đây là giá trị mà hàm y (x) = xˣ hội tụ tại n = 0.
Ít chính thức hơn, lưu ý rằng 0,5 0,5 = 0,707; 0,2 0,2 = 0,725; 0,1 0,1 = 0,794, và 0,01 0,01 = 0,955. Khi bạn tiếp cận 0, kết quả sẽ tiếp cận 1, điều này làm cho nó khá logic và tiện dụng để xác định 0 ^ 0 là 1 trong một số trường hợp .
Do đó, không có kết quả nào trong 3 kết quả này là không chính xác và thay vào đó chúng đều phản ánh các quy ước khác nhau về giá trị của biểu thức không xác định này.
Có một bài viết Wikipedia tốt giải thích vấn đề. Xem thêm Zero với công suất 0 - là 0⁰ = 1? .
Hầu hết các triển khai số học dấu phẩy động đều tuân theo tiêu chuẩn IEEE 754-2008, quy định rằng pow (0,0) trả về 1 (xem §9.2.1).
Nhưng nó cũng định nghĩa hai hàm khác: pown (0,0) = 1 và powr (0,0) = NaN.
Wikipedia tóm tắt như sau :
Tiêu chuẩn điểm nổi IEEE 754-2008 được sử dụng trong thiết kế của hầu hết các thư viện dấu phẩy động. Nó khuyến nghị một số hoạt động để tính toán một sức mạnh: [20]
pow coi 0 0 là 1. Nếu công suất là một số nguyên chính xác, kết quả tương tự như đối với pown, nếu không thì kết quả là như đối với powr (trừ một số trường hợp ngoại lệ).
pown coi 0 0 là 1. Công suất phải là một số nguyên chính xác. Giá trị được xác định cho các cơ sở tiêu cực; ví dụ: pown (−3,5) là −243. powr coi 0 0 là NaN (Không phải là số - không xác định). Giá trị cũng là NaN cho các trường hợp như powr (,23,2) trong đó cơ sở nhỏ hơn 0. Giá trị được xác định bởi epower × log (cơ sở).
Biến thể pow được lấy cảm hứng từ chức năng pow từ C99, chủ yếu để tương thích. [21] Nó rất hữu ích cho các ngôn ngữ có chức năng duy nhất. Các biến thể pown và powr đã được giới thiệu do sử dụng mâu thuẫn giữa các chức năng nguồn và các quan điểm khác nhau (như đã nêu ở trên). [22]
Tất nhiên điều này không ảnh hưởng đến kết quả toán học chính xác là gì: như những người khác đã lưu ý, có nhiều hơn một câu trả lời có thể, và IEEE phải đưa ra quyết định tùy ý.
Ai đó tại Apple đã nhận ra rằng 0 ^ 0 là một hoạt động không hợp lệ và đã sửa nó.
Không với sức mạnh của số không là một mâu thuẫn
Nó sẽ tạo ra một lỗi. Lý do duy nhất mà bạn không thấy lỗi được tạo ra là do phiên bản Máy tính được đề cập không mắc lỗi cho lỗi đầu vào đó.
Có một số tranh cãi về 0⁰ làm sôi hàm x ^ y có sự gián đoạn tại (x, y) -> (0,0). Đây là một dấu chấm phẩy vì nó vô nghĩa về mặt toán học khi cấm một hàm có giá trị không liên tục.
Đó là thực tế chung để nhúng các số nguyên vào các số thực sao cho một hàm được xác định trên các số thực khớp với cùng một hàm được xác định trên các số nguyên bất cứ khi nào hàm thực giả định các giá trị tích phân. Vì vậy, có rất ít điểm trong việc phân biệt 0,0 ^ 0 với 0,0 ^ 0,0.
Bây giờ x⁰ với số nguyên 0 là số mũ là một sản phẩm chứa chính xác các hệ số 0 của x. Vì không có yếu tố nào của x được chứa trong giá trị của nó, nên có rất ít điểm trong việc gán cho nó một giá trị tùy thuộc vào x và giá trị của nó là một sản phẩm trống khá rõ ràng 1, yếu tố trung tính để nhân.
Điều này cũng có ý nghĩa tốt vì nó không tự ý giới hạn định lý nhị thức ở các giá trị khác không. Theo một cách nào đó, đây là một đối số dựa trên việc cố gắng hoàn thành hàm x⁰ một cách hợp lý tại x = 0, làm cho nó được xác định và liên tục ở mọi nơi.
Nếu chúng ta thử điều này với hàm 0 ^ x thay vào đó, giới hạn tại x = 0 + có thể là 0, nhưng việc xác định nó như vậy vẫn không giúp khắc phục sự gián đoạn thiết yếu vì hàm này không được xác định cho âm x.
Bây giờ máy tính có xu hướng tính x ^ y là exp (y * ln (x)). Tất nhiên đó là tin xấu cho x = 0. Vì vậy, các giá trị như vậy phải được lập trình rõ ràng hoặc bạn sẽ không đến số. Để lập trình rõ ràng, bạn phải dựa vào trực giác toán học của lập trình viên, và lập trình viên điển hình sẽ được hướng dẫn nhiều hơn bởi trực giác giả như "một hàm phải liên tục khi được định nghĩa" so với một nhà toán học.
Ngoài ra, bạn có thể mong đợi một loạt các bình luận từ những người dùng khác nhau và các nhà toán học thuần túy sẽ không trở lại máy tính vì tầm nhìn của họ về sự thật toán học rất nhiều, vì vậy bạn không thể mong đợi đầu vào của họ tràn ngập những người khác.
Vì vậy, kết quả là một dân chủ nhiều hơn một toán học, và đa số dân chủ có xu hướng thay đổi.