Excel tính lũy thừa của số âm
Sử dụng Excel 2010, tôi nhận được (-8)^(1/3)=-2 nhưng không thể tính được (-8)^(2/3)
Kết quả sau trả về #NUM! trong khi về mặt toán học, tôi thấy nó là (-8)^(1/3)^(2)=4 hoặc (-8)^2^(1/3)=4
Ai đó có thể cho tôi một vài lời khuyên được không?
Trả lời:
Điều này thật thú vị.
Tại sao Excel có thể tìm được (-8)^(1/3) nhưng không thể tìm được (-8)^(2/3) ?
Và tệ hơn nữa, điều này cũng thất bại =(-8)^0.33333333333333 (14 chữ số thập phân)
trong khi điều này hoạt động =(-8)^0.333333333333333 (15 chữ số thập phân)
Có lẽ ai đó trong nhóm Excel có thể giải thích thuật toán được sử dụng.
Tóm lại, đây là một vài giải pháp thay thế.
những lời chúc tốt đẹp nhất
Trả lời:
Cảm ơn những ý kiến đóng góp của bạn, Bernard Liengme.
Về vấn đề số lượng chữ số thập phân, theo quan điểm của tôi, Excel đã làm tròn số có 15 chữ số thập phân thành 1/3, sau đó phép tính trả về căn bậc ba của -8 là -2 (chúng ta nhớ lại phép toán đã áp dụng để tính lũy thừa của 1/n với n là số lẻ).
Mặt khác, số có 14 phần thập phân vẫn giữ nguyên là số thập phân, do đó kết quả của công thức là một số ảo không thể tính toán bằng toán tử ^.
Đó chỉ là phỏng đoán của tôi, cần các chuyên gia xác nhận.
Điều khiến tôi thấy thú vị nhất là Excel không thể trả về lũy thừa m/n nếu m không phải là 1. Điều đó có nghĩa là nó có một phép thử để xác định trường hợp nào số mũ bị làm tròn, và chỉ có 1/n vượt qua phép thử đó?
Trân trọng,
Trả lời:
Bạn có thể tìm thấy một số thông tin hữu ích từ liên kết bên dưới:
http://mathforum.org/library/drmath/view/62979.html
Trân trọng,
Amit Tandon
www.globaliconnect.com
Trả lời:
Chào Dana,
Cảm ơn bạn rất nhiều về câu trả lời, đặc biệt là công thức thú vị và cách trình thông dịch của Excel đọc công thức.
Khi tôi nói =(-8)^(1/3)^(2) thì thực sự tôi muốn nói ((-8)^(1/3))^(2)
Theo tôi thấy có vẻ không nhất quán khi =POWER(-8;1/3) có thể tìm được nghiệm thực của phương trình x^3=-8 trong khi =POWER(-8;2/3) lại không tìm được bình phương của x đó.
Nói cách khác, việc =((-8)^(1/3))^2 và =((-8)^(2*1/3)) không cho cùng một kết quả khiến tôi khó chịu, bởi vì về mặt toán học chúng giống nhau. Tôi rất mong bạn có thể cho tôi biết lý do đằng sau sự không nhất quán này.
Trân trọng,
Trả lời:
Chào Amit Tandon,
Trang web đó thú vị đấy. Cảm ơn bạn.
Tuy nhiên, nó không cho tôi câu trả lời mà tôi muốn, vì tôi biết rõ rằng hầu hết các phép lũy thừa với số mũ thập phân không cho chúng ta kết quả thực. Tuy nhiên, trong trường hợp cụ thể này, chúng ta có x^(1/3) và x^(2/3), với số sau theo tôi là bình phương của số trước.
Vậy mối lo ngại thực sự của tôi là sự không nhất quán khi Excel có thể trả về số thực cho trường hợp trước nhưng chỉ có thể trả về số phức cho trường hợp sau.
Giả sử tôi rất tò mò về thuật toán mà Excel sử dụng để tính lũy thừa của các số không phải số nguyên.
Trân trọng,
Trả lời:
Tôi muốn làm cho tình hình thêm phức tạp hơn bằng cách cả Wolfam Alpha và Microsoft Mathematics đều định nghĩa -8^(2/3) là -4 chứ không phải 4.
Trả lời:
Chào bạn. Vấn đề là Excel sẽ tính toán như sau:
=-4^2
16
Nhưng những chương trình đó sẽ quay trở lại:
-(4)^2
-16
Đây là một tài liệu tham khảo thú vị.
Trong những trường hợp đặc biệt:
... bởi vì phép lũy thừa có tính chất kết hợp phải trong toán học nên...
...Ví dụ, Microsoft Excel đánh giá a ^ b ^ c là ( a b ) c , điều này trái ngược với quy ước thường được chấp nhận...
Các chủ đề khác như phép lũy thừa (Tetterion), "Tháp lũy thừa", v.v... đều được viết từ phải sang trái...v.v.
Trả lời:
RVCollins đã viết:
Tôi muốn làm cho tình hình thêm phức tạp hơn bằng cách cả Wolfam Alpha và Microsoft Mathematics đều định nghĩa -8^(2/3) là -4 chứ không phải 4.
Đó là vì Excel phân tích biểu thức thành (-8)^(2/3), trong khi Wolfam Alpha phân tích nó thành -(8^(2/3)).
Một số người thích tranh luận rằng Excel "sai" và cách diễn giải của Wolfam Alpha phù hợp với toán học.
Nhưng trước hết, sự thật là như vậy. Và thứ hai, không có "đúng" hay "sai". Excel là một ngôn ngữ lập trình, và mỗi ngôn ngữ lập trình đều có những quy tắc riêng.
Ví dụ, trong APL, không có quy tắc ưu tiên nào, và các phép toán được thực hiện từ phải sang trái. Hơn nữa, "*" là toán tử lũy thừa, chứ không phải toán tử nhân. Vì vậy, 2*3 bằng 8, chứ không phải 6. Và 3*2+4 bằng 729, chứ không phải 85. Ngoài ra, 2*3 không bằng 3*2.
Comments
Post a Comment