Bug #10574 fixed - Runge-Kutta-Method failed for vector [x, 1] with x > 9.
[scilab.git] / scilab / modules / differential_equations / tests / nonreg_tests / bug_10574.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2012 - DIGITEO - Allan CORNET
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- Non-regression test for bug 10574 -->
9 //
10 // <-- Bugzilla URL -->
11 //http://bugzilla.scilab.org/show_bug.cgi?id=10574
12 //
13 // <-- Short Description -->
14 // Runge-Kutta-Method failed for vector [x, 1] with x > 9
15
16 dt = 0.25;
17 a = 1;
18 b = a/dt;
19 t = 0:dt:a;
20 t0 = t(1);
21 St = size(t);
22 Dim = 18;
23 x = ones(Dim, 1);
24 X = eye(Dim,Dim);
25
26 function xdot = Test(t, x)
27   xdot = X * x;
28 endfunction
29
30 x = ode('rk', x, t0, t, Test);
31 assert_checkequal(size(x), [18 5]);
32
33 REF_X = [    1.    1.2840254    1.6487213    2.117    2.7182818; ..
34     1.    1.2840254    1.6487213    2.117    2.7182818; ..
35     1.    1.2840254    1.6487213    2.117    2.7182818; ..
36     1.    1.2840254    1.6487213    2.117    2.7182818; ..
37     1.    1.2840254    1.6487213    2.117    2.7182818; ..
38     1.    1.2840254    1.6487213    2.117    2.7182818; ..
39     1.    1.2840254    1.6487213    2.117    2.7182818; ..
40     1.    1.2840254    1.6487213    2.117    2.7182818; ..
41     1.    1.2840254    1.6487213    2.117    2.7182818; ..
42     1.    1.2840254    1.6487213    2.117    2.7182818; ..
43     1.    1.2840254    1.6487213    2.117    2.7182818; ..
44     1.    1.2840254    1.6487213    2.117    2.7182818; ..
45     1.    1.2840254    1.6487213    2.117    2.7182818; ..
46     1.    1.2840254    1.6487213    2.117    2.7182818; ..
47     1.    1.2840254    1.6487213    2.117    2.7182818; ..
48     1.    1.2840254    1.6487213    2.117    2.7182818; ..
49     1.    1.2840254    1.6487213    2.117    2.7182818; ..
50     1.    1.2840254    1.6487213    2.117    2.7182818];
51
52 assert_checkalmostequal(x, REF_X, 0, 1e-7);
53
54
55 Dim = 9;
56 x = ones(Dim, 1);
57 X = eye(Dim, Dim);
58 x = ode('rk', x, t0, t, Test);
59 assert_checkequal(size(x), [9 5]);
60
61
62 REF_X = [    1.    1.2840254    1.6487213    2.117    2.7182818; ..
63     1.    1.2840254    1.6487213    2.117    2.7182818; ..
64     1.    1.2840254    1.6487213    2.117    2.7182818; ..
65     1.    1.2840254    1.6487213    2.117    2.7182818; ..
66     1.    1.2840254    1.6487213    2.117    2.7182818; ..
67     1.    1.2840254    1.6487213    2.117    2.7182818; ..
68     1.    1.2840254    1.6487213    2.117    2.7182818; ..
69     1.    1.2840254    1.6487213    2.117    2.7182818; ..
70     1.    1.2840254    1.6487213    2.117    2.7182818];
71
72 assert_checkalmostequal(x, REF_X, 0, 1e-7);