1 <?xml version="1.0" encoding="UTF-8"?>
2 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="insertion">
4 <refname>insertion</refname>
5 <refpurpose>insertion/modification dans une
9 <refnamediv xml:id="affectation">
10 <refname>affectation</refname>
11 <refpurpose>affectation partielle d'une variable </refpurpose>
14 <title>Séquence d'appel</title>
18 l(k1)...(kn)(i)=a ou l(list(k1,...,kn,i))=a
19 l(k1)...(kn)(i,j)=a ou l(list(k1,...,kn,list(i,j))=a
23 <title>Paramètres</title>
28 <para>matrice de tout type
47 <term>k1,...kn </term>
49 <para>indices à valeurs entières
56 <para>nouvelles valeurs des termes
63 <title>Description</title>
66 <term>CAS DES MATRICES</term>
70 Si <literal>x</literal> est un tableau <literal>i</literal> et <literal>j</literal> peuvent être :
74 <term>Des scalaires, vecteurs ou matrices</term>
76 <para>Dans ce cas, les valeurs données en
77 indices doivent être strictement positives. Seules les parties
78 entières sont prises en compte.
83 Si <literal>a</literal> est une matrice de dimensions
84 <literal>(size(i,'*'),size(j,'*'))</literal>
85 <literal>x(i,j)=a</literal> renvoie une nouvelle matrice
86 <literal>x</literal> telle que <literal>x(int(i(l)),int(j(k)))=a(l,k)
88 pour <literal>l</literal> variant de 1 à
89 <literal>size(i,'*')</literal> et <literal>k</literal> variant de
90 1 à <literal>size(j,'*')</literal>, les autres composantes
92 initiales de <literal>x</literal> sont inchangées.
97 Si <literal>a</literal> est un scalaire
98 <literal>x(i,j)=a</literal> renvoie une nouvelle matrice
99 <literal>x</literal> telle que <literal>x(int(i(l)),int(j(k)))=a </literal>
100 pour <literal>l</literal> variant de 1 à
101 <literal>size(i,'*')</literal> et <literal>k</literal> variant de
102 1 à <literal>size(j,'*')</literal>, les autres composantes
103 initiales de <literal>x</literal> sont inchangées.
108 Si la valeur maximum de <literal>i</literal> ou
109 <literal>j</literal> dépasse la dimension correspondante de
110 <literal>x</literal>, alors <literal>x</literal> est au préalable agrandie
111 aux dimensions adéquates en stockant des zéros pour les matrices
112 standard, des chaînes vides pour les matrices de chaînes de
113 caractères ou la valeur %F pour les matrices booléennes.
118 <literal>x(i,j)=[]</literal> détruit les lignes
119 spécifiées par <literal>i</literal> si <literal>j</literal> désigne toutes
120 les colonnes de <literal>x</literal> ou détruit les colonnes
121 spécifiées par <literal>j</literal> si <literal>i</literal> désigne toutes
122 les lignes de <literal>x</literal>. Dans tous les autres cas
123 <literal>x(i,j)=[]</literal> produit une erreur.
128 <literal>x(i)=a</literal> où <literal>a</literal> est un
129 vecteur renvoie une nouvelle matrice <literal>x</literal> telle que
130 <literal>x(int(i(l)))=a(l)</literal> pour <literal>l</literal> variant de 1
131 à <literal>size(i,'*')</literal> , les autres composantes
132 initiales de <literal>x</literal> sont inchangées.
137 <literal>x(i)=a</literal> où <literal>a</literal> est un
138 scalaire, renvoie une nouvelle matrice <literal>x</literal> telle que
139 <literal>x(int(i(l)))=a</literal> pour <literal>l</literal> variant de 1 à
140 <literal>size(i,'*')</literal> , les autres composantes
141 initiales de <literal>x</literal> sont inchangées.
144 Si la valeur maximum de <literal>i</literal> dépasse
145 <literal>size(x,1)</literal>, <literal>x</literal> est au préalable agrandie
146 aux dimensions adéquates en stockant des zéros pour les matrices
147 standard, des chaînes vides pour les matrices de chaînes de
148 caractères ou la valeur %F pour les matrices booléennes.
155 <literal>x</literal> est une matrice 1 x 1 <literal>a</literal> peut
156 être un vecteur ligne (resp. colonne) de dimension
157 <literal>size(i,'*')</literal>. La matrice
158 <literal>x</literal> obtenue est un vecteur ligne
167 <literal>x</literal> est un vecteur
168 ligne (resp. colonne) <literal>a</literal> doit être un vecteur
169 ligne (resp. colonne) de dimension
170 <literal>size(i,'*')</literal>
178 <literal>x</literal> est une matrice
179 en général <literal>a</literal> doit être un vecteur ligne ou
180 colonne de dimension <literal>size(i,'*')</literal> et
181 la valeur maximum de<literal>i</literal> ne peut dépasser
182 <literal>size(x,'*')</literal>,
190 <literal>x(i)=[]</literal> supprime les termes
193 spécifiés par <literal>i</literal>.
200 <term>Le : symbole</term>
203 Le symbole <literal> : </literal> signifiant "tous les éléments".
208 <literal>x(i,:)=a</literal> est interprété comme
210 <literal>x(i,1:size(x,2))=a</literal>
215 <literal>x(:,j)=a</literal> est interprété comme
216 <literal>x(1:size(x,1),j)=a</literal>
221 <literal>x(:)=a</literal> renvoie dans
222 <literal>x</literal> la matrice <literal>a</literal> remise en forme en
223 accord avec les dimensions de
224 x. <literal>size(x,'*')</literal> doit être égal
225 à<literal>size(a,'*')</literal>
232 <term>Vecteurs de booléens</term>
236 (<literal>i</literal> ou <literal>j</literal> ) est un vecteur de booléens, il
237 est interprété comme <literal>find(i)</literal> ou <literal>find(j)</literal>,
243 <term>Polynomes</term>
246 Si un indice (<literal>i</literal> ou
247 <literal>j</literal> ) est un vecteur de polynômes ou de polynômes
248 implicites, il est interprété comme <literal>horner(i,m)</literal> ou
249 <literal>horner(j,n)</literal>, respectivement, où <literal>m</literal> et
250 <literal>n</literal> sont les dimensions de <literal>x</literal> associées.
251 Même si cette fonctionnalité marche pour tous les polynômes, il
252 est recommandé d'utiliser des polynômes dans <literal>$</literal>
253 par souci de lisibilité.
261 <term>CAS DES LISTES</term>
266 S'ils sont présents les <literal>ki</literal> donnent le chemin
267 vers un terme d'une sous-liste de la liste
268 <literal>l</literal>. Ils permettent de faire une insertion récursive
269 directe sans utiliser de variable intermédiaire. Les instructions
270 <literal>l(k1)...(kn)(i)=a</literal> et
271 <literal>l(list(k1,...,kn,i)=a)</literal> sont interprétées comme :
274 <literal>lk1 = l(k1)</literal>
275 <literal> .. = .. </literal>
278 <literal>lkn = lkn-1(kn)</literal>
281 <literal>lkn(i) = a</literal>
282 <literal>lkn-1(kn) =lkn</literal>
283 <literal> .. = ..</literal>
286 les instructions<literal>l(k1)...(kn)(i,j)=a</literal> et
287 <literal>l(list(k1,...,kn,list(i,j))=a</literal> sont interprétées
291 <literal>lk1 = l(k1)</literal>
292 <literal> .. = .. </literal>
295 <literal>lkn =lkn-1(kn)</literal>
296 <literal>lkn(i,j) = a</literal>
299 <literal>lkn-1(kn) = lkn</literal>
300 <literal> .. = .. </literal>
303 <literal>l(k1) = lk1</literal>
308 <literal>i</literal> peut être :
312 <para>un scalaire réel positif (seule sa partie entière est prise en compte).
313 <literal>l(0)=a</literal> ajoute un terme "à gauche"
314 de la liste <literal>l(i)=a</literal> affecte <literal>a</literal> au
315 terme <literal>i</literal> de la liste <literal>l</literal>. Si
316 <literal>i>size(l)</literal>, <literal>l</literal> est
317 préalablement agrandie et les termes créés sont de type
318 non-défini. <literal>l(i)=null()</literal> supprime le terme
319 <literal>i</literal>th de la liste.
324 un polynôme. Si <literal>i</literal> est un
326 vecteur de polynômes ou de polynômes implicites il est
327 interprété comme <literal>horner(i,m)</literal> où
328 <literal>m=size(l)</literal>. Même si cette fonctionnalité marche
329 pour tous les polynômes, il est recommandé d'utiliser
330 des polynômes dans <literal>$</literal> par souci de lisibilité.
337 <literal>k1,..kn</literal> peuvent être :
341 <para>un polynôme, interprété comme
342 <literal>horner(ki,m)</literal> ou <literal>m</literal> est la taille de
343 la sous-liste correspondante.
347 <para>une chaîne de caractères associée à un nom
349 d'entrée de sous-liste.
360 <title>Remarque</title>
362 Pour les matrices rationnelles et les systèmes dynamiques
363 linéaires stockés sous forme de représentation d'état, la
364 syntaxe <literal>x(i)</literal> ne doit pas être utilisée pour
365 l'insertion des éléments d'un vecteur, à cause de la
366 confusion possible avec l'insertion des éléments de liste. La
367 syntaxe <literal>x(1,j)</literal> où <literal>x(i,1)</literal> doit être
368 utilisée dans ce cas.
372 <title>Exemples</title>
373 <programlisting role="example"><![CDATA[
379 a(1,3:-1:1)=[77 44 99]
387 a(1,%pi)=1 //équivalent à a(1,3)=1
392 b=[1/%s,(%s+1)/(%s-1)]
395 b(2)=[1 2] // le numérateur
396 // CAS des LISTES (types LIST et TLIST)
400 l(%pi)=1 //équivalent à l(3)=1
401 l(6)=['one more';'added']
404 dts=list(1,tlist(['x';'a';'b'],10,[2 3]));
406 dts(2)('b')(1,2)=-100
409 <refsection role="see also">
410 <title>Voir aussi</title>
411 <simplelist type="inline">
413 <link linkend="find">find</link>
416 <link linkend="horner">horner</link>
419 <link linkend="parentheses">parentheses</link>
422 <link linkend="extraction">extraction</link>