2012-02-29 39 views
7

Tôi đang cố gắng phân tách các ma trận theo độ chính xác gấp bốn lần và lấy logarit của chúng. Có một ngôn ngữ mà tôi có thể thực hiện việc này bằng các hàm dựng sẵn không?Giá trị chính xác 4 giá trị chính xác, các bộ tách riêng và lôgarit ma trận

Lưu ý, các ngôn ngữ/gói trong thẻ không đủ, đau khổ từ những thiếu sót sau đây:

Matlab: Không hỗ trợ quad chính xác.

Python/NumPy/SciPy: Ma trận với dtype float128 năng suất riêng trong float64.

Sage: Giao diện thông qua GP/PARI mang lại thông báo lỗi khó hiểu.

Có ai thực hiện chéo đường chéo và ma trận logarit với độ chính xác quad hay không và nếu có thì làm cách nào?

+2

Hãy thử cách này: [http://code.google.com/p/mpmath/] (http://code.google.com/p/mpmath/) –

+2

Tôi quên đề cập trước đó, mpmath không hỗ trợ nhiều chức năng phân tách chéo và ma trận. Nó gần như mọi thứ khác, mặc dù. –

+0

@ BenCriger - Đối với những gì nó có giá trị, tôi nghĩ rằng vấn đề cơ bản trong trường hợp của numpy là hầu hết các triển khai BLAS không hỗ trợ độ chính xác nổi 128-bit. –

Trả lời

8

@Matlab: Không hỗ trợ độ chính xác quad.

Multiprecision Computing Toolbox for MATLAB cung cấp các thường trình cho phép tính đại số tuyến tính theo độ chính xác tùy ý.

Nó bao gồm nhiều lĩnh vực khác - toán cơ bản, phương pháp số (tích hợp, ode, tối ưu hóa), các chức năng đặc biệt và phân tích dữ liệu cơ bản.

Bên cạnh đó, nó cho phép chạy các chương trình Matlab hiện có với độ chính xác tùy ý chỉ với các sửa đổi tối thiểu (hoặc không có) đối với mã nguồn.

Cập nhật (27 tháng 3 năm 2013): Bây giờ hộp công cụ cũng bao gồm bốn nhanh chóng chính xác chế độ, đó là nhanh hơn gần 100 lần so với giải pháp thay thế. Xem Fast Quadruple Precision Computations in MATLAB để so sánh và chi tiết.


Những người chỉ trích về lựa chọn thay thế đề nghị:

Symbolic Math Toolbox (MATLAB) từ MathWorks nhắm mục tiêu đến tính tượng trưng. Như vậy nó thiếu nhiều tính năng cần thiết cần thiết cho tính toán số chính xác tùy ý.Ví dụ, thậm chí không thể so sánh hai số vpa() vì chúng thuộc loại "mang tính biểu tượng" (theo thiết kế). Điều này chỉ giới hạn quy tắc trong 99% các thuật toán từ phân tích số.

Các hàm đại số tuyến tính cơ bản khác bị thiếu trong Hộp công cụ toán học biểu tượng là: norm, cond, max, min, sort, lu, qr, chol, schur.

Miễn phí Nhiều hộp công cụ chính xác (MATLAB).

Bên cạnh đó là cực kỳ chậm (nó thực hiện chuyển đổi số thành các toán hạng trên mọi phép toán số học: +, -, ...) và thiếu chức năng cần thiết (eig, det, cond, \, ...), nó cho kết quả sai về chức năng của nó.

Ví dụ: kết quả không chính xác được cung cấp bởi svd chức năng làm cho nghiên cứu của tôi vô nghĩa tại một số điểm và lỗi đã được tìm thấy.

mpmath (Python)

Chủ yếu nhắm mục tiêu đến đặc biệt máy tính chức năng (gia đình hypergeometric nói riêng). Và không có sự hỗ trợ cho nhiều hay ít thuật toán số cao cấp. Có rất ít sự hỗ trợ cho ma trận. Mặc dù có vẻ có logarit ma trận bạn đang tìm kiếm trong phiên bản mới nhất.


Trên thực tế tất cả những nhược điểm đã đẩy tôi để phát triển mở rộng của riêng mình cho MATLAB để kích hoạt nó với máy tính chính xác tùy ý (gọi vào đầu - Multiprecision Computing Toolbox for MATLAB). Tôi chỉ cần nó cho công việc của tôi.

Nó đang được phát triển tích cực (nhưng đã sửa tất cả các vấn đề được liệt kê với các giải pháp thay thế khác) - Tôi sẽ đánh giá cao bất kỳ phản hồi nào.

2

Về đường chéo, có thể this có thể giúp bạn (anh ta cũng cần giá trị riêng hơn chính xác hơn gấp đôi số điểm cho anh ta và kết thúc bằng cách sử dụng độ chính xác gấp bốn lần).

Anh ấy đang sử dụng fortran. Thay đổi thành quads liên quan đến việc xác định một số nguyên là 16 thay vì 8 và biên dịch lại LAPACK với gfortran bằng cách sử dụng "-fdefault-real-8" để tăng gấp đôi lên quad. ¿Có lẽ bạn có thể xây dựng LAPACK như thế này và sau đó sử dụng nó từ NumPy? Tôi không biết.

Tất nhiên, vì độ chính xác này thực sự được mô phỏng, chương trình chậm hơn 10 lần.

Xin lỗi vì không cụ thể hơn: Tôi đã không thử bất cứ điều gì như thế này nhưng tôi nhớ bài đăng blog và nó có thể đủ cho bạn ít nhất là bắt đầu.

1

Symbolic Math Toolbox hoặc tự do có sẵn Multiple Precision Toolbox, cả cho MATLAB, đáp ứng nhu cầu của bạn không? Hộp công cụ nhiều độ chính xác dường như không tương đương với eig, nhưng nó có svd.

Các vấn đề liên quan