고진동 적분 계산에서 최첨단 기술은 무엇입니까?


23

1 차원과 더 높은 차원의 고진동 적분을 임의의 정밀도로 근사화하는 데있어 최첨단 기술은 무엇입니까?


그것의 나쁜 .. 지금까지 일반적인 방법.

@Gigi : SciComp에 오신 것을 환영합니다! 귀하의 의견은 약간 모호합니다. 당신은 왜 고진동 적분의 근사치에서 최첨단 기술이 나쁘다고 생각하는지 자세히 설명 할 수 있습니까?
Geoff Oxberry

고진동 적분을 계산할 때 "마법의 탄환"이 아직 없다는 것은 사실이지만, 우리는 우리가 가진 것과 관련이 있으며 항상 효과가 있으면 항상 감사합니다.
JM

답변:


19

나는 입방체 (다차원 적분)를 위해 지금하는 일에 전적으로 익숙하지 않기 때문에 직교 공식으로 제한 할 것입니다.

진동 적분의 구적법에 대한 여러 가지 효과적인 방법이 있습니다. 유한 진동 적분에 적합한 방법이 있으며 무한 진동 적분에 대한 방법이 있습니다.

무한 진동 적분의 경우,보다 효과적인 두 가지 방법은 Longman의 방법과 Ooura 및 Mori로 인한 수정 된 이중 지수 구적법입니다. (그러나 Arieh Iserles의이 논문 도 참조하십시오 .)

Longman의 방법은 적분 간격을 분할 한 후 진동 적분을 교번 계열로 변환 한 다음 교번 계열을 시퀀스 변환 방법으로 합산하는 데 의존합니다. 예를 들어, 형태의 진동 적분을 통합 할 때

0f(t)sintdt

하나는 이것을 교대로 합산

k=0kπ(k+1)πf(t)sintdt

이 교호 합의 항은 Romberg 's scheme 또는 Gaussian quadrature와 같은 일부 구적법으로 계산됩니다. Longman의 원래 방법Euler 변환을 사용 했지만 현대적인 구현은 Euler를 Shanks 변환 또는 Levin 변환 과 같은보다 강력한 수렴 가속 방법으로 대체 합니다.

반면에 이중 지수 구적법 은 변수를 영리하게 변경 한 다음 사다리꼴 규칙을 사용하여 변환 된 적분을 수치 적으로 평가합니다.

유한 진동 적분의 경우, Piessens (QUADPACK의 기여자 중 하나)와 Branders는 논문 에서 Clenshaw-Curtis 구적법의 수정 (즉, 정수의 비진 동적 부분의 체비 쇼프 다항식 확장 구성)을 자세히 설명합니다. 반면 Levin의 방법 은 구적법에 대해 배열 방법을 사용합니다. (이전에는 Filon의 방법 인 이전 대기의 더 실용적인 버전이 있다고 들었지만 경험이 없습니다.)


이것들은 내가 기억하는 방법입니다. 진동 적분에 대한 다른 좋은 방법을 잊어 버린 것 같습니다. 이 답변을 기억하면 나중에이 답변을 편집하겠습니다.


11

sin(t)exp(it)J0(t)exp(ig(t))w(t)

처음에는 진동 통합 방법이 특정 발진기에 중점을 두었습니다. 같이 JM가 상기 유수 것들 Filon의 방법 및 한정된 범위 적분 용 Clenshaw-커티스 방법 (두 가지가 밀접하게 관련되어있다), 및 일련의 외삽 기반 방법 및 무한대 적분 용 Ooura 모리의 이중 지수 방법을 포함한다.

보다 최근에는 몇 가지 일반적인 방법이 발견되었습니다. 두 가지 예 :

  1. exp(ig(t))w(t)

  2. Hutebrechs와 Vandewalle의 방법은 정수가 진동하지 않는 복잡한 경로를 따라 분석 연속성을 기반으로합니다 ( Huybrechs and Vandewalle 2006 ).

보다 일반적인 방법의 경우 유한 및 무한 범위 적분 방법 사이에 구별이 필요하지 않습니다. 컴팩트 변환이 무한 범위 적분에 적용될 수 있기 때문에, 여전히 일반적인 방법으로 처리 할 수있는 유한 범위 진동 적분을 초래할 수 있기 때문에 다른 발진기.

Levin의 방법은 치수와 다른 방법을 반복하여 다차원으로 확장 할 수 있지만, 지금까지 문헌에 설명 된 모든 방법은 1 차원 샘플 포인트의 외부 산물 또는 다른 것의 샘플 포인트를 가지고 있습니다 차원에 따라 기하 급수적으로 증가하므로 빠르게 벗어날 수 있습니다. 나는 높은 차원을위한 더 효율적인 방법을 모른다. 고차원의 희소 그리드에서 해당 샘플을 찾을 수있는 경우 응용에 유용합니다.

보다 일반적인 메소드를위한 자동 루틴을 작성하는 것은 대부분의 프로그래밍 언어 (C, Python, Fortran 등)에서 일반적으로 integrand를 함수 / 루틴으로 프로그래밍하고이를 적분기 루틴에 전달할 것으로 예상되는 대부분의 프로그래밍 언어에서 어려울 수 있습니다. 일반적인 방법은 integrand의 구조 (어떤 부분이 진동하고, 어떤 유형의 발진기인지 등)를 알아야하며이를 "블랙 박스"로 취급 할 수 없습니다.


Huybrechs / Vandewalle 논문은 제가 아직 보지 못한 것이므로 +1입니다. Huybrechs / Vandewalle에는 점근 적 확장이 포함되지 않는다는 점을 제외하고는 Temme 및 기타 기능에서 특수 기능을 평가하는 연구와 유사합니다. 또한 Trefethen의 백 자리 챌린지의 첫 번째 문제에 대해 몇 가지 해결사가 비슷한 접근법을 사용했다고 생각합니다.
JM

2

Marnix Van Daele 및 공동 저자의 작업을 확인할 수도 있습니다. 예를 들어 thisthis를 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.