No BSD License  

Highlights from
rkn86

5.0

5.0 | 1 rating Rate this file 11 Downloads (last 30 days) File Size: 5.38 KB File ID: #3153

rkn86

by Charalampos Tsitouras

 

17 Mar 2003 (Updated 20 Feb 2004)

Solves numerically a system of ODEs of the form d^2 y/ dx^2=f(x,y).

| Watch this File

File Information
Description

rkn86 Integrates a special system of second order ordinary differential equations of the form
d^2 y/dx^2 = f(x,y), y(x0)=y0, y'(x0)=y'0
using an effectivelly 8-stages Runge-Kutta-Nystrom pair of orders 8 and 6.
The method advances using the higher order formula (using local extrapolation).
The results are expected to be better than ODE86 for all tolerances.

based on the code ODE86

The coefficients of the Runge-Kutta-Nystrom pair NEW8(6) are taken from
S. N. Papakostas and Ch. Tsitouras, "High phase-lag order Runge-Kutta and Nystrom pairs",
SIAM J. Sci. Comput. 21(1999) 747-763.

The error control is based on
Ch. Tsitouras and S. N. Papakostas, "Cheap Error Estimation for Runge-Kutta methods", SIAM J. Sci. Comput. 20(1999) 2067-2088.

tested for Matlab version 6.5
URL address: http://users.ntua.gr/tsitoura/

Acknowledgements

The author wishes to acknowledge the following in the creation of this submission:
ode86
This submission has inspired the following:
Vectorized N-Body Equation, RKN1210 - A 12th/10th order Runge-Kutta-Nystrom integrator

MATLAB release MATLAB 6.5 (R13)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (1)
19 Feb 2011 Rody Oldenhuis

I discovered a bug; your error estimation scheme (the two deltas) is incorrect! Take a look at my RKN1210 integrator how to do it; it will significantly improve your integrator's performance.

Theoretically, if you copy-paste your coefficients into my integrator and adjust the for loop limits from 1:17 to 1:8 and pow=1/12 into pow=1/8, your integrator should inherit all the additional features that I implemented :) I haven't tried this, but I think it's worth a shot.

Please login to add a comment or rating.
Updates
20 Feb 2004

In the function call there is the update of time t in the inner stages missing.
It should be
  f(:,j)=feval(..., t+alpha(j)*h, ...);
and not
  f(:,j)=feval(..., t, ...);

Tag Activity for this File
Tag Applied By Date/Time
differential equations Charalampos Tsitouras 22 Oct 2008 06:58:34
rungekuttanystrom Charalampos Tsitouras 22 Oct 2008 06:58:34
mathematics Charalampos Tsitouras 22 Oct 2008 06:58:34
integrate Charalampos Tsitouras 22 Oct 2008 06:58:34

Contact us at files@mathworks.com