Add examples for armax, armax1 & initstate
[scilab.git] / scilab / modules / cacsd / demos / pendulum / simulation.sci
1 //
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) ????-2008 - INRIA
4 //
5 // This file is distributed under the same license as the Scilab package.
6 //
7
8
9
10 function [xdot]=ivpd(t,x)
11 //ydot=ivpd(t,y) non linear equations of the pendulum
12 // y=[x;d(x)/dt,teta,d(teta)/dt].
13 // mb, mc, l must be predefined
14 //!
15 g=9.81;
16 u=0
17 qm=mb/(mb+mc)
18 cx3=cos(x(3))
19 sx3=sin(x(3))
20 d=4/3-qm*cx3*cx3
21 xd4=(-sx3*cx3*qm*x(4)**2+2/(mb*l)*(sx3*mb*g-qm*cx3*u))/d
22 //
23 xdot=[x(2);
24       (u+mb*(l/2)*(sx3*x(4)**2-cx3*xd4))/(mb+mc);
25       x(4);
26       xd4]
27 endfunction
28
29
30 function [y,xdot]=pendu(x,u)
31 //[y,xdot]=pendu(x,u) input (u) - output (y) function of the pendulum
32 //!
33 g=9.81;
34 qm=mb/(mb+mc)
35 cx3=cos(x(3))
36 sx3=sin(x(3))
37 d=4/3-qm*cx3*cx3
38 xd4=(-sx3*cx3*qm*x(4)**2+2/(mb*l)*(sx3*mb*g-qm*cx3*u))/d
39 //
40 xdot=[x(2);
41       (u+mb*(l/2)*(sx3*x(4)**2-cx3*xd4))/(mb+mc);
42       x(4);
43       xd4]
44 //
45 y=[x(1);
46    x(3)]
47 endfunction
48
49
50 function [xdot]=regu(t,x)
51 //xdot=regu(t,x) simulation of the compound system
52 // pendulum - observer - compensator
53 //!
54 xp=x(1:4);xo=x(5:8);
55 u =-kr*xo   //control
56 [y,xpd]=pendu(xp,u)
57 xod=(f-k*h)*xo+k*y+g*u
58 xdot=[xpd;xod]
59 endfunction
60
61