~ubuntu-branches/ubuntu/karmic/scilab/karmic

« back to all changes in this revision

Viewing changes to demos/icse/navet.sce

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2002-03-21 16:57:43 UTC
  • Revision ID: james.westby@ubuntu.com-20020321165743-e9mv12c1tb1plztg
Tags: upstream-2.6
ImportĀ upstreamĀ versionĀ 2.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//                navet.bas : demo de icse
 
2
//  calcul trajectoire optimale de rentree d'une navette spatiale
 
3
//  *************************************************************
 
4
//
 
5
// Copyright INRIA
 
6
exec('icse.contexte');
 
7
// les doubles slash introduisent des commentaires
 
8
//
 
9
t0=0.d0;    // instant initial
 
10
tf=1.d0;    // instant final
 
11
dtf=0;
 
12
ermx=1.d-6; // test d'arret absolu sur la valeur du second membre dans
 
13
            // la resolution de l'etat
 
14
iu=[0,0,1]; //  iu   :indications sur la structure du controle
 
15
    //    iu(1)=1 si l'etat initial depend du controle constant,0 sinon
 
16
    //    iu(2)=1 si l'etat initial depend du controle variable,0 sinon
 
17
    //    iu(3)=1 si le second membre depend du controle constant,0 sinon
 
18
nuc=1;      // nombre de parametres independants du temps
 
19
nuv=1;      // nombre de parametres dependants du temps
 
20
ilin=0;     // indicateur de linearite :
 
21
       // 0 pour un systeme non affine
 
22
       // 1 pour un systeme affine dont la partie lineaire n'est pas autonome
 
23
       // ilin=2 pour un systeme affine dont la partie lineaire est autonome
 
24
nti=150;    //nombre de pas de temps correspondant a dti (premier pas de temps)
 
25
dti=tf/nti;
 
26
ntf=00;     // nombre de pas de temps correspondant a dtf (second pas de temps)
 
27
            // si l'on utilise un seul pas de temps,on doit prendre ntf=0
 
28
ny=4;       // dimension de l'etat a un instant donne
 
29
nea=0;      // nombre d'equations algebriques (eventuellement nul)
 
30
itmx=10;    // nombre maximal d'iterations dans la resolution de
 
31
            // l'equation d'etat discrete a un pas de temps donne
 
32
nex=1;      // nombre d'experiences effectuees
 
33
nob=3;      // dimension du vecteur des mesures pour une experience donnee
 
34
            // en un instant donne
 
35
ntob=1;     // nombre d'instants de mesure pour une experience donnee
 
36
ntobi=1;    // nombre d'instants de mesure correspondant a dti (premier
 
37
            // pas de temps)
 
38
//
 
39
nu=nuc+nuv*(nti+ntf+1); // dimension du vecteur des parametres de controle
 
40
//
 
41
//  uc(1,nuc)          :controle constant
 
42
echtf=2000;
 
43
uc=[2500/echtf];
 
44
//  uv(1,nuv*(nti+ntf)):controle variable
 
45
//if nuv>0, uv(1,nuv*(nti+ntf+1))=0; end;
 
46
 alpha0=.20704/.029244; legu='alpha initial : ann. cz';  //annulation cz
 
47
 alpha0=17.391;         legu='alpha initial : finesse max';//finesse maximum
 
48
legu=' navette americaine .'+legu;
 
49
if nuv>0, uv=alpha0*ones(1,nuv*(nti+ntf+1)); end;
 
50
//  itu(1,nitu)        :tableau de travail entier reserve a
 
51
//                      l'utilisateur
 
52
itu=[0];
 
53
//  dtu(1,ndtu)        :tableau de travail double precision reserve
 
54
//                      a l'utilisateur
 
55
raddeg=%pi/180;
 
56
//dtu=[ 249.9,         ..//s      1
 
57
//      .078540,       ..//cx0    2
 
58
//     -.0061592,      ..//cx1    3
 
59
//      .621408e-3,    ..//cx2    4
 
60
//     -.207040,       ..//cz0    5
 
61
//      .029244,       ..//cz1    6
 
62
//       83388,        ..//zm     7
 
63
//     3.9860119e14,   ..//zmu    8
 
64
//     6378166,        ..//rt     9
 
65
//     1.2,            ..//ro0   10
 
66
//     6700,           ..//h     11
 
67
//     raddeg,         ..//      12
 
68
//     echtf,          ..//echtf 13
 
69
//     0,0,0,0,0,0,0,  ..// inutilises    14 a 20
 
70
//     1000,           ..//mise a echelle v    21
 
71
//     1,              ..//mise a echelle gam  22
 
72
//     1.e5,           ..//mise a echelle z    23
 
73
//     1,           ..//mise a echelle l       24
 
74
//     1.e6      ];      //cpenal              25
 
75
dtu=[ 249.9,         ..
 
76
      .078540,       ..
 
77
     -.0061592,      ..
 
78
      .621408e-3,    ..
 
79
     -.207040,       ..
 
80
      .029244,       ..
 
81
       83388,        ..
 
82
     3.9860119e14,   ..
 
83
     6378166,        ..
 
84
     1.2,            ..
 
85
     6700,           ..
 
86
     raddeg,         ..
 
87
     echtf,          ..
 
88
     0,0,0,0,0,0,0,  ..
 
89
     1000,           ..
 
90
     1,              ..
 
91
     1.e5,           ..
 
92
     1,           ..
 
93
     1.e6      ];      //cpenal              25
 
94
//
 
95
y0=[7803, -1*raddeg, 121920, 0]; // etat initial
 
96
//          (valeur arbitraire si iu(1) ou iu(2) est non nul)
 
97
y0=y0./dtu(1,21:24);   //mise a l'echelle de y0
 
98
//  tob(1,ntob)        :instants de mesure (compatibilite avec ntob
 
99
//                      et ntobi)
 
100
tob=[1];
 
101
binf=-20*ones(1,nu);//  borne inf des parametres
 
102
binf(1,1)=2500/echtf;
 
103
bsup=40*ones(1,nu);// borne sup des parametres
 
104
bsup(1,1)=4000/echtf;
 
105
//
 
106
obs(nob,ny)=0; // matrice d'observation
 
107
//
 
108
//don=[762,            ..//vfin         1
 
109
//     -5*raddeg,      ..//gamma final  2
 
110
//     24384    ];     ..//zfin         3
 
111
don=[762,            ..
 
112
     -5*raddeg,      ..
 
113
     24384    ];
 
114
don=don./dtu(1,21:23);      // mise a l'echelle
 
115
nomf='icsenf';   // noms de subroutines de dynamique
 
116
legfb=' croissant ';
 
117
// changements pour calculer en temps retrograde
 
118
retro=1;
 
119
if retro>0;
 
120
legfb=' retrograde '; ..
 
121
  don1=don; ..
 
122
  don=y0(1,1:3); ..
 
123
  y0(1,1:3)=don1; ..
 
124
  nomf='icsenb' ; end ;
 
125
//
 
126
nap=20;     // nombre d'appels du simulateur
 
127
imp=2;      // niveau de debug pour optim
 
128
large=100;  // taille de nu au dela de laquelle on choisit un optimiseur
 
129
// pour les problemes de grande taille (alg='gc' dans l'appel de optim)
 
130
//
 
131
exec('icseinit.sce');   
 
132
[co,u,g,itv,dtv]=icse(u,nomf,nap,imp);
 
133
 
 
134
 
 
135