Реалізація з відкритим кодом раціонального наближення до функції


15

Я шукаю реалізацію з відкритим кодом (будь-який з Python, C, C ++, Fortran чудово) раціонального наближення до функції. Щось уздовж статті [1]. Я даю йому функцію, і вона повертає мені два поліноми, співвідношення яких - наближення до заданого інтервалу, а помилка коливається з однаковою амплітудою, і це оптимальне наближення, або близьке до нього.

Ось що я знайшов:

  • Схоже, що chebfun може це зробити, але я не маю доступу до Matlab *.

  • Існує проста програма в розділі 5-13 "Раціональне наближення Чебишева" в числових рецептах (NR).

  • Математика має економічнеРаціональнеприближення та МінімаксАппроксимацію

Мені було цікаво, чи є щось нове (можливо, краще перевірене), ніж код NR.

Моя заявка полягає в тому, що у мене є набір спеціальних функцій, близько 10, які задаються або як гіпергеометричний ряд, або якась формула, яка має числові скасування, і я хочу мати надійну, швидку і точну оціночну функцію, яку називають у внутрішній цикл обчислення двох елементів матриці частинок у розрахунках Хартрі Фока. Я наводжу простий приклад функції, яка працює для мене в [2]. Як ви бачите, я використовував пряму формулу, або серію навколо x = 0, що я обчислював, використовуючи SymPy. Це щось працює, але точність не велика, приблизно x = 1 втрачається приблизно половина значущих цифр (але для x = 0,1, а також x = 1e5 це майже для всіх значущих цифр). Шукаю кращого наближення.

[1] Deun, J., & Trefethen, LN (2011). Надійна реалізація методу Каратеодорі-Фейєра для раціонального наближення. Числова математична BIT, 51 (4), 1039–1050. doi: 10.1007 / s10543-011-0331-7 ( електронний друк червня 2010 р. )

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

(*) Не стосується веб-сайту chebfun, який дає мені 404, але Педро припустив, що це має бути проблемою мого постачальника.

Відповіді:


4

Чи може це допомогти? http://www.alglib.net/interpolation/rational.php


1
Дякую, я думаю, що це вдасться. Мені потрібно навчитися ним користуватися. На даний момент я перебуваю під натиском часу, тому я просто використав MiniMaxApproximation від Mathematica, щоб виконати роботу, але я хочу навчитися робити це за допомогою інструментів open source.
Ondřej Čertík

10

Виконання одноразових найкращих раціональних наближень часто може бути досягнуто "ручними" ітераціями алгоритму Ремеза : інтерполюйте раціональне наближення з (відносними або абсолютними) поперемінними помилками знаків за початковою здогадкою для точок інтерполяції, знайдіть одну (або більше) точок, де фактична помилка перевищує помилку точок інтерполяції та зсуву (замінюючи для них одну або декілька відгаданих точок таким чином, щоб зберегти чергування помилок знаків). Це хороший спосіб зрозуміти теорію з нуля. Коли потрібна точність є скромною, я виявляю, що реалізація електронних таблиць допомагає мені відчути свій шлях через обчислення та адаптувати проблеми за допомогою вирізання та вставки.

у=1/х1х2введіть тут опис зображення

Якщо опустити пряму лінію на половину відстані в точці "максимальної помилки", тоді у нас буде три "осі-коливальні" точки абсолютної помилки підрахунку двох кінцевих точок і цієї критичної точки в інтер'єрі. Таким чином, найкраще лінійне наближення полінома до гладкої опуклої функції можна знайти майже за допомогою огляду.

Саме програмне забезпечення Chebfun є відкритим кодом ( ліцензія у стилі BSD ) з версії 4.0. Не впевнений, чому посилання на їхній сайт, можливо, мали помилку 404 в той час, але вони зараз на v5.2.1. (Вони також мають сховище GitHub .) Проект Chebfun має на меті більш ніж найкращі раціональні наближення, при цьому центральною концепцією є векторний синтаксис Matlab для (одновимірних реальних) функцій на інтервалі.

Для завершення кола потрібно, щоб він працював під Octave, а не Matlab. Була октаву супроводжується нитки про це почалося в 2010. 2012 паперу Chebfun супроводжуючих / автори припускають деякі зусилля було спрямовано на сумісність Octave з їх боку.

Перегляд сторінки проектів, пов’язаних із Chebfun, говорить про те, що через те, що програмне забезпечення Chebfun є відкритим кодом, можливо, можливо зробити цей порт або скористатися одним із перерахованих там пакетів з відкритим кодом, таких як Олів'є Вердієр pychebfun, функції Python Chebyshev проект, що відбувся в GitHub.


1
Це посилання на веб-сайті Chebfun містить документацію, як робити раціональні наближення, використовуючи його: chebfun.org/docs/guide/guide04.html
Ondřej Čertík
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.