RKN1210 - A 12th/10th order Runge-Kutta-Nyström integrator

버전 2.1 (42.4 KB) 작성자: Rody Oldenhuis
Integrator for second-order ODE's with very stringent error tolerances.
다운로드 수: 3.4K
업데이트 날짜: 2020/5/2

RKN1210 12th/10th order Runge-Kutta-Nyström integrator
RKN1210() is a 12th/10th order variable-step numerical integrator for second-order ordinary differential equations of the form
y'' = f(t, y) (1)
with initial conditions

y(t0) = y0
y'(t0) = yp0 (2)

This second-order differential equation is integrated with a Runge-Kutta-Nyström method using 17 function evaluations per step. RKN12(10) is a very high-order method, to be used in problems with *extremely* stringent error tolerances.

The RKN-class of integrators is especially suited for problems of type (1). Compared to a classic Runge-Kutta integration scheme, the same accuracy can be obtained with fewer function evaluations. Also, it has been shown in various studies that this particular integration method is overall more efficient than (symplectic) multi-step or extrapolation methods that give the same accuracy.

RKN1210's behavior is very similar MATLAB's ODE-integrator suite; you can set options via ODESET, and input and output values are also practically the same.

Both output functions and event functions are fully supported.

The construction of RKN12(10) is described in
High-Order Embedded Runge-Kutta-Nyström Formulae
J. R. DORMAND, M. E. A. EL-MIKKAWY, AND P. J. PRINCE
IMA Journal of Numerical Analysis (1987) 7, 423-430

Coefficients obtained from
http://www.tampa.phys.ucl.ac.uk/rmat/test/rknint.f
These are also available in any format on request to these authors.

If you find this work useful, please consider a small donation:
https://www.paypal.me/RodyO/3.5

인용 양식

Rody Oldenhuis (2024). RKN1210 - A 12th/10th order Runge-Kutta-Nyström integrator (https://github.com/rodyo/FEX-RKN1210/releases/tag/v2.1), GitHub. 검색 날짜: .

MATLAB 릴리스 호환 정보
개발 환경: R2010a
모든 릴리스와 호환
플랫폼 호환성
Windows macOS Linux
카테고리
Help CenterMATLAB Answers에서 Ordinary Differential Equations에 대해 자세히 알아보기
도움

도움 준 파일: Vectorized N-Body Equation

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

GitHub 디폴트 브랜치를 사용하는 버전은 다운로드할 수 없음

버전 게시됨 릴리스 정보
2.1

See release notes for this release on GitHub: https://github.com/rodyo/FEX-RKN1210/releases/tag/v2.1

2.0.0.0

Description update
- implemented NormControl
- the demo was broken
- error estimation used max() instead of min()
- renamed output.h -> output.stepsize and output.delta -> output.estimated_error

See GitHub for way more details (255 char limit here)

1.9.0.0

fixed divide-by-zero error for isolated cases where f turns all-zero

1.8.0.0

- Misc. bugfixes (minor)
- Implemented support for deval(). Note that MATLAB built-in deval() does not support rkn1210; a customized version is in the making.

1.7.0.0

- Found & removed some stray debugging code
- Corrected name & doc (ö instead of o)

1.6.0.0

- Fixed 2 bugs (thanks everyone!)
- Corrected & improved error handling
- It should be possible to use RKN1210 on R2008a and up
- Improved memory performance a tad
- Small stylistic updates to demo

1.5.0.0

Improvements regarding performance and memory usage.

1.4.0.0

bugfix for missing "index" variable on numel(tspan)>2 as noted by Tarek

1.3.0.0

- Removed bug inherited from RKN86; the error estimates there were all wrong. Now RKN1210 integrates at least 50x faster!
- Updated demo; included Earth+J2 example.

1.2.0.0

- Fixed 2 bugs: 1) exitflag = 3 was never assigned or described in the argument [output] 2) intermediate results were erased by event functions and only the event's zero was returned
- Improved performance a bit by pre-assigning the output arrays

1.1.0.0

- Interactive demonstration included
- implemented support for event functions
and output functions
- corrected various bugs, most notably the
(incorrectly) flipped output when tspan(2) < tspan(1)
- improved error handling

1.0.0.0

이 GitHub 애드온의 문제를 보거나 보고하려면 GitHub 리포지토리로 가십시오.
이 GitHub 애드온의 문제를 보거나 보고하려면 GitHub 리포지토리로 가십시오.