문제

파생 상품을 계산하는 데 상당히 비용이 많이 드는 (1 차) ODES 시스템이 있습니다.

그러나 파생 상품은 수렴 시리즈로부터 계산되고 경계가 삭제 된 항의 최대 기여에 배치되거나 KD-Tree에 저장된 사전 계산 범위 정보를 사용하여 배치 될 수 있기 때문에 주어진 오류 경계 내에서 상당히 저렴한 계산할 수 있습니다. /Octree 조회 테이블.

불행히도, 나는 이것으로부터 혜택을 볼 수있는 일반적인 Ode 솔버를 찾을 수 없었습니다. 그들은 모두 당신에게 좌표를주고 정확한 결과를 원합니다. (나는 당신을 염두에두고 있습니다. 나는 숫자 레시피 책, Lsode 및 GNU Scientific Library 's Solver의 자료 인 Runge-Kutta에 익숙합니다).

즉, 내가 본 모든 솔버에 대해 derivs 콜백 함수 수락 a t 그리고 배열 x, 그리고 배열을 반환합니다 dx/dt 뒤; 하지만 이상적으로는 콜백을 제공하는 것을 찾고 있습니다. t, x에스, 그리고 허용 가능한 오류의 배열, 그리고받습니다 dx/dt_min 그리고 dx/dt_max 미분 범위는 필요한 정밀도 내에있는 배열이되었다. (아마도 똑같이 유용한 변형이 가능할 것입니다).

이런 종류의 것을 염두에두고 설계된 솔버에 대한 포인터 또는 문제에 대한 대안 적 접근 방식 (나는 이런 것을 원하는 첫 번째 사람이라고 믿을 수 없습니다)은 크게 감사 할 것입니다.

도움이 되었습니까?

해결책 3

이것에 대해 더 생각하면서, 간격 산술이 아마도 핵심 일 것입니다. 나의 derivs 함수는 기본적으로 간격을 반환합니다. Interval Arithmetic을 사용하는 통합자는 x를 AS 간격으로 유지합니다. 내가 관심있는 것은 충분히 작은 오류를 얻는 것입니다. x마지막으로 t. 명백한 접근법은 반복적으로 재 통합되어 샘플의 품질을 향상시키는 것이며, 우리가 허용 가능한 경계가있는 결과를 얻을 때까지 각 반복 각각의 오류를 가장 많이 도입하는 것입니다 (그러나 그것은 질병보다 더 나쁘게 들릴 수 있습니다. 전반적인 효율성). 적응성 단계 크기 제어는 이러한 체계에 잘 맞을 수 있다고 생각하며, "명시 적 오류"와 비교할 수있는 "암시 적"이산화 오류를 유지하기 위해 스텝 크기가 선택되어 간격 범위).

어쨌든, 인터넷 검색 "ODE Solver Intermal Arithmetic"또는 "Interval Ode"가 흥미로운 새롭고 관련성이 많은 것들을 나타냅니다 (vnode 그리고 특히 참조).

다른 팁

대략적으로 말하면, F '가 절대 오류 EPS까지, x0에서 x1로 통합되면, 파생물의 오류에서 발생하는 적분의 오차는 <= eps*(x1 -x0)가됩니다. ODE 솔버에서 나오는 이산화 오류도 있습니다. 큰 EPS*(x1 -x0)가 귀하를위한 방법을 고려하고 ERROR <= EPS로 계산 된 F '값으로 ODE 솔버를 공급하십시오.

나는 이것이 잘 알려진 질문인지 확실하지 않습니다.

많은 알고리즘에서 예, 비선형 방정식 해결, f (x) = 0, 미분 F '(x)의 추정치는 답의 "일반 방향"으로 만 갈 필요가 있기 때문에 Newton의 방법과 같은 것에 사용하는 데 필요한 전부입니다.

그러나이 경우, 파생물은 해결하고있는 (ODE) 방정식의 주요 부분입니다. 파생 상품을 잘못 이해하면 잘못된 대답을 얻을 수 있습니다. F (x)에 대한 근사치만으로 f (x) = 0을 해결하려고하는 것과 같습니다.

또 다른 답변이 제안한 것처럼, g (x)가 오류 용어 인 적용 f (x) + g (x)로 ODE를 설정하면 파생 상품의 오류를 입력 오류와 연관시킬 수 있어야합니다.

단단한 시스템이있는 경우 어떤 형태의 암시 적 방법을 사용하는 경우,이 경우 파생 상품은 Newton 반복 내에서만 사용됩니다. 대략적인 Jacobian을 사용하면 Newton 반복에 대한 2 차 수렴 비용이 많이 들지만 종종 허용됩니다. 또는 (주로 시스템이 크면) Jacobian-Free Newton-Krylov 방법을 사용하여 단계를 해결할 수 있습니다.이 경우 대략적인 Jacobian은 전제 조건이되고 Newton 반복에서 2 차 수렴을 유지합니다.

사용을 살펴 보셨습니까? 오데 세트? ODE 솔버에 대한 옵션을 설정 한 다음 옵션 구조를 네 번째 인수로 전달합니다. 오류 제어 속성 (Reltol, Abstol, Normcontrol)이 가장 관심이있을 수 있습니다. 이것이 정확히 도움이 필요한 종류인지 확실하지 않지만 몇 년 전에 Matlab Ode 기능을 마지막으로 사용한 최선의 제안입니다.

또한 사용자 정의 파생 기능의 경우 파생 상품 계산에 대한 하드 코드 공차 만 있거나 솔버에서 전달하려면 오류 제한이 필요합니까?

내가 많은 기여를하고 있는지 확실하지 않지만 제약 모델링 세계에서는 Lsode, Dverk 및 DGPADM을 사용합니다. Dverk는 멋진 빠른 간단한 주문 5/6 Runge-Kutta 솔버입니다. DGPADM은 좋은 매트릭스-전분자 솔버입니다. ODE가 선형 인 경우 매트릭스 지수가 가장 좋습니다. 그러나 당신의 문제는 조금 다릅니다.

BTW, T 인수는 일반성을 위해서만 있습니다. 나는 T에 의존하는 실제 시스템을 본 적이 없다.

당신은 새로운 이론적 영역에 침입하고있을 수 있습니다. 행운을 빕니다!

추가 : 궤도 시뮬레이션을 수행하는 경우 원뿔형 곡선을 기반으로 사용되는 특별한 방법에 대해 들었습니다.

선형 기본 함수와 미드 포인트 쿼드 레이터가있는 유한 요소 방법으로 확인하십시오. 다음 ODE를 해결하려면 요소 당 f (x), k (x) 및 b (x) 각각의 평가가 필요합니다.

-k (x) u ''(x) + b (x) u '(x) = f (x)

답은 평가의 오류에 비례하는 점별 오류가 발생합니다.

더 부드러운 결과가 필요한 경우 요소 당 위의 각 함수를 2로 평가하여 2 차 기본 함수를 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top