ODE가 뻣뻣한지 수치 적으로 파악하기 위해 명시적인 시간 스텝핑 체계를 사용할 수 있습니까?


10

ODE가 있습니다.

U ( 0 ) = - 1'=1000+에스나는()
(0)=11000001

이 특정 ODE가 뻣뻣하고 분석적으로 있다는 것을 알고 있습니다. 또한 명시 적 (앞으로) 시간 스테핑 방법 (Euler, Runge-Kutta, Adams 등)을 사용하는 경우 시간 단계가 너무 큰 경우 메서드가 매우 큰 오류를 반환해야한다는 것을 알고 있습니다. 그래서 두 가지 질문이 있습니다.

  1. 일반적으로 오류 항에 대한 분석 식을 사용할 수 없거나 도출 할 수없는 경우에 딱딱한 ODE가 어떻게 결정됩니까?

  2. 일반적으로 ODE가 뻣뻣 할 때 "충분히 작은"타임 스텝을 어떻게 결정합니까?


명시 적 방법을 사용하여 강성을 감지하는 표준 방법이 있습니다. 아래에 더 자세한 답변을 찾기가 어려울 수 있으므로이 의견을 여기에 배치하고 있습니다.
David Ketcheson

답변:


6

질문에 대답하려면 :

  1. 내가 아는 한 실제로 정확한 방법을 사용하여 정확한 결과를 얻기 위해 관심있는 시간 척도에 비해 매우 작은 시간 단계가 필요한 경우 ( ODE가 딱딱한 것이 무엇인지에 대한 이 질문에 대한 답변 참조 ) 모든 의도와 목적, 문제가 뻣뻣합니다. 단계 크기에 대한 요구 사항을 결정하려면 적응 시간 단계적 휴리스틱을 갖는 전문가가 작성한 많은 라이브러리 중 하나 (MATLAB 제품군은 SUNDIALS, VODE, DASPK, DASSL, LSODE 등)를 사용하십시오. SUNDIALS 매뉴얼은 패키지가 소요되는 시간 단계의 크기를 결정하기 위해 사용하는 결정 규칙을 설명하고 실제로 사용되는 규칙의 예를 제공합니다.

  2. 다시 말하지만, 실제로 적응하는 시간 단계가있는 라이브러리를 사용하는 것이 더 효율적입니다. 그러나, 고정 된 스텝 크기를 사용하거나, 큰 진동이 있거나 솔루션이 "폭발"하는 것을 발견하면 직접 방법을 코딩하는 경우 시간 단계가 너무 크다고 생각하여 줄일 수 있습니다. 합리적으로 작동하는 수치 해가 나올 때까지 반복하십시오. Ascher, Petzold, Hairer 및 Wanner와 같은 교과서에는 이러한 현상의 좋은 예가 있습니다.


9

더 잘 볼 수있는 방법은 엄격한 문제의 경우 안정적인 명시 적 계산으로 인해 필요한 오차 허용 오차보다 훨씬 작은 오차가 발생한다는 것입니다 .

명시 적 구성표, 특히 내장 Runge-Kutta 쌍을 사용하여 강성을 자동으로 감지하는 좋은 방법이 많이 있습니다. 예를 들어 :

faleichik의 두 번째 예에서, 스텝 크기가 감소함에 따라, 안정한 타임 스텝 임계 값이 초과됨에 따라 일반적인 원하는 허용 오차보다 훨씬 낮은 레벨로 에러가 급격히 감소하는 것을 볼 수 있습니다. 따라서 좋은 오류 추정기는 실제로 문제의 강성을 드러 낼 것입니다. 첫 번째 문제에서, 안정된 스텝 크기로 얻은 오차는 전형적인 강성 허용 범위 내에서 비 ​​강성을 나타냅니다.

결과적으로 충분히 엄격한 오차 허용이 필요한 경우 문제가 해결되지 않습니다.


2
그것들은 당신의 대답을보기 전에 제가 연결하려고했던 논문이었습니다. 물론 +1입니다. 저 또한 추가하자 :) , , 그리고 마지막으로 . 이것은 분명히 잘 연구 된 문제입니다.
JM

9

1. 명백한 방법을 적용하여 강성을 수치 적으로 감지 할 수 있습니까?

  • 일부 ODE에 초기 값 문제가 있다고 가정하십시오 . 상당히 큰 단계 화 τ = 1 과 명시적인 오일러 방법을 사용하여 일정한 단계 크기 τ로 계산 하고 다음 포인트를 얻으십시오.[0,10]τ=1 τ

    여기에 이미지 설명을 입력하십시오

    τ=0.1여기에 이미지 설명을 입력하십시오

    τ=0.1[0,10]

    문제가 뻣뻣합니까? 대답은 아니오입니다 ! 솔루션의 진동을 올바르게 재현하려면 여기에서 작은 단계를 거쳐야합니다 .

    와이'()=2코사인π,와이(0)=1.

  • τ=1

    여기에 이미지 설명을 입력하십시오

    τ=0.1

    여기에 이미지 설명을 입력하십시오

    τ=0.1[0,10]

    이 문제가 뻣뻣합니까? ! 우리는 매우 느리게 변화하는 솔루션을 재현하기 위해 아주 작은 단계를 거쳤습니다. 이것은 비이성적입니다! 여기서 시간 단계의 크기는 명시 적 오일러의 안정성 특성에 의해 제한됩니다 .

    이 문제는

    와이'()=2와이()+/2,와이(0)=1.


결론 : 시간 간격 및 해당 오류에 대한 정보는 강성을 감지하기에 충분하지 않습니다. 또한 얻은 솔루션을 봐야합니다. 느리게 변화하고 stepize가 매우 작 으면 문제가 뻣뻣 할 가능성이 높습니다. 솔루션이 빠르게 진동하고 오류 추정 기술을 신뢰하면이 문제는 해결되지 않습니다.


2. 엄격한 문제를 명시 적 방법으로 통합 할 수있는 최대 단계를 결정하는 방법은 무엇입니까?

자동 단계 제어와 함께 일부 블랙 박스 명시 적 솔버를 사용하는 경우 별도의 조치가 필요하지 않습니다. 소프트웨어가 필요한 단계를 적절히 조정합니다.

[Λ,0]Λ=1000

[2,0]τΛτ

τ2|Λ|.

더 많은 일관성을 원하면 취해야합니다.

τ1|Λ|,
1/|Λ|<τ2/|Λ|

물론 이러한 분석은 주로 알려진 스펙트럼의 선형 문제에 적용 할 수 있습니다. 보다 실질적인 문제를 위해 우리는 수치 강성 검출 방법에 의존해야합니다 (다른 답변의 참고 문헌 및 의견 참조).


David가 링크 한 일부 논문에서 언급했듯이, 고유 고유 값 (적절하게 수정 된)을 찾는 힘 방법은 Jacobian 기반 강성 검출기에 대한 일반적인 선택입니다.
JM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.