# HG changeset patch # User jwe # Date 939706133 0 # Node ID b9a024ee031236fd4c3ec33e271a649c3fed4855 # Parent 5a691cbef111e79c8cda4a4f0c5ecdac266abe38 [project @ 1999-10-12 05:28:52 by jwe] diff --git a/test/octave.test/diffeq/dassl-1.m b/test/octave.test/diffeq/dassl-1.m new file mode 100644 --- /dev/null +++ b/test/octave.test/diffeq/dassl-1.m @@ -0,0 +1,33 @@ +## 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) + +x0 = [1; 0]; +xdot0 = [0; 1]; +t = (0:1:10)'; + +tol = 100 * dassl_options ("absolute tolerance"); + +function res = f (x, xdot, t) + res = [xdot(1)+x(2); xdot(2)-x(1)]; +endfunction + +[x, xdot] = dassl ("f", x0, xdot0, t); + +y = [cos(t), sin(t)]; + +all (all (abs (x - y) < tol)) diff --git a/test/octave.test/diffeq/dassl-2.m b/test/octave.test/diffeq/dassl-2.m new file mode 100644 --- /dev/null +++ b/test/octave.test/diffeq/dassl-2.m @@ -0,0 +1,36 @@ +## 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) + +x0 = [1; 0]; +xdot0 = [-10; 10]; +t = (0:0.2:1)'; + +tol = 500 * dassl_options ("absolute tolerance"); + +function res = f (x, xdot, t) + res = [xdot(1)+10*x(1); x(1)+x(2)-1]; +endfunction + +[x, xdot] = dassl ("f", x0, xdot0, t); + +y = [exp(-10*t), 1-exp(-10*t)]; + +all (all (abs (x - y) < tol)) diff --git a/test/octave.test/diffeq/lsode-1.m b/test/octave.test/diffeq/lsode-1.m new file mode 100644 --- /dev/null +++ b/test/octave.test/diffeq/lsode-1.m @@ -0,0 +1,33 @@ +## dassl-1.m +## +## Test lsode() 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) + +x0 = [1; 0]; +xdot0 = [0; 1]; +t = (0:1:10)'; + +tol = 500 * lsode_options ("absolute tolerance"); + +function xdot = f (x, t) + xdot = [-x(2); x(1)]; +endfunction + +x = lsode ("f", x0, t); + +y = [cos(t), sin(t)]; + +all (all (abs (x - y) < tol)) diff --git a/test/octave.test/diffeq/lsode-2.m b/test/octave.test/diffeq/lsode-2.m new file mode 100644 --- /dev/null +++ b/test/octave.test/diffeq/lsode-2.m @@ -0,0 +1,13 @@ +function xdotdot = f (x, t) + xdotdot = [x(2); -x(1)]; +endfunction + +x0 = [1; 0]; +t = [0; 2*pi]; +tol = 100 * dassl_options ("absolute tolerance"); + +x = lsode ("f", x0, t); + +y = [1, 0; 1, 0]; + +all (all (abs (x - y) < tol)) diff --git a/test/octave.test/diffeq/lsode-3.m b/test/octave.test/diffeq/lsode-3.m new file mode 100644 --- /dev/null +++ b/test/octave.test/diffeq/lsode-3.m @@ -0,0 +1,13 @@ +function xdot = f (x, t) + xdot = x; +endfunction + +x0 = 1; +t = [0; 1]; +tol = 100 * dassl_options ("absolute tolerance"); + +x = lsode ("f", x0, t); + +y = [1; e]; + +all (all (abs (x - y) < tol))