수치 ODE 솔버 의 소프트웨어 라이브러리 작업을 시작 하려고하며 솔버 구현을위한 테스트를 공식화하는 방법에 어려움을 겪고 있습니다. 내 야심은 결국 라이브러리에는 비 강성 및 뻣뻣한 문제에 대한 솔버와 적어도 하나의 암시 적 솔버 ( 매트랩 의 ode
루틴 기능과 동등하거나 그 이하 )가 포함되므로 테스트 방법론은 다양한 것을 반영해야한다는 것입니다 다른 솔버에 대한 문제 유형과 기준.
내 문제는 이제이 테스트를 시작할 위치를 모른다는 것입니다. 알고리즘의 출력을 테스트하는 몇 가지 다른 방법을 생각할 수 있습니다.
분석 솔루션이있는 문제를 테스트하고 수치 솔루션이 반환 된 모든 데이터 포인트에 대한 허용 수준 내에 있는지 확인하십시오. 여기에는 다른 솔버가 다루기를 원하는 모든 속성 (강성, 암시 적 문제 등)을 나타내는 여러 가지 분석 문제에 대한 지식이 필요합니다.
이 방법 은 솔버 방법 의 결과 를 테스트합니다 . 따라서 솔버가 실제로 작동한다는 보장은 없으며 주어진 테스트 문제에 대해서만 작동한다는 보장은 없습니다 . 따라서 솔버가 작동하는지 자신있게 확인하려면 많은 테스트 문제가 필요하다고 생각합니다.
구현하려는 알고리즘을 사용하여 몇 시간 동안 솔루션을 수동으로 계산 한 다음 솔버와 동일한 작업을 수행하고 결과가 동일한 지 확인하십시오. 이를 위해서는 문제 에 대한 진정한 해결책에 대한 지식이 필요하지 않지만 실제로 많은 실제 작업이 필요합니다.
이 방법은, 다른 한편으로는, 단지 테스트 알고리즘 내게로 괜찮습니다, - 다른 사람이 4 입증 한 경우 일 룽게 - 쿠타 작동하기 위해, 나는 필사적 필요를 느끼지 않는다. 그러나 테스트 데이터를 생성하는 좋은 방법을 알지 못하기 때문에 테스트 사례를 공식화하는 것이 매우 번거로울 것이라고 걱정합니다 (수작업으로 많은 작업이 필요합니다).
위의 두 가지 방법 모두 현재의 지식으로 인해 나에게 심각한 한계가 있습니다. 첫 번째 테스트 문제에 대해 좋은 세트를 알지 못하고 두 번째 테스트 데이터를 생성하는 좋은 방법을 모릅니다.
수치 적 ODE 솔버를 확인하는 다른 방법이 있습니까? 확인해야 할 구현에 대한 다른 기준이 있습니까? ODE 솔버를 테스트하는 데 좋은 (무료) 리소스가 있습니까? 1
편집 :
이 질문은 매우 광범위하기 때문에 조금 명확히하고 싶습니다. 내가 만들고 싶은 테스트 스위트는 두 가지 주요 목적을 채울 것입니다.
해결하려는 문제에 대해 솔버가 예상대로 작동하는지 확인 다시 말해, 뻣뻣하지 않은 문제에 대한 솔버는 뻣뻣한 문제에서 바나나를 사용할 수 있지만 뻣뻣하지 않은 문제에서는 잘 수행해야합니다. 또한 라이브러리에 더 높은 정확도를 제공하는 다른 솔버가있는 경우 "정확한"정도로 매우 정확한 결과를 적용 할 필요가 없습니다. 따라서 제 질문의 일부는 어떤 솔버에 어떤 테스트를 사용해야하는지입니다. 또는 적어도 어떻게 그것을 결정해야 하는가.
라이브러리 설치시 위생 테스트. 이러한 테스트는 정교하거나 시간 소모적 일 필요는 없습니다. 5 초 이내에 실행될 수있는 매우 기본적인 내용이지만, 차트에 이상한 것이 있으면 사용자에게 경고합니다. 따라서 매우 간단한 테스트를 구성 할 수있는 방법이 필요하지만 여전히 라이브러리 상태에 대해 알려줍니다.
1 예,의 주목할만한 예외와 함께, 아주 사소한 예와 강의 노트를 내 눈을 인터넷 검색을 봤는데,하지만 난 무엇을 발견의 대부분은 바리에서 CWI ODE 테스트 세트 내가 얼마나 알고하지 않거나 테스트하려는 것보다 훨씬 더 정교한 솔버를 다루기 때문에 내 목적으로 사용할 수 있습니다 ...