Sự liên quan của các tính toán chính xác điểm cố định và tùy ý


10

Tôi thấy rất ít thư viện / gói tính toán điểm không trôi nổi xung quanh. Với những điểm không chính xác khác nhau của biểu diễn dấu phẩy động, câu hỏi đặt ra là tại sao không có ít nhất một số lĩnh vực mà độ chính xác tăng này có thể đáng giá khi làm việc với điểm cố định.

Có bất kỳ khó khăn CHÍNH trong việc sử dụng, giả sử, một người giải quyết eigenvalue điểm cố định? Làm thế nào chậm / nhanh, không chính xác / chính xác họ sẽ được?

Liên quan: cái nàycái này


Milind R, cảm ơn câu hỏi của bạn. Tôi nghĩ rằng câu hỏi của bạn là thú vị, nhưng có lẽ không phù hợp cho trang web. Tôi mong bạn hãy xem trang FAQ để được hướng dẫn. Khi tôi nhìn vào câu hỏi của bạn, tôi có ấn tượng rằng đó là khởi đầu của một câu nói, mặc dù tôi nghĩ rằng các yếu tố của một câu hỏi phù hợp với trang web có mặt. Điều đáng hỏi là có nhiều ứng dụng của số học số nguyên và số học điểm cố định trong khoa học tính toán hay không, và yêu cầu so sánh các số học đó với dấu phẩy động. Tôi khuyến khích chỉnh sửa bài viết của bạn.
Geoff Oxberry

Vâng, nó được sinh ra từ một lời nói, nhưng tôi nói nó như là một sự biện minh cho hiện trạng. Câu hỏi của tôi, như bạn có thể phỏng đoán, là về lý do tại sao chúng ta không thể có một sự thay đổi lớn đối với toán học số nguyên và điểm cố định trong các số học chuyên sâu. Bạn có thể vui lòng chỉnh sửa nó thay mặt tôi? Tôi thực sự đã cố gắng, nhưng tôi không biết làm thế nào câu hỏi của tôi không phù hợp.
Milind R

5
Tôi nghĩ rằng có một câu trả lời kỹ thuật khách quan cho vấn đề này: nếu bạn chạy hầu hết mọi tính toán khoa học (giả sử là giải quyết tuyến tính), số lượng bit cần thiết cho việc lưu trữ chính xác sẽ tăng theo cấp số nhân theo thời gian. Vì vậy, hỗ trợ mạnh mẽ cho sự không chính xác là cần thiết cho công việc hữu ích.
Geoffrey Irving

@MilindR: Cộng đồng hình học tính toán đã quan tâm đến các tính toán số thực có hiệu suất cao và chính xác cùng một lúc. Tôi đoán rằng tất cả các vấn đề thực tế liên quan đến bạn có thể được quan sát trong lĩnh vực nghiên cứu này. Một ví dụ bạn có thể tìm kiếm là thư viện LEDA.
shuhalo

@GeoffreyIrving Còn số không trong ma trận tam giác thì sao? Chúng không thể được lưu trữ như bất cứ thứ gì ngoài điểm nổi không chính xác dễ bị lỗi?
Milind R

Câu trả lời:


5

Việc sử dụng số học điểm cố định có thể phù hợp trong những trường hợp nhất định. Nói chung đối với máy tính khoa học (ít nhất là theo nghĩa mà hầu hết mọi người nghĩ về nó) nó không phù hợp do nhu cầu thể hiện các dải động lớn gặp phải. Bạn đề cập đến các vấn đề eigenvalue là một ví dụ, nhưng rất thường xuyên trong khoa học, người ta quan tâm đến các giá trị riêng nhỏ nhất của một ma trận (giả sử, trong việc tính toán trạng thái cơ bản của một hệ lượng tử). Độ chính xác của các giá trị riêng nhỏ nói chung sẽ khá suy giảm so với các giá trị riêng lớn nếu bạn sử dụng điểm cố định. Nếu ma trận của bạn chứa các mục thay đổi theo tỷ lệ lớn, các giá trị riêng nhỏ có thể hoàn toàn không thể giải thích được trong độ chính xác làm việc. Đây là một vấn đề với việc biểu diễn các con số; các đối số này được giữ bất kể bạn thực hiện các tính toán trung gian như thế nào. Bạn có thể tìm ra tỷ lệ để áp dụng cho các kết quả được tính toán, nhưng giờ bạn đã phát minh ra dấu phẩy động. Thật dễ dàng để xây dựng ma trận có các yếu tố được xử lý tốt, nhưng giá trị bản địa của chúng thì cực kỳ kém (nhưMa trận Wilkinson , hoặc thậm chí ma trận với các mục hoàn toàn nguyên ). Những ví dụ này không phải là bệnh hoạn như chúng có vẻ như, và nhiều vấn đề tiên tiến của khoa học liên quan đến ma trận hành xử rất kém, vì vậy sử dụng điểm cố định trong bối cảnh này là một ý tưởng tồi (TM).

