Nguồn mở triển khai xấp xỉ hợp lý cho một hàm


15

Tôi đang tìm kiếm một số triển khai nguồn mở (bất kỳ Python, C, C ++, Fortran nào cũng được) về xấp xỉ hợp lý cho một hàm. Một cái gì đó dọc theo bài viết [1]. Tôi cung cấp cho nó một hàm và nó trả lại cho tôi hai đa thức, có tỷ lệ là xấp xỉ trên khoảng đã cho và sai số dao động với cùng biên độ và đó là một xấp xỉ tối ưu, hoặc gần với nó.

Đây là những gì tôi tìm thấy:

  • Có vẻ như chebfun có thể làm điều đó, nhưng tôi không có quyền truy cập vào Matlab *.

  • Có một chương trình đơn giản trong phần 5-13 "Xấp xỉ Rational Ch Quashev" trong Công thức toán số (NR).

  • Mathicala có nền kinh tế hóa gần đúng và MiniMaxAppro xấp xỉ

Tôi đã tự hỏi liệu có cái gì mới hơn (có thể được thử nghiệm tốt hơn) so với mã NR.

Ứng dụng của tôi là tôi có một bộ các hàm đặc biệt, khoảng 10, được đưa ra dưới dạng chuỗi siêu bội hoặc một số công thức có tính năng hủy số và tôi muốn có một hàm đánh giá mạnh mẽ, nhanh chóng và chính xác, được gọi là hầu hết các vòng lặp bên trong của việc tính toán hai phần tử ma trận hạt trong các tính toán của Hartree Fock. Tôi đặt một ví dụ đơn giản về chức năng phù hợp với tôi tại [2]. Như bạn có thể thấy, đó là sử dụng công thức trực tiếp hoặc một chuỗi xung quanh x = 0, mà tôi đã tính bằng SymPy. Nó là một loại công việc, nhưng độ chính xác không lớn, khoảng x = 1 khoảng một nửa số chữ số có nghĩa bị mất (nhưng với x = 0,1 cũng như x = 1e5 thì chính xác với hầu hết tất cả các chữ số có nghĩa). Tôi đang tìm kiếm một xấp xỉ tốt hơn.

[1] Deun, J., & Trefethen, LN (2011). Một triển khai mạnh mẽ của phương pháp Carathéodory-Fejér để tính gần đúng hợp lý. Toán số BIT, 51 (4), 1039 211050. doi: 10.1007 / s10543-011-0331-7 ( bản in điện tử tháng 6 năm 2010 )

[2] https://gist.github.com/3831580

(*) Cũng không vào trang web chebfun, cung cấp cho tôi 404, nhưng Pedro đề nghị đó phải là vấn đề nhà cung cấp của tôi.

Câu trả lời:


4

Điều này có thể giúp được gì không? http://www.alglib.net/interpolation/rational.php


1
Cảm ơn, tôi nghĩ rằng điều này sẽ làm. Tôi cần học cách sử dụng nó. Hiện tại, tôi đang bị báo chí thời gian, vì vậy tôi chỉ sử dụng MiniMaxAppro xấp xỉ từ Mathematica để hoàn thành công việc, nhưng tôi muốn học cách làm điều này bằng các công cụ mã nguồn mở.
Ondřej Čertík

10

Thực hiện các xấp xỉ hợp lý tốt nhất một lần thường có thể được thực hiện bằng các lần lặp "thủ công" của thuật toán Remez : nội suy một xấp xỉ hợp lý với các lỗi dấu tương đối (tương đối hoặc tuyệt đối) tại một điểm đoán ban đầu cho các điểm nội suy, xác định một (hoặc nhiều) điểm trong đó lỗi thực tế vượt quá các điểm nội suy và trục (hoán đổi một hoặc nhiều điểm đã đoán cho những điểm này, theo cách bảo tồn các lỗi ký hiệu xen kẽ). Đó là một cách tốt để hiểu lý thuyết từ đầu. Khi độ chính xác cần thiết còn khiêm tốn, tôi thấy việc triển khai bảng tính giúp tôi cảm nhận theo cách của mình thông qua các tính toán và điều chỉnh các vấn đề thông qua cắt và dán.

y= =1/x1x2nhập mô tả hình ảnh ở đây

Nếu chúng ta hạ thấp đường thẳng xuống một nửa khoảng cách tại điểm "sai số tối đa", thì chúng ta sẽ có ba điểm "dao động cân bằng" của lỗi tuyệt đối đếm hai điểm cuối và điểm tới hạn này ở bên trong. Do đó, một xấp xỉ đa thức tuyến tính tốt nhất cho hàm lồi trơn có thể được tìm thấy gần như bằng cách kiểm tra.

Bản thân phần mềm Chebfun là mã nguồn mở ( giấy phép kiểu BSD ) kể từ phiên bản 4.0. Không chắc chắn tại sao các liên kết đến trang web của họ có thể đã đưa ra lỗi 404 vào thời điểm đó, nhưng hiện tại chúng đang ở v5.2.1. (Họ cũng có kho lưu trữ GitHub .) Dự án Chebfun nhắm đến nhiều hơn các xấp xỉ hợp lý tốt nhất, với khái niệm trung tâm là một cú pháp giống như vectơ Matlab cho các hàm (univariate real) trên một khoảng.

Để hoàn thành vòng tròn sẽ yêu cầu nó hoạt động theo Octave chứ không phải Matlab. Có một chủ đề duy trì Octave về điều này bắt đầu vào năm 2010. Một bài báo năm 2012 của các nhà bảo trì / tác giả Chebfun cho thấy một số nỗ lực đã đi vào khả năng tương thích Octave từ phía họ.

Nhìn vào trang dự án liên quan đến Chebfun cho thấy rằng vì phần mềm Chebfun là nguồn mở, nên có thể thực hiện cổng này hoặc sử dụng một trong các gói nguồn mở được liệt kê ở đó, chẳng hạn như Olivier Verdier pychebfun, Hàm Python Ch Quashev dự án được lưu trữ tại GitHub.


1
Liên kết này tại trang web Chebfun có tài liệu về cách thực hiện xấp xỉ hợp lý bằng cách sử dụng nó: chebfun.org/docs/guide/guide04.html
Ondřej Čertík
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.