1
// navet.bas : demo de icse
2
// calcul trajectoire optimale de rentree d'une navette spatiale
3
// *************************************************************
7
// les doubles slash introduisent des commentaires
9
t0=0.d0; // instant initial
10
tf=1.d0; // instant final
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)
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
39
nu=nuc+nuv*(nti+ntf+1); // dimension du vecteur des parametres de controle
41
// uc(1,nuc) :controle constant
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
53
// dtu(1,ndtu) :tableau de travail double precision reserve
56
//dtu=[ 249.9, ..//s 1
58
// -.0061592, ..//cx1 3
59
// .621408e-3, ..//cx2 4
60
// -.207040, ..//cz0 5
63
// 3.9860119e14, ..//zmu 8
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
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
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;
106
obs(nob,ny)=0; // matrice d'observation
108
//don=[762, ..//vfin 1
109
// -5*raddeg, ..//gamma final 2
110
// 24384 ]; ..//zfin 3
114
don=don./dtu(1,21:23); // mise a l'echelle
115
nomf='icsenf'; // noms de subroutines de dynamique
117
// changements pour calculer en temps retrograde
120
legfb=' retrograde '; ..
124
nomf='icsenb' ; end ;
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)
131
exec('icseinit.sce');
132
[co,u,g,itv,dtv]=icse(u,nomf,nap,imp);