Bạn có thể lập luận rằng bạn biết độ lớn của kết quả và bạn muốn không lãng phí bit trên số mũ, vì vậy hãy nói về các chất trung gian. Sử dụng điểm cố định nói chung sẽ làm trầm trọng thêm các tác động của việc hủy bỏ thảm khốc và làm tròn trừ khi bạn thực sự trải qua những cơn đau lớn để làm việc với độ chính xác cao hơn. Hình phạt về hiệu suất sẽ rất lớn và tôi sẽ phỏng đoán rằng việc sử dụng biểu diễn dấu phẩy động có cùng độ rộng bit mantissa sẽ nhanh hơn và chính xác hơn.

Một lĩnh vực mà điểm cố định có thể tỏa sáng là trong một số lĩnh vực nhất định của máy tính hình học. Đặc biệt nếu bạn cần số học chính xác hoặc biết phạm vi động của tất cả các số trước đó, điểm cố định cho phép bạn tận dụng tất cả các bit trong biểu diễn của mình. Ví dụ: giả sử bạn muốn tính toán giao điểm của hai dòng và bằng cách nào đó, điểm cuối của hai dòng được chuẩn hóa để ngồi trong ô vuông đơn vị. Trong trường hợp này, điểm giao nhau có thể được biểu diễn với nhiều bit chính xác hơn so với sử dụng số dấu phẩy động tương đương (sẽ lãng phí bit trên số mũ). Bây giờ, gần như chắc chắn rằng các số trung gian cần thiết trong tính toán này cần phải được tính toán với độ chính xác cao hơn, hoặc ít nhất là được thực hiện rất cẩn thận (như khi chia tích của hai số cho một số khác, bạn cần hết sức cẩn thận về nó ). Về mặt này, điểm cố định có lợi hơn từ quan điểm đại diện thay vì từ quan điểm tính toán và tôi sẽ nói rằng điều này thường đúng khi bạn có thể thiết lập giới hạn trên dưới xác định trên phạm vi động của đầu ra thuật toán của bạn . Điều này hiếm khi xảy ra.

Tôi đã từng nghĩ rằng các biểu diễn dấu phẩy động là thô hoặc không chính xác (tại sao lại lãng phí bit trên số mũ?!). Nhưng qua thời gian, tôi đã nhận ra rằng nó thực sự là một trong những đại diện tốt nhất có thể cho số thực. Mọi thứ trong tự nhiên hiển thị trên thang đo log, vì vậy dữ liệu thực cuối cùng trải rộng trên một phạm vi số mũ lớn. Ngoài ra để đạt được độ chính xác tương đối cao nhất có thể đòi hỏi phải làm việc trên thang đo log, làm cho việc theo dõi số mũ trở nên tự nhiên hơn. Ứng cử viên duy nhất khác cho đại diện "tự nhiên" là chỉ số mức đối xứng . Tuy nhiên, phép cộng và phép trừ chậm hơn nhiều trong biểu diễn đó và nó thiếu sự hỗ trợ phần cứng của IEEE 754. Một lượng lớn suy nghĩ đã được đưa vào các tiêu chuẩn dấu phẩy động, bởi một trụ cột của đại số tuyến tính số. Tôi sẽ nghĩ rằng anh ta biết đại diện "đúng" của các con số là gì.


4

Như một ví dụ về lý do tại sao số học chính xác / số học điểm cố định rất hiếm khi được sử dụng, hãy xem xét điều này:

  • Trong phương pháp phần tử hữu hạn, như trong hầu hết các phương pháp khác được sử dụng trong điện toán khoa học, chúng ta đến các hệ thống tuyến tính hoặc phi tuyến chỉ gần đúng với thế giới thực. Ví dụ, trong FEM, hệ thống tuyến tính cần giải chỉ là một xấp xỉ với phương trình vi phân từng phần ban đầu (có thể, chính nó, chỉ là một xấp xỉ của thế giới thực). Vậy tại sao phải nỗ lực rất lớn để giải quyết một cái gì đó chỉ là gần đúng?

  • Hầu hết các thuật toán mà chúng ta sử dụng ngày nay đều có tính lặp đi lặp lại: phương pháp của Newton, Conjugate Gradents, v.v. Chúng tôi chấm dứt các phép lặp này bất cứ khi nào chúng tôi hài lòng rằng độ chính xác của phép lặp gần đúng với giải pháp của vấn đề là đủ. Nói cách khác, chúng tôi chấm dứt trước khi chúng tôi có giải pháp chính xác. Như trước đây, tại sao sử dụng số học chính xác cho sơ đồ lặp khi chúng ta biết rằng chúng ta chỉ tính toán gần đúng?


Thật khó chịu khi phải thừa nhận, nhưng vâng, câu trả lời của bạn về cơ bản đóng đinh việc sử dụng chính xác quy mô lớn. Tôi đoán tôi sẽ không nhìn thấy mặt sau của floatbất cứ lúc nào sớm.
Milind R

