3c47a56babcc43aaf82b2d1cca315d8ae976c189
[scilab.git] / scilab / modules / differential_equations / tests / nonreg_tests / bug_13121.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 //
10 // <-- Non-regression test for bug 13121 -->
11 //
12 // <-- Bugzilla URL -->
13 //http://bugzilla.scilab.org/show_bug.cgi?id=13121
14 //
15 // <-- Short Description -->
16 // ode "rk" option crashed Scilab when the user derivative function failed.
17 t0=0;
18 x0=0; y0=0;
19 // снаряд
20 c = 0.2;
21 s = 0.07;
22 m0 = 15;
23 tT=-1; mT=m0;
24 v0 = 50; teta0 = 0.6;
25 // ракета
26 c = 0.2;
27 s = 0.25;
28 m0 = 500;
29 tT = 1; mT = 250;
30 v0 = 50; teta0 = 0.6;
31 T0=10000;
32 r = 1.29; g = 9.8;
33 function y=m(t)
34     if t <= tT then
35         y = m0*(1-t/tT) + mT*t/tT;
36     else
37         y = mT;
38     end
39 endfunction
40 function y=der_m(t)
41     if t <= tT then
42         y = 1 - (m0 - mT)/tT;
43     else
44         y = 0;
45     end
46 endfunction
47 function y=T(t)
48     if t <= tT then
49         y = T0(1-t/tT);
50     else
51         y = 0;
52     end
53 endfunction
54 function ydot=right(t,pl)
55     x = pl;
56     x(1) = max(x(1),0);
57     x(2) = max(x(2),0);
58     //if x(2) <= 0 & t > 0 then
59     //    disp(t,"tf");
60     //end;
61       ydot(1) = x(3) * cos(x(4));
62       ydot(2) = x(3) * sin(x(4));
63       ydot(3) = 1/m(t)*(T(t)-0.5*c*r*s*x(3)*x(3)) - der_m(t)/m(t)*x(3) - g*sin(x(4));
64       ydot(4) = -g/x(3)*cos(x(4));
65 //    end
66 endfunction
67 t=0:0.01:40;
68 refMsg = msprintf(_("Invalid index."));
69 assert_checkerror("res=ode(""rk"",[x0;y0;v0;teta0;],t0,t,right)", refMsg);