Mercurial > hg > octave-nkf
diff src/DLD-FUNCTIONS/dassl.cc @ 7562:c827f5673321
move tests to individual source files
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 06 Mar 2008 02:27:55 -0500 |
parents | a1dbe9d80eee |
children | 81d6ab3ac93c |
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/dassl.cc +++ b/src/DLD-FUNCTIONS/dassl.cc @@ -488,6 +488,87 @@ } /* + +%% dassl-1.m +%% +%% Test dassl() function +%% +%% Author: David Billinghurst (David.Billinghurst@riotinto.com.au) +%% Comalco Research and Technology +%% 20 May 1998 +%% +%% Problem +%% +%% y1' = -y2, y1(0) = 1 +%% y2' = y1, y2(0) = 0 +%% +%% Solution +%% +%% y1(t) = cos(t) +%% y2(t) = sin(t) +%!function res = f (x, xdot, t) +%! res = [xdot(1)+x(2); xdot(2)-x(1)]; +%!test +%! +%! x0 = [1; 0]; +%! xdot0 = [0; 1]; +%! t = (0:1:10)'; +%! +%! tol = 100 * dassl_options ("relative tolerance"); +%! +%! +%! [x, xdot] = dassl ("f", x0, xdot0, t); +%! +%! y = [cos(t), sin(t)]; +%! +%! assert(all (all (abs (x - y) < tol))); + +%% dassl-2.m +%% +%% Test dassl() function +%% +%% Author: David Billinghurst (David.Billinghurst@riotinto.com.au) +%% Comalco Research and Technology +%% 20 May 1998 +%% +%% Based on SLATEC quick check for DASSL by Linda Petzold +%% +%% Problem +%% +%% x1' + 10*x1 = 0, x1(0) = 1 +%% x1 + x2 = 1, x2(0) = 0 +%% +%% +%% Solution +%% +%% x1(t) = exp(-10*t) +%% x2(t) = 1 - x(1) +%!function res = f (x, xdot, t) +%! res = [xdot(1)+10*x(1); x(1)+x(2)-1]; +%!test +%! +%! x0 = [1; 0]; +%! xdot0 = [-10; 10]; +%! t = (0:0.2:1)'; +%! +%! tol = 500 * dassl_options ("relative tolerance"); +%! +%! +%! [x, xdot] = dassl ("f", x0, xdot0, t); +%! +%! y = [exp(-10*t), 1-exp(-10*t)]; +%! +%! assert(all (all (abs (x - y) < tol))); + +%!test +%! dassl_options ("absolute tolerance", eps); +%! assert(dassl_options ("absolute tolerance") == eps); + +%!error <Invalid call to dassl_options.*> dassl_options ("foo", 1, 2); + +*/ + +/* ;;; Local Variables: *** ;;; mode: C++ *** ;;; End: ***