@MilindR: Tôi không chắc chắn những gì bạn đang nhắm đến. Bạn dường như có một cái búa và thất vọng rằng không ai có móng tay hoặc nghĩ rằng búa là một công cụ hữu ích. Nhưng không phải vì chúng tôi không thích bạn - chúng tôi đã nghĩ về những vấn đề này trong một thời gian dài và chỉ đơn giản quyết định rằng tuốc nơ vít chúng tôi có là công cụ thích hợp. Tôi thấy không có gì bực bội về điều đó (trừ khi bạn có một cái búa) vì nó chỉ là một cách tiếp cận thực dụng - tại sao sử dụng số học chính xác khi chúng ta chỉ thực hiện xấp xỉ?
Wolfgang Bangerth

Thật là bực bội vì một vấn đề hoàn toàn bình thường có thể bị điều hòa tồi tệ đến mức nó không thể hòa tan. Cũng bởi vì lý tưởng của độ chính xác tùy ý trông rất hứa hẹn, so với bản chất không chính xác của điểm nổi ngay từ khi lưu trữ giá trị cho đến xuất ra nó.
Milind R

Vấn đề là các lỗi làm tròn cực kỳ khó phân tích. Tôi nhận ra điều này vào ngày tôi bắt đầu học phân tích số và đại số tuyến tính số. Vì vậy, một hệ thống hoàn toàn tránh được vấn đề, làm cho điều hòa không thành vấn đề, có nên đưa thế giới đi bão? là suy nghĩ. Tất nhiên tôi hiểu những hạn chế, nhưng chúng có vẻ giống như chất kích thích hơn là chất phá vỡ. Kiểu như tăng độ khó trong việc thu nhỏ bóng bán dẫn trong bộ xử lý. Có rất khó để phân tích, nhưng Intel vẫn làm điều đó.
Milind R

1
Nếu một vấn đề không được điều hòa đến mức khó giải quyết, thì giải pháp của nó không ổn định đối với các nhiễu loạn. Đó là một vấn đề với vấn đề ban đầu, không phải là biểu diễn dấu phẩy động. Có, có lẽ bạn có thể có được một giải pháp cho vấn đề bằng cách sử dụng biểu diễn chính xác. Nhưng giải pháp không ổn định và do đó có khả năng sẽ không liên quan gì đến những gì bạn thực sự tìm kiếm. Bạn đang sủa sai cây nếu bạn nghĩ rằng việc thể hiện các con số là vấn đề.
Wolfgang Bangerth

3

Nếu bạn nhìn vào thư viện này để làm tròn chính xác: CRlibm , bạn sẽ thấy trong tài liệu nói chung, các thuật toán phải được chứng minh là chính xác (với bằng chứng hợp lý). Tại sao? Độ ổn định và tốc độ hội tụ của kết quả của hàm không có câu trả lời "một kích cỡ phù hợp cho tất cả". Nói tóm lại, "không có bữa trưa miễn phí" - bạn phải làm việc để chứng minh lý lẽ của mình là đúng. Điều này là do hoạt động của các chức năng được mô hình hóa, không phải phần cứng cơ bản (cho dù bạn sử dụng đơn vị số nguyên hay dấu phẩy động, mặc dù có, cả hai đều có "gotchas", như tràn / tràn, số không bình thường, v.v.) ngay cả khi kết quả bạn đang tìm kiếm sự hội tụ đến một số nguyên, thuật toán được sử dụng để tìm kết quả không nhất thiết phải rất ổn định.

Eigen là một thư viện C ++ có nhiều thuật toán để giải các ma trận, mỗi thuật toán có các thuộc tính khác nhau. Trang này chứa một bảng thảo luận về sự đánh đổi tốc độ và độ chính xác cho các thuật toán khác nhau được sử dụng để giải ma trận. Tôi nghi ngờ thư viện Eigen có thể làm những gì bạn muốn. :-)


Cảm ơn .. Rất nhiều thông tin, và liên kết tốt đẹp. Nhưng không phải việc sử dụng điểm cố định cùng với mức độ làm tròn hạn chế dẫn đến kết quả đầu ra chính xác hơn? Vì đại diện chính xác là bắt đầu với, không giống như dấu phẩy động?
Milind R

1
Tôi đề nghị bạn tấn công vấn đề của bạn từ một quan điểm khác. Giới thiệu về logic, bạn biết rằng có ba phần cho giải pháp của một vấn đề: định nghĩa, lý luận và kết luận / kết quả. Bạn có lẽ (như hầu hết chúng ta) đã rất quen với việc làm việc chủ yếu ở bước "định nghĩa" giải quyết vấn đề - thông thường bạn có thể "xác định" vấn đề của mình; tuy nhiên, nếu bạn trở nên thất vọng, đôi khi bạn gặp phải một loại vấn đề khó khăn hơn đòi hỏi nhiều công việc hơn trong phần "lý luận".
mda

Tôi chỉ mơ hồ hiểu bạn ... Tôi không thể thấy nơi tôi có thể "xác định" vấn đề này, lý do là điều cần thiết.
Milind R

Vài năm sau, tôi thực sự hiểu bạn :-)
Milind R

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.