함수에 대한 합리적인 근사치의 오픈 소스 구현


15

함수에 대한 합리적인 근사치의 일부 오픈 소스 구현 (Python, C, C ++, Fortran이 좋습니다)을 찾고 있습니다. 기사에 따른 것 [1]. 나는 함수를 제공하고 주어진 간격에서의 근사치와 같은 진폭으로 오차가 진동하고 최적의 근사치 또는 그에 가까운 두 개의 다항식을 돌려줍니다.

내가 찾은 것은 다음과 같습니다.

  • chebfun이 그렇게 할 수있는 것처럼 보이지만 Matlab *에 액세스 할 수 없습니다.

  • Numerical Recipes (NR)의 5-13 "Rational Chebyshev Approximation"섹션에 간단한 프로그램이 있습니다.

  • Mathematica는 경제적 인 근사 근사와 MiniMax 근사를 가지고 있습니다

NR 코드보다 새로운 것이 있는지 (아마도 더 나은 테스트가 있는지) 궁금합니다.

내 응용 프로그램은 하이퍼 지오메트리 시리즈 또는 숫자 취소가있는 수식으로 제공되는 약 10 개의 특수 함수 세트를 가지고 있으며 강력하고 빠르며 정확한 평가 함수를 원합니다. Hartree Fock 계산에서 두 개의 입자 행렬 요소를 계산하는 가장 안쪽 루프. [2]에서 저에게 적합한 함수의 간단한 예를 들었습니다. 보시다시피 직접 수식을 사용하거나 x = 0 정도의 시리즈를 사용하여 SymPy를 사용하여 계산했습니다. 그것은 일종의 작품이지만 정확도는 크지 않습니다. 약 x = 1의 유효 자릿수의 약 절반이 손실됩니다 (그러나 x = 0.1뿐만 아니라 x = 1e5의 경우 거의 모든 유효 자릿수에 정확합니다). 더 나은 근사치를 찾고 있습니다.

[1] Deun, J., & Trefethen, LN (2011). 합리적인 근사치를위한 Carathéodory-Fejér 방법의 강력한 구현. BIT 수치 수학, 51 (4), 1039–1050. doi : 10.1007 / s10543-011-0331-7 ( 2010 년 6 월 전자 인쇄 )

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

(*) 404를 제공하는 chebfun 웹 사이트도 아니지만 Pedro는 반드시 내 공급자 문제라고 제안했습니다.

답변:


4

이것이 도움이 될 수 있습니까? http://www.alglib.net/interpolation/rational.php


1
고마워, 나는 이것이 할 것이라고 생각한다. 나는 그것을 사용하는 법을 배워야합니다. 지금은 시간이 지남에 따라 Mathematica의 MiniMaxApproximation을 사용하여 작업을 완료했지만 오픈 소스 도구를 사용 하여이 작업을 수행하는 방법을 배우고 싶습니다.
Ondřej Čertík

10

일회성 최고 합리적 근사를 수행하는 것은 종종 Remez 알고리즘 의 "수동"반복을 통해 달성 할 수 있습니다 . 실제 에러는 보간 포인트 및 피벗의 에러를 초과한다 (교차 부호 에러를 유지하는 방식으로 이들에 대한 하나 이상의 추측 포인트를 스와핑). 이론을 처음부터 이해하는 좋은 방법입니다. 필요한 정확도가 적당하지 않으면 스프레드 시트 구현을 통해 계산 과정을 느끼고 잘라 내기 및 붙여 넣기를 통해 문제를 조정할 수 있습니다.

간단한 설명을 위해 구간 에서 비 다항식 함수를 고려하십시오 . 엔드 포인트를 통한 secant 라인은 다음과 같습니다. 와이=1/엑스1엑스2여기에 이미지 설명을 입력하십시오

"최대 오류"지점에서 직선을 절반으로 줄이면 두 끝점과 내부의이 임계점을 세는 "등가 동"지점의 절대 오류가 세 개가됩니다. 따라서 매끄러운 볼록 함수에 대한 최상의 선형 다항식 근사치는 거의 검사를 통해 확인할 수 있습니다.

Chebfun 소프트웨어 자체는 오픈 소스입니다 ( BSD 스타일의 라이센스 버전 4.0 이후)를. 당시 사이트 링크로 인해 404 오류가 발생한 이유는 확실하지 않지만 현재 v5.2.1입니다. ( GitHub 저장소 도 있습니다 .) Chebfun 프로젝트는 최적의 합리적인 근사치 이상을 목표로하며, 중심 개념은 구간에서 (일 변량 실제) 함수에 대한 Matlab 벡터 유사 구문입니다.

원을 완성하려면 Matlab이 아닌 Octave에서 작동해야합니다 . 이 있었다 이에 대해 옥타브-테이너 스레드 2010.에서 시작 Chebfun 테이너에 의해 2012 종이 / 저자는 어떤 노력들이 측면에서 옥타브 호환성에 갔다 제안한다.

상기 찾고 Chebfun 관련 프로젝트 페이지 것은 Chebfun 소프트웨어가 오픈 소스이기 때문에,이 포트를 할 수도있을, 또는 올리비에 Verdier의 등이 나와있는 오픈 소스 패키지 중 하나를 사용하도록 제안 pychebfun하는 파이썬 체비 쇼프 기능을 프로젝트 는 GitHub에서 호스팅됩니다.


1
Chebfun 웹 사이트의이 링크는 그것을 사용하여 합리적인 근사를 수행하는 방법에 대한 문서를 가지고 있습니다 : chebfun.org/docs/guide/guide04.html
Ondřej Čertík
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.