1
<?xml version="1.0" encoding="utf-8"?>
2
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
3
<!ENTITY app "<application>Genius Mathematics Tool</application>">
4
<!ENTITY appname "Genius">
5
<!ENTITY appversion "1.0.17">
6
<!ENTITY date "June 2013">
7
<!ENTITY legal SYSTEM "legal.xml">
8
<!ENTITY manrevision "0.2">
11
<!ENTITY le "≤">
12
<!ENTITY ge "≥">
13
<!ENTITY lsquo "‘">
14
<!ENTITY rsquo "’">
15
<!--<!ENTITY gel-function-list SYSTEM "gel-function-list.xml">-->]>
17
(Do not remove this comment block.)
18
Maintained by the GNOME Documentation Project
19
http://developer.gnome.org/projects/gdp
20
Template version: 2.0 beta
21
Template last modified Apr 11, 2002
23
<!-- =============Document Header ============================= -->
24
<book id="index" lang="fr">
25
<!-- please do not change the id; for translations, change lang to -->
26
<!-- appropriate code -->
28
<abstract role="description"><para>Manuel de l'Outil de maths Genius.</para></abstract>
29
<title>Manuel de Genius</title>
32
<year>1997-2013</year>
33
<holder>Jiří (George) Lebl</holder>
37
<holder>Kai Willadsen</holder>
38
</copyright><copyright><year>2010-11</year><holder>Bruno Brouard (annoa.b@gmail.com)</holder></copyright><copyright><year>2011</year><holder>Luc Pionchon (pionchon.luc@gmail.com)</holder></copyright>
39
<!-- translators: uncomment this:
42
<holder>ME-THE-TRANSLATOR (Latin translation)</holder>
50
<legalnotice id="legalnotice">
51
<para>Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License, Version 1.1 ou ultérieure publiée par la Free Software Foundation sans section inaltérable, sans texte de première page de couverture ni texte de dernière page de couverture. Vous trouverez un exemplaire de cette licence en suivant ce <ulink type="help" url="ghelp:fdl">lien</ulink> ou dans le fichier COPYING-DOCS fourni avec le présent manuel.</para>
52
<para>Ce manuel fait partie de la collection de manuels GNOME distribués selon les termes de la licence de documentation libre GNU. Si vous souhaitez distribuer ce manuel indépendamment de la collection, vous devez joindre un exemplaire de la licence au document, comme indiqué dans la section 6 de celle-ci.</para>
54
<para>La plupart des noms utilisés par les entreprises pour distinguer leurs produits et services sont des marques déposées. Lorsque ces noms apparaissent dans la documentation GNOME et que les membres du projet de Documentation GNOME sont informés de l'existence de ces marques déposées, soit ces noms entiers, soit leur première lettre est en majuscule.</para>
56
<para>LE PRÉSENT DOCUMENT ET SES VERSIONS MODIFIÉES SONT FOURNIS SELON LES TERMES DE LA LICENCE DE DOCUMENTATION LIBRE GNU SACHANT QUE : <orderedlist>
58
<para>LE PRÉSENT DOCUMENT EST FOURNI « TEL QUEL », SANS AUCUNE GARANTIE, EXPRESSE OU IMPLICITE, Y COMPRIS, ET SANS LIMITATION, LES GARANTIES DE MARCHANDABILITÉ, D'ADÉQUATION À UN OBJECTIF PARTICULIER OU DE NON INFRACTION DU DOCUMENT OU DE SA VERSION MODIFIÉE. L'UTILISATEUR ASSUME TOUT RISQUE RELATIF À LA QUALITÉ, À LA PERTINENCE ET À LA PERFORMANCE DU DOCUMENT OU DE SA VERSION DE MISE À JOUR. SI LE DOCUMENT OU SA VERSION MODIFIÉE S'AVÉRAIT DÉFECTUEUSE, L'UTILISATEUR (ET NON LE RÉDACTEUR INITIAL, L'AUTEUR, NI TOUT AUTRE PARTICIPANT) ENDOSSERA LES COÛTS DE TOUTE INTERVENTION, RÉPARATION OU CORRECTION NÉCESSAIRE. CETTE DÉNÉGATION DE RESPONSABILITÉ CONSTITUE UNE PARTIE ESSENTIELLE DE CETTE LICENCE. AUCUNE UTILISATION DE CE DOCUMENT OU DE SA VERSION MODIFIÉE N'EST AUTORISÉE AUX TERMES DU PRÉSENT ACCORD, EXCEPTÉ SOUS CETTE DÉNÉGATION DE RESPONSABILITÉ ; </para>
61
<para>EN AUCUNE CIRCONSTANCE ET SOUS AUCUNE INTERPRÉTATION DE LA LOI, QU'IL S'AGISSE D'UN DÉLIT CIVIL (Y COMPRIS LA NÉGLIGENCE), CONTRACTUEL OU AUTRE, L'AUTEUR, LE RÉDACTEUR INITIAL, TOUT PARTICIPANT OU TOUT DISTRIBUTEUR DE CE DOCUMENT OU DE SA VERSION MODIFIÉE, OU TOUT FOURNISSEUR DE L'UNE DE CES PARTIES NE POURRA ÊTRE TENU RESPONSABLE À L'ÉGARD DE QUICONQUE POUR TOUT DOMMAGE DIRECT, INDIRECT, PARTICULIER, OU ACCIDENTEL DE TOUT TYPE Y COMPRIS, SANS LIMITATION, LES DOMMAGES LIÉS À LA PERTE DE CLIENTÈLE, À UN ARRÊT DE TRAVAIL, À UNE DÉFAILLANCE OU UN MAUVAIS FONCTIONNEMENT INFORMATIQUE, OU À TOUT AUTRE DOMMAGE OU PERTE LIÉE À L'UTILISATION DU DOCUMENT ET DE SES VERSIONS MODIFIÉES, MÊME SI LADITE PARTIE A ÉTÉ INFORMÉE DE L'ÉVENTUALITÉ DE TELS DOMMAGES.</para>
67
<!-- This file contains link to license for the documentation (GNU FDL), and
68
other legal stuff such as "NO WARRANTY" statement. Please do not change
72
<author role="maintainer">
73
<firstname>Jiří</firstname>
74
<surname>Lebl</surname>
76
<orgname>Université de Wisconsin-Madison</orgname>
77
<address> <email>jirka@5z.com</email> </address>
81
<firstname>Kai</firstname>
82
<surname>Willadsen</surname>
84
<orgname>Université de Queensland, Australie</orgname>
85
<address> <email>kaiw@itee.uq.edu.au</email> </address>
89
<!-- This is appropriate place for other contributors: translators,
90
maintainers, etc. Commented out by default.
92
<othercredit role="translator">
93
<firstname>Latin</firstname>
94
<surname>Translator 1</surname>
96
<orgname>Latin Translation Team</orgname>
97
<address> <email>translator@gnome.org</email> </address>
99
<contrib>Latin translation</contrib>
105
<!-- According to GNU FDL, revision history is mandatory if you are -->
106
<!-- modifying/reusing someone else's document. If not, you can omit it. -->
107
<!-- Remember to remove the &manrevision; entity from the revision entries other
109
<!-- than the current revision. -->
110
<!-- The revision numbering system for GNOME manuals is as follows: -->
111
<!-- * the revision number consists of two components -->
112
<!-- * the first component of the revision number reflects the release version of the GNOME desktop. -->
113
<!-- * the second component of the revision number is a decimal unit that is incremented with each revision of the manual. -->
114
<!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that -->
115
<!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. -->
116
<!-- When the desktop release version changes to V3.x, the revision number of the manual changes -->
117
<!-- to V3.0, and so on. -->
118
<!-- This is unmaintained quite a bit so screw this it just makes things
119
ugly and we don't update the manrevision stuff anyway
122
<revnumber>&manrevision;</revnumber>
125
<para role="author">Jiri (George) Lebl
126
<email>jirka@5z.com</email>
131
<revnumber>0.1</revnumber>
132
<date>September 2004</date>
134
<para role="author">Kai Willadsen
135
<email>kaiw@itee.uq.edu.au</email>
140
<revnumber>Genius Calculator Manual</revnumber>
141
<date>August 2004</date>
143
<para role="author">Jiri (George) Lebl
144
<email>jirka@5z.com</email>
153
<revnumber>0.2</revnumber>
154
<date>June 2013</date>
156
<para role="author">Jiri (George) Lebl <email>jirka@5z.com</email></para>
160
<releaseinfo>This manual describes version 1.0.17 of Genius.
163
<title>Votre avis</title>
164
<para>Pour signaler un problème ou faire une suggestion concernant l'application <application>Outil de maths Genius</application> ou le présent manuel, procédez comme indiqué à la <ulink url="ghelp:gnome-feedback" type="help">page de réactions sur GNOME</ulink>.</para>
165
<!-- Translators may also add here feedback address for translations -->
169
<!-- ============= Introduction =============================== -->
170
<chapter id="genius-introduction">
171
<title>Introduction</title>
172
<para>L'application <application>Outil de maths Genius</application> est un calculateur générique qui peut être utilisé comme calculatrice de bureau, outil éducatif en mathématiques et peut même être utile pour la recherche. Le langage utilisé dans l'<application>Outil de maths Genius</application> a été conçu pour être « mathématique » dans le sens où il devrait être « what you mean is what you get » (« ce que vous pensez est ce que vous obtenez »). C'est bien sûr un objectif pas complètement atteignable. L'<application>Outil de maths Genius</application> peut utiliser des rationnels, des entiers de précision arbitraire et des nombres à virgule flottante avec différentes précisions en utilisant la bibliothèque GMP. Il prend en charge les nombres complexes en utilisant la notation cartésienne. Il sait comment manipuler correctement les vecteurs et les matrices et prend en charge l'algèbre linéaire élémentaire. Le langage de programmation autorise la définition de fonctions et de variables utilisateurs et la modification de certains paramètres.</para>
174
<para>Il existe deux versions de l'<application>Outil de maths Genius</application>. L'une est la version graphique de GNOME qui inclut une interface de style IDE et la possibilité de tracer des fonctions à une ou deux variables. L'autre, la version en ligne de commande, n'a pas besoin de GNOME mais bien sûr, elle n'implémente aucune fonctionnalité qui requiert l'interface graphique.</para>
176
<para>Ce manuel décrit principalement la version graphique du calculateur mais bien sûr le langage de programmation est le même. Il ne manque à la version en ligne de commande que les possibilités graphiques et toutes les autres fonctionnalités qui requièrent l'interface graphique.</para>
180
<!-- =========== Getting Started ============================== -->
181
<chapter id="genius-getting-started">
182
<title>Premiers pas</title>
184
<sect1 id="genius-to-start">
185
<title>Lancement de l'<application>Outil de maths Genius</application></title>
186
<para>Vous pouvez démarrer l'<application>Outil de maths Genius</application> d'une des manières suivantes :</para>
189
<term>Menu <guimenu>Applications</guimenu></term>
191
<para>En fonction de votre système d'exploitation et de sa version, l'élément de menu pour l'<application>Outil de maths Genius</application> peut apparaître à différents endroits. Cela peut être dans les sous-menus <guisubmenu>Éducation</guisubmenu>, <guisubmenu>Accessoires</guisubmenu>, <guisubmenu>Bureautique</guisubmenu>, <guisubmenu>Science</guisubmenu> ou d'autres similaires en fonction de vos réglages personnels. Le nom de l'entrée de menu que vous recherchez est <application>Outil de maths Genius</application>. Une fois localisé, cliquez dessus pour démarrer l'<application>Outil de maths Genius</application>.</para>
195
<term>Boîte de dialogue <guilabel>Lancer une application</guilabel></term>
197
<para>Il se peut que l'entrée de menu ne soit pas accessible pour votre système d'exploitation. Dans ce cas, vous pouvez ouvrir la boîte de dialogue <guilabel>Lancer une application</guilabel> et saisir <command>gnome-genius</command>.</para>
201
<term>Ligne de commande</term>
203
<para>Pour démarrer la version GNOME de l'<application>Outil de maths Genius</application>, saisissez <command>gnome-genius</command>.</para>
204
<para>Pour démarrer seulement la version en ligne de commande, exécutez la commande <command>genius</command>. Cette version ne comprend pas d'environnement graphique et certaines fonctionnalités comme le tracé de graphiques ne sont pas disponibles.</para>
210
<sect1 id="genius-when-start">
211
<title>Démarrage de Genius</title>
212
<para>Lorsque vous démarrez la version GNOME de l'<application>Outil de maths Genius</application>, la fenêtre <xref linkend="mainwindow-fig"/> apparaît.</para>
214
<figure id="mainwindow-fig">
215
<title>Fenêtre de l'<application>Outil de maths Genius</application></title>
219
<imagedata fileref="figures/genius_window.png" format="PNG" scalefit="1"/>
222
<phrase>Affiche <application>Outil de maths Genius</application> la fenêtre principale. Contient la barre de titre, la barre de menus, la barre d'outils et la zone de travail. La barre de menu contient <guilabel>Fichier</guilabel>, <guilabel>Édition</guilabel>, <guilabel>Calculatrice</guilabel>, <guilabel>Paramètres</guilabel> et <guilabel>Aide</guilabel>.</phrase>
228
<para>La fenêtre de l'<application>Outil de maths Genius</application> contient les éléments suivants :</para>
231
<term>Barre de menus</term>
233
<para>Les menus de la barre de menus contiennent toutes les commandes dont vous aurez besoin pour travailler avec les fichiers dans l'<application>Outil de maths Genius</application>. Le menu <guilabel>Fichier</guilabel> contient les éléments pour charger et enregistrer des éléments et créer de nouveaux programmes. La commande <guilabel>Charger et exécuter...</guilabel> n'ouvre pas de nouvelle fenêtre pour le programme mais exécute seulement le programme directement. Elle est équivalente à la commande <command>load</command>.</para>
234
<para>Le menu <guilabel>Calculateur</guilabel> contrôle le moteur de calcul. Il vous permet de lancer le programme actuellement sélectionné ou d'interrompre le calcul en cours. Vous pouvez également afficher l'expression complète de la dernière réponse (c'est utile si la dernière expression est trop grande pour tenir sur la console) ou afficher une liste des valeurs de toutes les variables définies par l'utilisateur. Enfin, il permet de tracer des fonctions en utilisant une boîte de dialogue conviviale.</para>
235
<para>Les autres menus contiennent les mêmes fonctions classiques qui apparaissent dans d'autres applications.</para>
239
<term>Barre d'outils</term>
241
<para>La barre d'outils contient un sous-ensemble des commandes accessibles à partir de la barre de menus.</para>
245
<term>Zone de travail</term>
247
<para>La zone de travail est la principale méthode d'interaction avec l'application.</para>
248
<para>La zone de travail ne contient initialement que l'onglet <guilabel>Console</guilabel> qui est la principale façon d'interagir avec le calculateur. Vous pouvez saisir ici des expressions et les résultats sont immédiatement affichés après avoir appuyé sur la touche Entrée.</para>
249
<para>Vous pouvez également écrire des programmes plus longs qui peuvent apparaître dans des onglets séparés et peuvent être enregistrés dans des fichiers pour pouvoir les reprendre plus tard.</para>
257
<!-- ================ Usage =================================== -->
258
<chapter id="genius-usage">
259
<title>Utilisation de base</title>
261
<sect1 id="genius-usage-workarea">
262
<title>Utilisation de la zone de travail</title>
264
<para>Normalement, vous interagissez avec le calculateur dans l'onglet <guilabel>Console</guilabel> de la zone de travail. Si vous n'utilisez que la version texte de l'application alors la console est la seule chose disponible. Si vous voulez utiliser l'<application>Outil de maths Genius</application> en tant que calculatrice seulement, saisissez vos expressions ici et elles seront évaluées.</para>
266
<para>Saisissez vos expressions dans la zone de travail <guilabel>Console</guilabel>, appuyez sur la touche Entrée et l'expression est évaluée. Les expressions sont écrites dans un langage appelé GEL. L'expression GEL la plus simple ressemble à des mathématiques. Par exemple <screen><prompt>genius> </prompt><userinput>30*70 + 67^3.0 + ln(7) * (88.8/100)</userinput>
267
</screen> ou <screen><prompt>genius> </prompt><userinput>62734 + 812634 + 77^4 mod 5</userinput>
268
</screen> ou <screen><prompt>genius> </prompt><userinput>| sin(37) - e^7 |</userinput>
269
</screen> ou <screen><prompt>genius> </prompt><userinput>sum n=1 to 70 do 1/n</userinput>
270
</screen> (cette dernière est une série harmonique de 1 à 70).</para>
271
<para>Pour obtenir une liste des fonctions et commandes, saisissez : <screen><prompt>genius> </prompt><userinput>help</userinput>
272
</screen> Si vous souhaitez obtenir plus d'aide sur une fonction précise, saisissez : <screen><prompt>genius> </prompt><userinput>help NomDeLaFonction</userinput>
273
</screen> Pour afficher ce manuel, saisissez : <screen><prompt>genius> </prompt><userinput>manual</userinput>
275
<para>Supposons que vous ayez auparavant enregistré un programme contenant des commandes GEL dans un fichier et que vous vouliez maintenant les exécuter. Pour charger ce programme à partir du fichier <filename>chemin/vers/programme.gel</filename>, saisissez <screen><prompt>genius> </prompt><userinput>load chemin/vers/programme.gel</userinput></screen>
276
L'<application>Outil de maths Genius</application> garde la trace du répertoire actuel. Pour afficher la liste des fichiers dans le répertoire actuel, saisissez <command>ls</command>, pour changer de répertoire, saisissez <userinput>cd répertoire</userinput> comme dans un shell de commande unix.</para>
279
<sect1 id="genius-usage-create-program">
280
<title>Création d'un programme</title>
281
<para>Pour commencer à écrire un nouveau programme, choisissez <menuchoice><guimenu>Fichier</guimenu><guimenuitem>Nouveau programme</guimenuitem></menuchoice>. Un nouvel onglet apparaît dans la zone de travail. Vous pouvez écrire un programme <link linkend="genius-gel">GEL</link> dans cet espace de travail. Après avoir écrit votre programme, vous pouvez l'exécuter à l'aide de la commande <menuchoice><guimenu>Calculateur</guimenu><guimenuitem>Exécuter</guimenuitem></menuchoice>. Cela lance votre programme et affiche toutes les sorties dans l'onglet <guilabel>Console</guilabel>. Exécuter un programme est équivalent à prendre le texte du programme et à le saisir dans la console. La seule différence est que cette entrée est faite indépendamment de la console et que seule la sortie apparaît dans la console. <menuchoice><guimenu>Calculateur</guimenu><guimenuitem>Exécuter</guimenuitem></menuchoice> exécute toujours le programme actuellement sélectionné, même si vous êtes dans l'onglet <guilabel>Console</guilabel>. Le programme actuellement sélectionné est celui dont l'onglet est en gras. Pour sélectionner un autre programme, il suffit de cliquer sur son onglet.</para>
282
<para>Pour enregistrer le programme que vous venez d'écrire, choisissez <menuchoice><guimenu>Fichier</guimenu><guimenuitem>Enregistrer sous...</guimenuitem></menuchoice></para>
285
<sect1 id="genius-usage-open-program">
286
<title>Ouverture et lancement d'un programme</title>
287
<para>Pour ouvrir un fichier, choisissez <menuchoice><guimenu>Fichier</guimenu><guimenuitem>Ouvrir</guimenuitem></menuchoice>. Un nouvel onglet contenant le fichier apparaît dans la zone de travail. Vous pouvez l'utiliser pour modifier le fichier.</para>
288
<para>Pour lancer un programme à partir d'un fichier, choisissez <menuchoice><guimenu>Fichier</guimenu><guimenuitem>Charger et exécuter...</guimenuitem></menuchoice>. Le programme est lancé sans être ouvert dans un onglet séparé. C'est équivalent à la commande <command>load</command>.</para>
293
<!-- ============= Plotting ============================== -->
294
<chapter id="genius-gel-plotting">
295
<title>Tracé de graphiques</title>
297
<para>Le tracé de graphiques n'est disponible que dans la version graphique GNOME. Tous les tracés accessibles à partir de l'interface graphique sont disponibles à partir de la fenêtre <guilabel>Création de graphiques</guilabel>. Vous pouvez accéder à cette fenêtre, soit en cliquant sur le bouton <guilabel>Tracer</guilabel> de la barre d'outils ou en sélectionnant <guilabel>Tracer</guilabel> dans le menu <guilabel>Calculateur</guilabel>. Vous pouvez également accéder aux fonctionnalités de tracer en utilisant les <link linkend="genius-gel-function-list-plotting">fonctions de tracé</link> du langage GEL. Consultez <xref linkend="genius-gel"/> pour apprendre comment saisir des expressions compréhensibles par Genius.</para>
299
<sect1 id="genius-line-plots">
300
<title>Tracé de lignes</title>
301
<para>Pour tracer des fonctions réelles d'une variable, ouvrez la fenêtre <guilabel>Création de graphiques</guilabel>. Vous pouvez aussi utiliser la fonction <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> en ligne de commande (consultez sa documentation).</para>
302
<para>Une fois que vous avez cliqué sur le bouton <guilabel>Tracer</guilabel>, une fenêtre contenant des onglets apparaît. Vous devez être dans l'onglet <guilabel>Tracé de lignes</guilabel> et dans celui-ci, vous devez être dans l'onglet <guilabel>Fonctions / Expressions</guilabel> (consultez <xref linkend="lineplot-fig"/>).</para>
304
<figure id="lineplot-fig">
305
<title>Fenêtre Création de graphiques</title>
309
<imagedata fileref="figures/line_plot.png" format="PNG" scalefit="1"/>
312
<phrase>Affiche la fenêtre pour tracer des graphiques.</phrase>
319
Type expressions with <userinput>x</userinput> as
320
the independent variable into the textboxes. Alternatively you can give names of functions such as
321
<userinput>cos</userinput> rather then having to type <userinput>cos(x)</userinput>.
322
You can graph up to ten functions. If you make a mistake and Genius cannot
323
parse the input it will signify this with a warning icon on the right of the text
324
input box where the error occurred, as well as giving you an error dialog.
325
You can change the ranges of the dependent and independent variables in the bottom
327
The <varname>y</varname> (dependent) range can be set automatically by turning on the <guilabel>Fit dependent axis</guilabel>
329
The names of the variables can also be changed.
330
Pressing the <guilabel>Plot</guilabel> button produces the graph shown in <xref linkend="lineplot2-fig"/>.
333
<figure id="lineplot2-fig">
334
<title>Fenêtre contenant une courbe</title>
338
<imagedata fileref="figures/line_plot_graph.png" format="PNG" scalefit="1"/>
341
<phrase>Le graphe produit.</phrase>
347
<para>À partir de là, vous pouvez imprimer le graphe, créer une version postscript encapsulé ou PNG du graphe ou modifier le zoom. Si l'axe dépendant n'a pas été configuré correctement, Genius peut l'avoir ajusté en cherchant les extrema des fonctions tracées.</para>
349
<para>Pour tracer à partir de la ligne de commande, consultez la documentation de la fonction <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
352
<sect1 id="genius-parametric-plots">
353
<title>Courbes paramétriques</title>
355
In the create plot window, you can also choose the <guilabel>Parametric</guilabel> notebook
356
tab to create two dimensional parametric plots. This way you can
357
plot a single parametric function. You can either specify the
358
points as <varname>x</varname> and <varname>y</varname>, or giving a single complex number
359
as a function of the variable <varname>t</varname>.
360
The range of the variable <varname>t</varname> is given explicitly, and the function is sampled
361
according to the given increment.
362
The <varname>x</varname> and <varname>y</varname> range can be set
363
automatically by turning on the <guilabel>Fit dependent axis</guilabel>
364
checkbox, or it can be specified explicitly.
365
See <xref linkend="paramplot-fig"/>.
368
<figure id="paramplot-fig">
369
<title>Onglet pour les courbes paramétriques</title>
373
<imagedata fileref="figures/parametric.png" format="PNG" scalefit="1"/>
376
<phrase>Onglet pour tracer paramétrique dans la fenêtre <guilabel>Création de graphiques</guilabel>.</phrase>
383
An example of a parametric plot is given in
384
<xref linkend="paramplot2-fig"/>.
385
Similar operations can be
386
done on such graphs as can be done on the other line plots.
387
For plotting using the command line see the documentation of the
388
<link linkend="gel-function-LinePlotParametric"><function>LinePlotParametric</function></link> or
389
<link linkend="gel-function-LinePlotCParametric"><function>LinePlotCParametric</function></link> function.
392
<figure id="paramplot2-fig">
393
<title>Courbe paramétrique</title>
397
<imagedata fileref="figures/parametric_graph.png" format="PNG" scalefit="1"/>
400
<phrase>Courbe paramétrique produite</phrase>
408
<sect1 id="genius-slopefield-plots">
409
<title>Champ de directions</title>
410
<para>Dans la fenêtre de création de graphiques, vous pouvez également sélectionner l'onglet <guilabel>Champ de directions</guilabel> pour créer un graphique de champ de directions à deux dimensions. Des opérations, similaires à celles qui peuvent être réalisées sur les tracés de lignes, peuvent être réalisées sur des graphiques de ce type. Pour réaliser des graphiques en ligne de commande, consultez la documentation de la fonction <link linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>.</para>
412
<para>Quand un champ de directions est actif, un menu supplémentaire <guilabel>Solveur</guilabel> est disponible, il vous permet d'afficher la boîte de dialogue du solveur. Dans celle-ci, vous pouvez faire tracer à Genius des solutions spécifiques pour les conditions initiales fournies. Vous pouvez soit indiquer des conditions initiales spécifiques dans la boîte de dialogue ou cliquer sur le graphique directement pour indiquer le point de départ. Tant que la boîte de dialogue du solveur est active, la fonction de zoom par clic et déplacement ne fonctionne pas. Vous devez d'abord fermer la boîte de dialogue si vous voulez zoomer avec votre souris.</para>
414
<para>Le solveur utilise la méthode standard de Runge-Kutta. Les graphiques restent sur l'écran jusqu'à ce qu'ils soient effacés. Le solveur s'arrête à chaque fois qu'il atteint les limites de la fenêtre du graphique. Le fait de zoomer ne modifie pas les limites ou paramètres des solutions, vous devez les effacer et les redessiner avec les paramètres appropriés. Vous pouvez utiliser la fonction <link linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link> pour tracer les solutions à partir de la ligne de commande ou dans des programmes.</para>
418
<sect1 id="genius-vectorfield-plots">
419
<title>Champ de vecteurs</title>
420
<para>Dans la fenêtre de création de graphiques, vous pouvez également sélectionner l'onglet <guilabel>Champ de vecteurs</guilabel> pour créer un graphique de champ de vecteurs à deux dimensions. Des opérations, similaires à celles qui peuvent être réalisées sur les tracés de lignes, peuvent être réalisées sur des graphiques de ce type. Pour réaliser des graphiques en ligne de commande, consultez la documentation de la fonction <link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>.</para>
422
<para>Par défaut, la direction et l'amplitude du champ de vecteurs sont affichées. Pour n'afficher que la direction, cochez la case appropriée pour normaliser la longueur des flèches.</para>
424
<para>Quand un champ de vecteurs est actif, un menu supplémentaire <guilabel>Solveur</guilabel> est disponible, vous permettant d'afficher la boîte de dialogue du solveur. Dans celle-ci, vous pouvez faire tracer à Genius des solutions spécifiques pour les conditions initiales fournies. Vous pouvez soit indiquer des conditions initiales spécifiques dans la boîte de dialogue ou cliquer sur le graphique directement pour indiquer le point de départ. Tant que la boîte de dialogue du solveur est active, la fonction de zoom par clic et déplacement ne fonctionne pas. Vous devez d'abord fermer la boîte de dialogue si vous voulez zoomer avec votre souris.</para>
426
<para>Le solveur utilise la méthode standard de Runge-Kutta. Les graphiques restent sur l'écran jusqu'à ce qu'ils soient effacés. Le fait de zoomer ne modifie pas les limites ou paramètres des solutions, vous devez effacer et les redessiner avec les paramètres appropriés. Vous pouvez utiliser la fonction <link linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link> pour tracer les solutions à partir de la ligne de commande ou dans des programmes.</para>
430
<sect1 id="genius-surface-plots">
431
<title>Tracé de surfaces</title>
432
<para>Genius peut aussi tracer des surfaces. Sélectionnez l'onglet <guilabel>Tracé de surface</guilabel> dans l'onglet principal de la fenêtre de <guilabel>Création de graphiques</guilabel>. Dans celui-ci, vous pouvez indiquer une expression simple qui doit utiliser soit les variables indépendantes <varname>x</varname> et <varname>y</varname> ou la variable complexe <varname>z</varname> (où <varname>x</varname> est la partie réelle de <varname>z</varname> et <varname>y</varname> sa partie imaginaire). Par exemple, pour tracer le module de la fonction cosinus pour des arguments complexes, vous pouvez saisir <userinput>|cos(z)|</userinput> ce qui est équivalent à <userinput>|cos(x+1i*y)|</userinput> (consultez <xref linkend="surfaceplot-fig"/>). Pour réaliser des graphiques en ligne de commande, consultez la documentation de la fonction <link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.</para>
434
The <varname>z</varname> range can be set automatically by turning on the <guilabel>Fit dependent axis</guilabel>
438
<figure id="surfaceplot-fig">
439
<title>Graphique de surface</title>
443
<imagedata fileref="figures/surface_graph.png" format="PNG" scalefit="1"/>
446
<phrase>Module de la fonction cosinus complex.</phrase>
456
<!-- ============= GEL ====================================== -->
457
<chapter id="genius-gel">
458
<title>Fondamentaux GEL</title>
461
GEL stands for Genius Extension Language. It is the language you use
462
to write programs in Genius. A program in GEL is simply an
463
expression that evaluates to a number.
464
<application>Genius Mathematics Tool</application> can be used as a simple calculator, or as a
465
powerful theoretical research tool. The syntax is meant to
466
have as shallow of a learning curve as possible, especially for use
470
<sect1 id="genius-gel-values">
471
<title>Types de données</title>
473
<para>Les données GEL peuvent être des <link linkend="genius-gel-values-numbers">nombres</link>, des <link linkend="genius-gel-values-booleans">booléens</link> ou des <link linkend="genius-gel-values-strings">chaînes de caractères</link>. Les données peuvent, entre autre, être utilisées dans des calculs, attribuées à des variables et renvoyées par des fonctions.</para>
475
<sect2 id="genius-gel-values-numbers">
476
<title>Nombres</title>
477
<para>Les entiers sont les premiers types de nombres GEL. Les entiers s'écrivent de façon habituelle. <programlisting>1234
478
</programlisting> Les nombres hexadécimaux et octaux peuvent être écrit à la manière du langage C. Par exemple : <programlisting>0x123ABC
480
</programlisting> Vous pouvez aussi saisir des nombres dans n'importe quelle base en utilisant la notation <literal><base>\<nombre></literal>. Les chiffres plus grands que 10 utilisent des lettres tout comme pour l'hexadécimal. Par exemple, un nombre en base 23 pourrait s'écrire : <programlisting>23\1234ABCD
481
</programlisting></para>
483
<para>Le deuxième type de nombres en GEL est celui des rationnels. Les rationnels sont simplement obtenus en divisant deux entiers. Il serait donc possible d'écrire : <programlisting>3/4
484
</programlisting> pour obtenir trois quarts. Les rationnels acceptent également la notation fractionnelle mixte, donc afin d'obtenir un et trois dixièmes, vous pouvez écrire : <programlisting>1 3/10
485
</programlisting></para>
487
<para>Le type suivant est celui des nombres à virgule flottante. Ils sont saisis de la même manière qu'en C. Vous pouvez utiliser <literal>E</literal>, <literal>e</literal> ou <literal>@</literal> pour délimiter l'exposant. Notez que l'utilisation d'un délimiteur d'exposant implique un flottant même s'il n'y a pas de point séparateur des décimales dans le nombre. Exemples : <programlisting>1.315
493
</programlisting> Lorsque Genius affiche un flottant, il ajoute toujours <computeroutput>.0</computeroutput> même si le nombre est entier. C'est pour rappeler que les nombres à virgule flottante sont considérés comme des quantités imprécises. Lorsqu'un nombre est écrit en utilisant la notation scientifique, c'est toujours un flottant et, par conséquent, Genius n'affiche pas le <computeroutput>.0</computeroutput>.</para>
496
The final type of number in gel is the complex numbers. You can enter a complex number as a sum of real and imaginary parts. To add an imaginary part, append an <literal>i</literal>. Here are examples of entering complex numbers:
504
<para>Lorsque vous saisissez des nombres imaginaires, il doit y avoir un nombre devant le <literal>i</literal>. Si vous utilisez <literal>i</literal> tout seul, Genius l'interprète comme une référence à la variable <varname>i</varname>. Si vous avez besoin de faire référence à <literal>i</literal> tout seul, utilisez <literal>1i</literal> à la place.</para>
506
<para>Afin de pouvoir utiliser la notation en fraction mixte avec des nombres imaginaires, vous devez mettre la fraction mixte entre parenthèses (par exemple, <userinput>(1 2/5)i</userinput>).</para>
512
<sect2 id="genius-gel-values-booleans">
513
<title>Booléens</title>
514
<para>Genius prend également en charge nativement les données booléennes. Les deux constantes booléennes sont <constant>true</constant> (vrai) et <constant>false</constant> (faux) ; ces identifiants peuvent être utilisés comme n'importe quelle autre variable. Vous pouvez aussi utiliser les identifiants <constant>True</constant>, <constant>TRUE</constant>, <constant>False</constant> et <constant>FALSE</constant> comme alias de ces précédents.</para>
515
<para>Là où une expression booléenne est attendue, vous pouvez utiliser une grandeur booléenne ou toute expression qui produit soit un nombre soit un booléen. Si Genius a besoin d'évaluer un nombre en tant que booléen, il interprète 0 comme <constant>false</constant> et tout autre nombre comme <constant>true</constant>.</para>
516
<para>Vous pouvez également faire des calculs avec des données booléennes. Par exemple : <programlisting>( (1 + true) - false ) * true
517
</programlisting> est identique à : <programlisting>( (true or true) or not false ) and true
518
</programlisting> Seules l'addition, la soustraction et la multiplication sont prises en charge. Si vous mélangez des nombres avec des booléens dans une expression alors les nombres sont convertis en booléens comme indiqué ci-dessus. Cela signifie que, par exemple : <programlisting>1 == true
519
</programlisting> vaut toujours <constant>true</constant> puisque 1 est converti en <constant>true</constant> avant d'être comparé à <constant>true</constant>.</para>
523
<sect2 id="genius-gel-values-strings">
524
<title>Chaînes de caractères</title>
525
<para>Tout comme les nombres et les booléens, les chaînes en GEL peuvent être enregistrées dans des variables et transmises à des fonctions. Vous pouvez également concaténer une chaîne avec une autre en utilisant l'opérateur plus. Par exemple, <programlisting>a=2+3;"Le résultat est : "+a
526
</programlisting> crée la chaîne : <programlisting>Le résultat est : 5
527
</programlisting> Vous pouvez également utiliser des séquences d'échappement comme <literal>\n</literal>,<literal>\t</literal>,<literal>\b</literal>,<literal>\a</literal> et <literal>\r</literal>. Pour obtenir un <literal>\</literal> ou un <literal>"</literal> dans une chaîne, vous devez les faire précéder d'un <literal>\</literal>. Par exemple : <programlisting>"Barre oblique : \\ Guillemets : \" Tabulations : \t1\t2\t3"
528
</programlisting> produit la chaîne : <programlisting>Barre oblique : \ Guillemets : " Tabulations : 1 2 3
529
</programlisting></para>
530
<para>Vous pouvez en plus utiliser la fonction <function>string</function> de la bibliothèque pour convertir n'importe quoi en chaîne. Par exemple : <programlisting>string(22)
531
</programlisting> renvoie <programlisting>"22"
532
</programlisting> Les chaînes peuvent être également comparées avec les opérateurs <literal>==</literal> (égal à), <literal>!=</literal> (différent de) et <literal><=></literal> (comparaison).</para>
536
<sect2 id="genius-gel-values-null">
538
<para>Il existe une grandeur spéciale appelée <constant>null</constant>. Il n'est pas possible de faire des calculs avec elle et rien n'est affichée lorsqu'elle est renvoyée. Par conséquent, <constant>null</constant> est utile lorsque vous voulez qu'une expression n'affiche rien. La valeur <constant>null</constant> peut être obtenue lorsque vous saisissez un point « <literal>.</literal> », la constante <constant>null</constant> ou rien. Par rien, nous voulons dire que si vous terminez une expression par un séparateur <literal>;</literal>, c'est équivalent de la terminer par un séparateur suivi d'un <constant>null</constant>.</para>
539
<para>Exemple : <programlisting>x=5;.
541
</programlisting></para>
542
<para>Certaines fonctions renvoient <constant>null</constant> quand aucune valeur ne peut être renvoyée ou quand une erreur survient. La grandeur <constant>null</constant> est aussi utilisée comme vecteur ou matrice vide ou comme une référence vide.</para>
547
<sect1 id="genius-gel-variables">
548
<title>Utilisation des variables</title>
550
<para>Syntaxe : <programlisting>NomDeVariable
551
</programlisting> Exemple : <screen><prompt>genius> </prompt><userinput>e</userinput>
555
<para>Pour évaluer une variable elle-même, il suffit de saisir le nom de la variable. Cela renvoie la valeur de la variable. Vous pouvez utiliser une variable n'importe où, où vous utiliseriez normalement un nombre ou une chaîne. De plus, les variables sont indispensables pour définir des fonctions qui possèdent des arguments (consultez <xref linkend="genius-gel-functions-defining"/>).</para>
558
<title>Utilisation de la complétion à l'aide de la touche Tab</title>
559
<para>Vous pouvez utiliser la complétion à l'aide de la touche Tab pour que Genius complète les noms de variable pour vous. Essayez de saisir les premières lettres du nom et appuyez sur la touche <userinput>Tab</userinput>.</para>
563
<title>Noms de variable sensibles à la casse</title>
564
<para>Les noms de variable sont sensibles à la casse. Cela signifie que les variables appelées <varname>bonjour</varname>, <varname>BONJOUR</varname> et <varname>Bonjour</varname> sont toutes différentes.</para>
568
<sect2 id="genius-gel-variables-setting">
569
<title>Attribution de variables</title>
570
<para>Syntaxe : <programlisting><![CDATA[<identifier> = <value>
571
<identifier> := <value>]]>
572
</programlisting> Exemple: <programlisting>x = 3
574
</programlisting></para>
576
<para>Pour attribuer une variable, utilisez les opérateurs <literal>=</literal> ou <literal>:=</literal>. Ces opérateurs fixent la valeur de la variable et renvoient le nombre que vous y avez placé donc vous pouvez écrire des choses comme cela : <programlisting>a = b = 5
577
</programlisting></para>
579
<para>Les opérateurs <literal>=</literal> et <literal>:=</literal> peuvent tous les deux être utilisés pour définir des variables. La différence entre les deux est que l'opérateur <literal>:=</literal> agit toujours comme un opérateur d'attribution alors que l'opérateur <literal>=</literal> peut être interprété comme une opération de test d'égalité lorsqu'il est utilisé dans un contexte où une expression booléenne est attendue.</para>
581
<para>Pour les problèmes concernant le champ d'application des variables, consultez <xref linkend="genius-gel-variables-global"/>.</para>
584
<sect2 id="genius-gel-variables-built-in">
585
<title>Variables internes</title>
586
<para>GEL possède un certain nombre de « variables », telles que <varname>e</varname>, <varname>pi</varname> ou <varname>GoldenRatio</varname>. Ce sont des constantes largement utilisées qui possèdent une valeur prédéfinie et il n'est pas possible de leur attribuer de nouvelles valeurs. Il y a un certain nombre d'autres variables intégrées. Consultez <xref linkend="genius-gel-function-list-constants"/> pour une liste complète.</para>
590
<sect2 id="genius-gel-previous-result">
591
<title>Variable « Résultat précédent »</title>
592
<para>Les variables <varname>Ans</varname> et <varname>ans</varname> (answer : réponse) peuvent être utilisées pour obtenir le résultat de la dernière expression. Par exemple, si vous avez fait un calcul, pour ajouter 389 au résultat précédent vous pouvez saisir : <programlisting>Ans+389
593
</programlisting></para>
597
<sect1 id="genius-gel-functions">
598
<title>Utilisation des fonctions</title>
600
<para>Syntaxe : <programlisting>NomDeLaFonction(argument1, argument2, ...)
601
</programlisting> Exemple : <programlisting>Factorial(5)
604
</programlisting> Pour évaluer une fonction, saisissez le nom de la fonction, suivi par les arguments de la fonction (s'il y en a) entre parenthèses. Cela renvoie le résultat de l'application de la fonction avec ses arguments. Le nombre d'arguments de la fonction peut, bien sûr, être différent pour chaque fonction.</para>
606
<para>Il y a beaucoup de fonctions intégrées, telles que <function>sin</function>, <function>cos</function> et <function>tan</function>. Vous pouvez utiliser la fonction intégrée <function>help</function> pour obtenir une liste des fonctions disponibles ou consultez <xref linkend="genius-gel-function-list"/> pour un listing complet.</para>
609
<title>Utilisation de la complétion à l'aide de la touche Tab</title>
610
<para>Vous pouvez utiliser la fonction de complétion à l'aide de la touche Tab pour que Genius complète les noms de fonction pour vous. Essayez de saisir les quelques premières lettres du nom et appuyez sur <userinput>Tab</userinput>.</para>
614
<title>Noms de fonction sensibles à la casse</title>
615
<para>Les noms des fonctions sont sensibles à la casse. Cela signifie que les fonctions appelées <function>fairecela</function>, <function>FAIRECELA</function> et <function>Fairecela</function> sont toutes différentes.</para>
619
<sect2 id="genius-gel-functions-defining">
620
<title>Définition de fonctions</title>
621
<para>Syntaxe : <programlisting><![CDATA[function <identifier>(<comma separated arguments>) = <function body>
622
<identifier> = (`() = <function body>)
623
]]></programlisting> Le caractère accent grave <literal>`</literal> indique une fonction anonyme. En l'apposant à un nom de variable, en réalité vous définissez une fonction.</para>
625
<para>Une fonction prend zéro argument ou plus, séparés par des virgules et renvoie le résultat du corps de la fonction. Le fait de définir ses propres fonctions est une question de commodité ; un usage possible est d'avoir un ensemble de fonctions définies dans des fichiers GEL que Genius peut charger afin de les rendre accessibles. Exemple : <programlisting>function addup(a,b,c) = a+b+c
626
</programlisting> alors <userinput>addup(1,4,9)</userinput> donne 14.</para>
629
<sect2 id="genius-gel-functions-variable-argument-lists">
630
<title>Liste d'arguments variable</title>
631
<para>Si vous ajoutez <literal>...</literal> après le dernier nom d'argument dans la déclaration de fonction alors Genius permet la transmission d'un nombre quelconque d'arguments à la place de cet argument. Si aucun argument n'est transmis alors cet argument est défini à <constant>null</constant>. Sinon, c'est un vecteur ligne contenant tous les arguments. Par exemple, <programlisting>function f(a,b...) = b
632
</programlisting> alors <userinput>f(1,2,3)</userinput> donne <computeroutput>[2,3]</computeroutput> tandis que <userinput>f(1)</userinput> donne <constant>null</constant>.</para>
636
<sect2 id="genius-gel-functions-passing-functions">
637
<title>Une fonction comme argument d'une autre fonction</title>
639
<para>Dans Genius, il est possible de transmettre une fonction comme argument d'une autre fonction. Cela peut être fait en utilisant soit des « nœuds de fonction », soit des fonctions anonymes.</para>
641
<para>Si vous ne saisissez pas les parenthèses après un nom de fonction, la fonction est renvoyée sous la forme d'un « nœud de fonction », au lieu d'être évaluée. Le nœud de fonction peut ensuite être transmis à une autre fonction. Par exemple : <programlisting>function f(a,b) = a(b)+1;
644
</programlisting></para>
645
<para>Pour transmettre des fonctions qui ne sont pas encore définies, vous pouvez utiliser une fonction anonyme (consultez <xref linkend="genius-gel-functions-defining"/>) donc si vous voulez transmettre une fonction sans lui donner de nom, la syntaxe est la suivante : <programlisting><![CDATA[function(<comma separated arguments>) = <function body>
646
`(<comma separated arguments>) = <function body>
647
]]></programlisting> Exemple : <programlisting>function f(a,b) = a(b)+1;
649
</programlisting> renvoie la valeur 5.</para>
653
<sect2 id="genius-gel-functions-operations">
654
<title>Opérations sur les fonctions</title>
655
<para>Certaines fonctions permettent à des opérations arithmétiques et à certaines fonctions à un seul argument telles que <function>exp</function> ou <function>ln</function> d'agir sur la fonction. Par exemple, <programlisting>exp(sin*cos+4)
656
</programlisting> renvoie une fonction qui prend <varname>x</varname> et renvoie <userinput>exp(sin(x)*cos(x)+4)</userinput>. C'est fonctionnellement équivalent de saisir <programlisting>`(x) = exp(sin(x)*cos(x)+4)
657
</programlisting> Cette opération peut être utile pour définir rapidement des fonctions. Par exemple, pour créer une fonction appelée <varname>f</varname> pour réaliser l'opération ci-dessus, vous pouvez simplement saisir : <programlisting>f = exp(sin*cos+4)
658
</programlisting> Cela peut également être utilisé pour tracer des graphiques. Par exemple, pour tracer sinus au carré, vous pouvez saisir : <programlisting>LinePlot(sin^2)
659
</programlisting></para>
662
<para>Toutes les fonctions ne peuvent pas être utilisées de cette façon. Par exemple, lorsque vous utilisez une opération binaire, les fonctions doivent prendre le même nombre d'arguments.</para>
669
<sect1 id="genius-gel-absolute-value-modulus">
670
<title>Valeur absolue / module</title>
671
<para>Vous pouvez prendre la valeur absolue de quelque chose en l'entourant de <literal>|</literal>. Par exemple : <programlisting>|a-b|</programlisting></para>
672
<para>Si l'expression est un nombre complexe, le résultat est le module (distance à partir de l'origine). Par exemple : <userinput>|3 * e^(1i*pi)|</userinput> renvoie 3.</para>
675
<sect1 id="genius-gel-separator">
676
<title>Séparateur</title>
677
<para>En GEL, si vous voulez saisir plus d'une commande, vous devez utiliser l'opérateur <literal>;</literal> qui est une façon de séparer des expressions. Une telle expression combinée renvoie le résultat de la dernière expression, donc si vous saisissez ceci : <programlisting>3 ; 5
678
</programlisting> la valeur 5 est renvoyée.</para>
679
<para>La présence de parenthèses peut parfois être nécessaire pour rendre l'expression non ambiguë, plus particulièrement si le <literal>;</literal> n'est pas la primitive la plus haute. Cela diffère légèrement des autres languages de programmation pour lesquels le <literal>;</literal> indique la fin des instructions alors qu'en GEL, c'est en fait un opérateur binaire. Si vous êtes familier avec le pascal, cela doit être une seconde nature. Genius peut cependant vous faire croire que c'est en quelque sorte un terminateur si un <literal>;</literal> est trouvé à la fin d'une parenthèse ou d'un bloc, genius lui ajoute alors un nœud <constant>null</constant> comme si vous aviez saisi <userinput>;null</userinput>. C'est utile au cas où vous ne vouliez pas renvoyer une valeur dans une boucle par exemple, ou si vous voulez gérer le renvoi d'information de manière différente. Notez que cela ralentit légèrement le programme si c'est exécuté trop souvent car un opérateur supplémentaire est impliqué.</para>
682
<sect1 id="genius-gel-comments">
683
<title>Commentaires</title>
685
GEL is similar to other scripting languages in that <literal>#</literal> denotes
686
a comments, that is text that is not meant to be evaluated. Everything beyond the
687
pound sign till the end of line will just be ignored. So
688
<programlisting># This is just a comment
689
# every line in a comment must have its own pond sign
690
# in the next line we set x to the value 123
696
<sect1 id="genius-gel-modular-evaluation">
697
<title>Évaluation modulaire</title>
699
Genius implements modular arithmetic.
700
To use it you just add "mod <integer>" after
701
the expression. Example:
702
<programlisting>2^(5!) * 3^(6!) mod 5</programlisting>
703
It could be possible to do modular arithmetic by computing with integers and then modding in the end with
704
the <literal>%</literal> operator, which simply gives the remainder, but
705
that may be time consuming if not impossible when working with larger numbers.
706
For example, <userinput>10^(10^10) % 6</userinput> will simply not work (the exponent
707
will be too large), while
708
<userinput>10^(10^10) mod 6</userinput> is instanteneous. The first expression first tries to compute the integer
709
<userinput>10^(10^10)</userinput> and then find remainder after division by 6, while the second expression evaluates
710
everything modulo 6 to begin with.
712
<para>Vous pouvez calculer l'inverse de nombres modulo des entiers juste en utilisant des nombres rationnels (bien sûr, l'inverse doit exister). Exemples : <programlisting>10^-1 mod 101
713
1/10 mod 101</programlisting> Vous pouvez aussi faire de l'évaluation modulaire avec des matrices y compris prendre l'inverse, mettre à la puissance ou multiplier. Exemple : <programlisting>A = [1,2;3,4]
715
A*B mod 5</programlisting> Cela doit donner la matrice identité car B est l'inverse de A modulo 5.</para>
716
<para>Certaines fonctions telles que <link linkend="gel-function-sqrt"><function>sqrt</function></link> ou <link linkend="gel-function-log"><function>log</function></link> fonctionnent différemment en mode modulaire. Elles vont alors fonctionner comme leur version discrète travaillant avec l'ensemble des entiers que vous avez sélectionnés, par exemple, <programlisting>genius> sqrt(4) mod 7
720
= 4</programlisting>La fonction <function>sqrt</function> renvoie en fait toutes les racines carrées possibles.</para>
722
Do not chain mod operators, simply place it at the end of the computation, all computations in the expression on the left
723
will be carried out in mod arithmetic. If you place a mod inside
724
a mod, you will get unexpected results. If you simply want to
725
mod a single number and control exactly when remainders are
726
taken, best to use the <literal>%</literal> operator. When you
727
need to chain several expressions in modular arithmetic with
728
different divisors, it may be best to just split up the expression into several and use
729
temporary variables to avoid a mod inside a mod.
733
<sect1 id="genius-gel-operator-list">
734
<title>Liste des opérateurs GEL</title>
736
<para>Dans le langage GEL, chaque chose est vraiment une expression. Les expressions sont reliées ensemble par différents opérateurs. Comme nous l'avons vu, même le séparateur est juste un opérateur binaire GEL. Voici une liste des opérateurs GEL.</para>
740
<term><synopsis>a;b</synopsis></term>
742
<para>C'est le séparateur, il évalue simplement à la fois <varname>a</varname> et <varname>b</varname> mais ne renvoie que le résultat de <varname>b</varname>.</para>
748
<term><synopsis>a=b</synopsis></term>
750
<para>L'opérateur d'attribution. Il attribue <varname>b</varname> à <varname>a</varname> (<varname>a</varname> doit être une <link linkend="genius-gel-lvalues">valeur à gauche</link> valide). Remarquez que cet opérateur peut être transformé en <literal>==</literal> s'il est utilisé là où une expression booléenne est attendue.</para>
756
<term><synopsis>a:=b</synopsis></term>
758
<para>L'opérateur d'attribution. Il attribue <varname>b</varname> à <varname>a</varname> (<varname>a</varname> doit être une <link linkend="genius-gel-lvalues">valeur à gauche</link> valide). Il est différent de <literal>=</literal> car il n'est jamais transformée en <literal>==</literal>.</para>
764
<term><synopsis>|a|</synopsis></term>
766
<para>Valeur absolue ou module (si <varname>a</varname> est un nombre complexe).</para>
767
<para>Consultez <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld</ulink> pour plus d'informations.</para>
773
<term><synopsis>a^b</synopsis></term>
775
<para>Exposant, met <varname>a</varname> à la puissance <varname>b</varname>.</para>
781
<term><synopsis>a.^b</synopsis></term>
783
<para>Exposant élément par élément. Met chaque élément d'une matrice <varname>a</varname> à la puissance <varname>b</varname>. Si <varname>b</varname> est une matrice de la même taille que <varname>a</varname> alors l'opération se réalise élément par élément. Si <varname>a</varname> est un nombre et <varname>b</varname> est une matrice alors cela crée une matrice de la même taille que <varname>b</varname> contenant <varname>a</varname> mis à la puissance de chaque élément de <varname>b</varname>.</para>
789
<term><synopsis>a+b</synopsis></term>
792
Addition. Adds two numbers, matrices, functions or strings. If
793
you add a string to anything the result will just be a string. If one is
794
a square matrix and the other a number, then the number is multiplied by
802
<term><synopsis>a-b</synopsis></term>
804
<para>Soustraction. Soustrait deux nombres, matrices ou fonctions.</para>
810
<term><synopsis>a*b</synopsis></term>
812
<para>Multiplication. C'est la multiplication matricielle normale.</para>
818
<term><synopsis>a.*b</synopsis></term>
820
<para>Multiplication élément par élément si <varname>a</varname> et <varname>b</varname> sont des matrices.</para>
826
<term><synopsis>a/b</synopsis></term>
829
Division. When <varname>a</varname> and <varname>b</varname> are just numbers
830
this is the normal division. When they are matrices, then this is
831
equivalent to <userinput>a*b^-1</userinput>.
838
<term><synopsis>a./b</synopsis></term>
841
Element by element division. Same as <userinput>a/b</userinput> for
842
numbers, but operarates element by element on matrices.
849
<term><synopsis>a\b</synopsis></term>
851
<para>Division arrière. C'est donc la même chose que <userinput>b/a</userinput>.</para>
857
<term><synopsis>a.\b</synopsis></term>
859
<para>Division arrière élément par élément.</para>
865
<term><synopsis>a%b</synopsis></term>
867
<para>L'opérateur modulo. Cela n'active pas le mode d'<link linkend="genius-gel-modular-evaluation">évaluation modulaire</link>, mais renvoie juste le reste de <userinput>a/b</userinput>.</para>
873
<term><synopsis>a.%b</synopsis></term>
875
<para>L'opérateur modulo élément par élément. Renvoie le reste après la division entière élément par élément de <userinput>a./b</userinput>.</para>
881
<term><synopsis>a mod b</synopsis></term>
883
<para>Opérateur d'évaluation modulaire. L'expression <varname>a</varname> est évaluée modulo <varname>b</varname>. Consultez <xref linkend="genius-gel-modular-evaluation"/>. Certaines fonctions et opérateurs se comportent différemment modulo un entier.</para>
889
<term><synopsis>a!</synopsis></term>
891
<para>Opérateur factoriel. Il s'agit de <userinput>1*...*(n-2)*(n-1)*n</userinput>.</para>
897
<term><synopsis>a!!</synopsis></term>
899
<para>Opérateur double factoriel. Il s'agit de <userinput>1*...*(n-4)*(n-2)*n</userinput>.</para>
905
<term><synopsis>a==b</synopsis></term>
909
Returns <constant>true</constant> or <constant>false</constant>
910
depending on <varname>a</varname> and <varname>b</varname> being equal or not.
917
<term><synopsis>a!=b</synopsis></term>
919
<para>Opérateur inégalité, renvoie <constant>true</constant> si <varname>a</varname> n'est pas égal à <varname>b</varname> sinon renvoie <constant>false</constant>.</para>
925
<term><synopsis>a<>b</synopsis></term>
927
<para>Autre opérateur inégalité, renvoie <constant>true</constant> si <varname>a</varname> n'est pas égal à <varname>b</varname> sinon renvoie <constant>false</constant>.</para>
933
<term><synopsis>a<=b</synopsis></term>
936
Less than or equal operator,
937
returns <constant>true</constant> if <varname>a</varname> is
938
less than or equal to
939
<varname>b</varname> else returns <constant>false</constant>.
940
These can be chained as in <userinput>a <= b <= c</userinput> (can
941
also be combined with the less than operator).
948
<term><synopsis>a>=b</synopsis></term>
951
Greater than or equal operator,
952
returns <constant>true</constant> if <varname>a</varname> is
953
greater than or equal to
954
<varname>b</varname> else returns <constant>false</constant>.
955
These can be chained as in <userinput>a >= b >= c</userinput>
956
(can also be combine with the greater than operator).
962
<term><synopsis>a<b</synopsis></term>
966
returns <constant>true</constant> if <varname>a</varname> is
968
<varname>b</varname> else returns <constant>false</constant>.
969
These can be chained as in <userinput>a < b < c</userinput>
970
(can also be combine with the less than or equal to operator).
977
<term><synopsis>a>b</synopsis></term>
980
Greater than operator,
981
returns <constant>true</constant> if <varname>a</varname> is
983
<varname>b</varname> else returns <constant>false</constant>.
984
These can be chained as in <userinput>a > b > c</userinput>
985
(can also be combine with the greater than or equal to operator).
992
<term><synopsis>a<=>b</synopsis></term>
994
<para>Opérateur comparaison. Si <varname>a</varname> est égal à <varname>b</varname>, cela renvoie 0, si <varname>a</varname> est inférieur à <varname>b</varname>, cela renvoie -1 et si <varname>a </varname> est supérieur à <varname>b</varname>, cela renvoie 1.</para>
1000
<term><synopsis>a and b</synopsis></term>
1003
Logical and. Returns true if both
1004
<varname>a</varname> and <varname>b</varname> are true,
1005
else returns false. If given numbers, nonzero numbers
1006
are treated as true.
1013
<term><synopsis>a or b</synopsis></term>
1017
Returns true if both
1018
<varname>a</varname> or <varname>b</varname> are true,
1019
else returns false. If given numbers, nonzero numbers
1020
are treated as true.
1027
<term><synopsis>a xor b</synopsis></term>
1031
Returns true exactly one of
1032
<varname>a</varname> or <varname>b</varname> is true,
1033
else returns false. If given numbers, nonzero numbers
1034
are treated as true.
1041
<term><synopsis>not a</synopsis></term>
1044
Logical not. Returns the logical negation of <varname>a</varname>
1051
<term><synopsis>-a</synopsis></term>
1054
Negation operator. Returns the negative of a number or a matrix (works elementwise on a matrix).
1061
<term><synopsis>&a</synopsis></term>
1064
Variable referencing (to pass a reference to a variable).
1065
See <xref linkend="genius-gel-references"/>.
1072
<term><synopsis>*a</synopsis></term>
1075
Variable dereferencing (to access a referenced variable).
1076
See <xref linkend="genius-gel-references"/>.
1083
<term><synopsis>a'</synopsis></term>
1086
Matrix conjugate transpose. That is, rows and columns get swapped and we take complex conjugate of all entries. That is
1087
if the i,j element of <varname>a</varname> is x+iy, then the j,i element of <userinput>a'</userinput> is x-iy.
1094
<term><synopsis>a.'</synopsis></term>
1097
Matrix transpose, does not conjugate the entries. That is,
1098
the i,j element of <varname>a</varname> becomes the j,i element of <userinput>a.'</userinput>.
1105
<term><synopsis>a@(b,c)</synopsis></term>
1107
<para>Renvoie l'élément ligne <varname>b</varname> et colonne <varname>c</varname> d'une matrice. Si <varname>b</varname> et <varname>c</varname> sont des vecteurs alors cela renvoie les lignes et les colonnes correspondantes, soit une sous-matrice.</para>
1113
<term><synopsis>a@(b,)</synopsis></term>
1115
<para>Renvoie une ligne de matrice (ou plusieurs lignes si <varname>b</varname> est un vecteur).</para>
1121
<term><synopsis>a@(b,:)</synopsis></term>
1123
<para>Comme ci-dessus.</para>
1129
<term><synopsis>a@(,c)</synopsis></term>
1131
<para>Renvoie une colonne de matrice (ou des colonnes si <varname>c</varname> est un vecteur).</para>
1137
<term><synopsis>a@(:,c)</synopsis></term>
1139
<para>Comme ci-dessus.</para>
1145
<term><synopsis>a@(b)</synopsis></term>
1147
<para>Renvoie un élément d'une matrice en le traitant comme un vecteur. Cela parcourt la matrice dans le sens des lignes.</para>
1153
<term><synopsis>a:b</synopsis></term>
1155
<para>Construit un vecteur allant de <varname>a</varname> à <varname>b</varname> (ou indique une région ligne, colonne pour l'opérateur <literal>@</literal>). Par exemple pour obtenir les lignes 2 à 4 de la matrice <varname>A</varname>, nous pourrions faire <programlisting>A@(2:4,)
1156
</programlisting> puisque <userinput>2:4</userinput> renvoie un vecteur <userinput>[2,3,4]</userinput>.</para>
1162
<term><synopsis>a:b:c</synopsis></term>
1164
<para>Construit un vecteur allant de <varname>a</varname> à <varname>c</varname> avec un pas de <varname>b</varname>. Ce qui donne par exemple <programlisting>genius> 1:2:9
1167
</programlisting></para>
1173
<term><synopsis>(a)i</synopsis></term>
1175
<para>Crée un nombre imaginaire (multiplie <varname>a</varname> par le nombre imaginaire pur). Remarquez que normalement le nombre <varname>i</varname> s'écrit <userinput>1i</userinput>. Donc le nombre ci-dessus est égal à <programlisting>(a)*1i
1176
</programlisting></para>
1182
<term><synopsis>`a</synopsis></term>
1184
<para>Apostropher un identifiant afin qu'il ne soit pas évalué. Ou apostropher une matrice afin qu'elle ne soit pas étendue.</para>
1189
<term><synopsis>a swapwith b</synopsis></term>
1191
<para>Échange la valeur de <varname>a</varname> par la valeur de <varname>b</varname>. Pour le moment, ne fonctionne pas sur des ensembles d'éléments de matrice. Renvoie <constant>null</constant>. Disponible à partir de la version 1.0.13.</para>
1196
<term><synopsis>increment a</synopsis></term>
1198
<para>Incrémente la variable <varname>a</varname> de 1. Si <varname>a</varname> est une matrice alors incrémente chaque élément. C'est équivalent à <userinput>a=a+1</userinput> mais est plus rapide. Renvoie <constant>null</constant>. Disponible à partir de la version 1.0.13.</para>
1203
<term><synopsis>increment a by b</synopsis></term>
1205
<para>Incrémente la variable <varname>a</varname> de <varname>b</varname>. Si <varname>a</varname> est une matrice alors incrémente chaque élément. C'est équivalent à <userinput>a=a+b</userinput> mais est plus rapide. Renvoie <constant>null</constant>. Disponible à partir de la version 1.0.13.</para>
1213
<para>L'opérateur @() rend l'opérateur : très utile. Grâce à lui, vous pouvez indiquer des régions d'une matrice. Ainsi a@(2:4,6) sont les lignes 2,3,4 de la colonne 6 ou a@(,1:2) vous renvoie les deux premières colonnes d'une matrice. Vous pouvez également attribuer un opérateur @() tant que la valeur de droite est une matrice qui correspond en taille à la région ou si c'est n'importe quel autre type de valeur.</para>
1217
<para>Les opérateurs de comparaison (excepté l'opérateur <=> qui se comporte normalement) ne sont pas des opérateurs strictement binaires, ils peuvent en fait être regroupés comme dans une expression mathématique normale, par ex. : (1<x<=y<5) est une expression booléenne correcte qui signifie bien ce qu'elle doit, c'est-à-dire (1<x et x≤y et y<5)</para>
1221
<para>L'opérateur unitaire « moins » agit de manière différente en fonction de l'endroit où il apparaît. S'il apparaît devant un nombre, il est très prioritaire, s'il apparaît devant une expression, il est moins prioritaire que les opérateurs puissance et factoriel. Par exemple, <userinput>-1^k</userinput> est bien <userinput>(-1)^k</userinput>, mais <userinput>-foo(1)^k</userinput> est bien <userinput>-(foo(1)^k)</userinput>. En conséquence, faites attention à son utilisation et, en cas de doute, ajoutez des parenthèses.</para>
1227
<!-- ============= GEL Programming ========================== -->
1228
<chapter id="genius-gel-programming">
1229
<title>Programmation avec GEL</title>
1231
<sect1 id="genius-gel-conditionals">
1232
<title>Tests</title>
1233
<para>Syntaxe : <programlisting><![CDATA[if <expression1> then <expression2> [else <expression3>]
1234
]]></programlisting> Si <literal>else</literal> est omis alors si l'<literal>expression1</literal> donne <constant>false</constant> ou 0, <literal>NULL</literal> est renvoyé.</para>
1235
<para>Exemples : <programlisting><![CDATA[if(a==5)then(a=a-1)
1237
if c>0 then c=c-1 else c=0
1238
a = ( if b>0 then b else 1 )
1239
]]></programlisting> Notez que <literal>=</literal> est traduit en <literal>==</literal> s'il est utilisé à l'intérieur de l'expression du <literal>if</literal>, donc <programlisting>if a=5 then a=a-1
1240
</programlisting> est interprété comme : <programlisting>if a==5 then a:=a-1
1241
</programlisting></para>
1244
<sect1 id="genius-gel-loops">
1245
<title>Boucles</title>
1247
<sect2 id="genius-gel-loops-while">
1248
<title>Boucles tant que (while) et jusqu'à (until)</title>
1249
<para>Syntaxe : <programlisting><![CDATA[while <expression1> do <expression2>
1250
until <expression1> do <expression2>
1251
do <expression2> while <expression1>
1252
do <expression2> until <expression1>]]></programlisting> Elles sont similaires à celles rencontrées dans les autres langages. Cependant puisqu'en GEL, cela doit être une expression qui doit renvoyer des valeurs, ces constructions renvoient simplement le résultat de la dernière itération ou <literal>NULL</literal> si aucune itération n'a eu lieu. Dans l'expression booléenne, <literal>=</literal> est traduit en <literal>==</literal> de la même manière que cela se produit pour l'instruction <literal>if</literal>.</para>
1255
<sect2 id="genius-gel-loops-for">
1256
<title>Boucles pour (for)</title>
1257
<para>Syntaxe : <programlisting><![CDATA[for <identifier> = <from> to <to> do <body>
1258
for <identifier> = <from> to <to> by <increment> do <body>]]></programlisting> Boucle où l'identifiant (identifier) prend toutes les valeurs comprises entre <literal><from></literal> et <literal><to></literal>, avec en option un incrément autre que 1. Elles sont plus rapides, plus simples à utiliser et plus compactes que les boucles classiques ci-dessus mais moins flexibles. L'identifiant doit être un identifiant et ne peut pas être un déréférencement. La valeur de l'identifiant est la dernière valeur prise par l'identifiant ou <literal><from></literal> si le contenu (body) de la boucle n'a jamais été évalué. Vous êtes sûr que la variable est initialisée après une boucle donc vous pouvez l'utiliser sans risque. <literal><from></literal>, <literal><to></literal> et <literal><increment></literal> ne doivent pas être complexes. Il n'est pas sûr que la valeur <literal><to></literal> soit atteinte, mais elle n'est jamais dépassée. Par exemple, ce qui suit affiche les nombres impairs de 1 à 19 : <programlisting>for i = 1 to 20 by 2 do print(i)
1259
</programlisting></para>
1261
When one of the values is a floating point number, then the
1262
final check is done to within 2^-20 of the step size. That is,
1263
even if we overshoot by 2^-20 times the "by" above, we still execute the last
1265
<programlisting>for x = 0 to 1 by 0.1 do print(x)
1267
does the expected even though adding 0.1 ten times becomes just slightly more 1.0 due to the way that floating point numbers
1268
are stored in base 2 (there is no 0.1, the actual number stored is just ever so slightly bigger). This is not perfect but it handles
1269
the majority of the cases. If you want to avoid dealing with this issue, use actual rational numbers for example:
1270
<programlisting>for x = 0 to 1 by 1/10 do print(x)
1272
This check is done only from version 1.0.16 onwards, so execution of your code may differ on older versions.
1276
<sect2 id="genius-gel-loops-foreach">
1277
<title>Boucles pour chaque (foreach)</title>
1278
<para>Syntaxe : <programlisting><![CDATA[for <identifier> in <matrix> do <body>]]></programlisting> Pour chaque élément de la matrice, en allant de ligne en ligne et de gauche à droite, le contenu (body) est exécuté en utilisant la valeur actuelle de l'élément pour l'identifiant (identifier). Pour afficher les nombres 1, 2, 3 et 4 dans cet ordre, vous pouvez faire : <programlisting>for n in [1,2:3,4] do print(n)
1279
</programlisting> Si vous souhaitez parcourir les lignes et les colonnes d'une matrice, vous pouvez utiliser les fonctions « RowsOf » et « ColumnsOf » qui renvoient un vecteur des lignes ou des colonnes de la matrice. Par conséquent, <programlisting>for n in RowsOf ([1,2:3,4]) do print(n)
1280
</programlisting> affiche [1,2] puis [3,4].</para>
1283
<sect2 id="genius-gel-loops-break-continue">
1284
<title>Instructions « break » et « continue »</title>
1285
<para>Vous pouvez aussi utiliser les instructions <literal>break</literal> et <literal>continue</literal> dans les boucles. L'instruction <literal>continue</literal> reprend la boucle à sa prochaine itération alors que l'instruction <literal>break</literal> sort de la boucle actuelle. <programlisting><![CDATA[while(<expression1>) do (
1286
if(<expression2>) break
1287
else if(<expression3>) continue;
1290
]]></programlisting></para>
1294
<sect1 id="genius-gel-sums-products">
1295
<title>Sommes et produits</title>
1296
<para>Syntaxe : <programlisting><![CDATA[sum <identifier> = <from> to <to> do <body>
1297
sum <identifier> = <from> to <to> by <increment> do <body>
1298
sum <identifier> in <matrix> do <body>
1299
prod <identifier> = <from> to <to> do <body>
1300
prod <identifier> = <from> to <to> by <increment> do <body>
1301
prod <identifier> in <matrix> do <body>]]></programlisting> Si vous remplacez <literal>for</literal> par <literal>sum</literal> ou <literal>prod</literal> alors vous obtenez une somme ou un produit à la place d'une boucle <literal>for</literal>. Au lieu de renvoyer la dernière valeur, cela renvoie la somme ou le produit des valeurs respectivement.</para>
1302
<para>Si aucun contenu (body) est exécuté (par exemple, <userinput>sum i=1 to 0 do ...</userinput>) alors la convention standard est que <literal>sum</literal> renvoie 0 et <literal>prod</literal> renvoie 1.</para>
1304
For floating point numbers the same roundoff error protection is done as in the for loop.
1305
See <xref linkend="genius-gel-loops-for"/>.
1309
<sect1 id="genius-gel-comparison-operators">
1310
<title>Opérateurs de comparaison</title>
1311
<para>Les opérateurs de comparaison standard suivants sont pris en charge dans GEL et ont des significations évidentes : <literal>==</literal>, <literal>>=</literal>, <literal><=</literal>, <literal>!=</literal>, <literal><></literal>, <literal><</literal>, <literal>></literal>. Ils renvoient <constant>true</constant> ou <constant>false</constant>. Les opérateurs <literal>!=</literal> et <literal><></literal> sont les mêmes et signifient « n'est pas égal à ». GEL comprend également l'opérateur <literal><=></literal> qui renvoie -1 si la partie de gauche est plus petite, 0 si les deux parties sont égales, 1 si la partie de gauche est plus grande.</para>
1313
<para>Normalement <literal>=</literal> est traduit en <literal>==</literal> partout où GEL s'attend à une condition comme celle de la condition si (if). Par exemple, <programlisting>if a=b then c
1315
</programlisting> sont identiques en GEL. Cependant vous devriez vraiment utiliser <literal>==</literal> ou <literal>:=</literal> lorsque vous voulez respectivement comparer ou attribuer si vous voulez éviter des erreurs et que votre code soit facile à lire.</para>
1317
<para>Tous les opérateurs de comparaison (sauf l'opérateur <literal><=></literal> qui se comporte différemment) ne sont pas strictement des opérateurs binaires, ils peuvent en réalité être regroupés comme cela se produit en mathématique, par ex. : (<literal>1<x<=y<5</literal>) est une expression booléenne légale et signifie ce qu'elle doit, c'est-à-dire (1<x et x≤y et y<5)</para>
1318
<para>Pour construire des expressions logiques, utilisez les mots <literal>not</literal>, <literal>and</literal>, <literal>or</literal>, <literal>xor</literal>. Les opérateurs <literal>or</literal> et <literal>and</literal> sont des entités spéciales car ils évaluent leurs arguments les uns après les autres, donc les astuces classiques des évaluations conditionnelles fonctionnent. Par exemple : <literal>1 or a=1</literal> n'effectue pas l'attribution <literal>a=1</literal> puisque le premier argument est vrai (true).</para>
1321
<sect1 id="genius-gel-variables-global">
1322
<title>Variables globales et portée des variables</title>
1323
<para>GEL est un <ulink url="http://fr.wikipedia.org/wiki/Port%C3%A9e_%28informatique%29">langage à portée dynamique</ulink>. Nous allons expliquer ce que cela signifie ci-dessous. Les variables et les fonctions normales sont à portée dynamique. Les exceptions sont les <link linkend="genius-gel-parameters">variables paramètres</link> qui sont toujours globales.</para>
1324
<para>Comme la plupart des langages de programmation, GEL possède différents types de variables. Normalement lorsqu'une variable est définie dans une fonction, elle est visible dans cette fonction et à partir de toutes les fonctions qui sont appelées (tous les contextes supérieurs). Par exemple, supposons qu'une fonction <function>f</function> définit une variable <varname>a</varname> puis appelle la fonction <function>g</function>. Alors la fonction <function>g</function> peut faire référence à <varname>a</varname>. Mais dès que la fonction <function>f</function> est quittée, la variable <varname>a</varname> disparaît de la portée. Par exemple, le code suivant affiche 5. La fonction <function>g</function> ne peut pas être appelée à partir du niveau supérieur (en dehors de <function>f</function> puisque <varname>a</varname> n'est pas défini). <programlisting>function f() = (a:=5; g());
1325
function g() = print(a);
1327
</programlisting></para>
1328
<para>Si vous définissez une variable à l'intérieur d'une fonction, elle va supplanter toutes variables définies dans les fonctions appelantes. Par exemple, si nous modifions le code ci-dessus et écrivons : <programlisting>function f() = (a:=5; g());
1329
function g() = print(a);
1332
</programlisting> Ce code affiche toujours 5. Mais si vous appelez <function>g</function> à l'extérieur de <function>f</function> alors la valeur 10 s'affiche. Remarquez que le fait d'initialiser <varname>a</varname> à 5 à l'intérieur de <function>f</function> ne modifie pas la valeur de <varname>a</varname> au niveau (global) supérieur donc si vous contrôlez maintenant la valeur de <varname>a</varname>, elle sera toujours de 10.</para>
1333
<para>Les arguments de fonction sont exactement comme les variables définies à l'intérieur de la fonction sauf qu'ils sont initialisés à la valeur qui a été transmise à la fonction. En dehors de ce point, ils sont traités exactement comme toutes les autres variables définies dans la fonction.</para>
1334
<para>Les fonctions sont traitées exactement comme les variables. Par conséquent, vous pouvez redéfinir localement les fonctions. Normalement (au niveau supérieur) vous ne pouvez pas redéfinir des variables et fonctions protégées mais, vous pouvez le faire localement. Considérons la session suivante : <screen><prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
1336
<prompt>genius> </prompt><userinput>function g(x) = ((function sin(x)=x^10);f(x))</userinput>
1337
= (`(x)=((sin:=(`(x)=(x^10)));f(x)))
1338
<prompt>genius> </prompt><userinput>g(10)</userinput>
1341
<para>Les fonctions et variables définies au niveau supérieur sont considérées globales. Elles sont visibles de n'importe où. Comme nous l'avons déjà dit, la fonction <function>f</function> suivante ne modifie pas la valeur de <varname>a</varname> à 5. <programlisting>a=6;
1342
function f() = (a:=5);
1344
</programlisting> De temps en temps, cependant, il est nécessaire de définir une variable globale à l'intérieur d'une fonction. Lorsque cela est nécessaire, utilisez la fonction <function>set</function>. La transmission d'une chaîne de caractères ou d'un identifiant précédé d'une apostrophe à cette fonction définit la variable comme globale (au niveau supérieur). Par exemple, pour initialiser <varname>a</varname> à la valeur 3, vous pouvez utiliser : <programlisting>set(`a,3)
1345
</programlisting> ou : <programlisting>set("a",3)
1346
</programlisting></para>
1347
<para>La fonction <function>set</function> définit toujours au niveau global supérieur. Il n'est pas possible de définir une variable locale dans des fonctions à partir d'un sous-programme. Si c'est nécessaire, vous devez utiliser la transmission par référence.</para>
1348
<para>Donc pour récapituler dans un langage plus technique : genius opère avec différents contextes numérotés. Le niveau supérieur est le contexte 0 (zéro). À chaque fois qu'une fonction est entrée, le contexte est augmenté et lorsqu'une fonction est quittée, le contexte est diminué. Une fonction ou une variable est toujours visible à partir de tous les contextes de numéro plus élevé. Si une variable a été définie dans un contexte de numéro plus bas alors attribuer une valeur à cette variable a pour effet de créer une nouvelle variable locale dans le numéro de contexte actuel et cette variable est maintenant visible de tous les contextes de numéro plus élevé.</para>
1349
<para>Il existe également des variables vraiment locales, qui ne sont visibles de nulle part sauf du contexte actuel. Ainsi lorsque vous renvoyez des fonctions par valeur, il se peut que cela fasse référence à des variables non visibles à partir des contextes supérieurs et cela peut être un problème. Consultez <link linkend="genius-gel-true-local-variables">Variables vraiment locales</link> et <link linkend="genius-gel-returning-functions">Renvoi de fonctions</link>.</para>
1352
<sect1 id="genius-gel-parameters">
1353
<title>Variables paramètres</title>
1354
<para>Comme dit précédemment, il existe des variables spéciales appelées paramètres qui existent dans toutes les portées. Pour déclarer un paramètre appelé <varname>foo</varname> et initialisé à 1, écrivez <programlisting><![CDATA[parameter foo = 1
1355
]]></programlisting> À partir de cet instant, <varname>foo</varname> est une variable complètement globale. Attribuer une valeur à <varname>foo</varname> à l'intérieur d'une fonction, modifie la variable dans tous les contextes, ce qui signifie que les fonctions ne possèdent pas de copie privée des paramètres.</para>
1356
<para>Si vous annulez la définition comme paramètre en utilisant la fonction <link linkend="gel-function-undefine"><function>undefine</function></link>, la variable cesse d'être un paramètre.</para>
1357
<para>Certains paramètres sont internes à Genius et modifient son comportement.</para>
1360
<sect1 id="genius-gel-returning">
1361
<title>Sortie de fonction</title>
1362
<para>Normalement une fonction est une ou plusieurs expressions séparées par un point virgule et la valeur de la dernière expression est renvoyée. C'est suffisant pour les fonctions simples mais parfois vous ne voulez pas qu'une fonction renvoie la dernière chose calculée. Il se peut que vous vouliez, par exemple, quitter la fonction à partir du milieu de la fonction. Dans ce cas, vous pouvez utiliser le mot-clé <literal>return</literal>. <literal>Return</literal> prend un seul argument qui est la valeur renvoyée.</para>
1363
<para>Exemple : <programlisting><![CDATA[function f(x) = (
1366
if x>50 then return y;
1371
]]></programlisting></para>
1375
<sect1 id="genius-gel-references">
1376
<title>Références</title>
1377
<para>Il peut être nécessaire pour certaines fonctions de renvoyer plus d'une seule valeur. C'est possible en renvoyant un vecteur de valeurs mais souvent il est pratique d'utiliser le passage d'une référence à une variable. Vous transmettez une référence vers une variable à une fonction et la fonction attribue des valeurs à la variable pour vous en utilisant un déréférencement. Ce n'est pas le seul usage que vous pouvez faire du passage par référence mais c'est son utilisation principale.</para>
1378
<para>Lorsque vous utilisez des fonctions qui renvoient des valeurs à travers des références dans sa liste d'argument, il suffit de transmettre le nom de la variable précédée d'une esperluette. Par exemple, le code suivant calcule une valeur propre d'une matrice <varname>A</varname> avec un vecteur propre initial pressenti <varname>x</varname> et enregistre le vecteur propre calculé dans la variable appelée <varname>v</varname> : <programlisting><![CDATA[RayleighQuotientIteration (A,x,0.001,100,&v)
1379
]]></programlisting></para>
1380
<para>Les détails concernant le fonctionnement des références et leur syntaxe sont similaires à ceux du langage C. L'opérateur <literal>&</literal> référence une variable et <literal>*</literal> la déréférence. Les deux ne peuvent s'appliquer que sur un identifiant, par conséquent <literal>**a</literal> n'est pas une expression légale en GEL.</para>
1381
<para>Les références s'expliquent mieux par un exemple : <programlisting><![CDATA[a=1;
1384
]]></programlisting> Maintenant <varname>a</varname> contient 2. Vous pouvez également référencer des fonctions : <programlisting><![CDATA[function f(x) = x+1;
1387
]]></programlisting> donne 4.</para>
1390
<sect1 id="genius-gel-lvalues">
1391
<title>Valeurs à gauche (lvalues)</title>
1392
<para>Une valeur à gauche est la partie à gauche d'une attribution. En d'autres mots, une valeur à gauche est la chose dans laquelle vous attribuez quelque chose. Des valeurs à gauche valides sont : <variablelist>
1394
<term><userinput>a</userinput></term>
1396
<para>Identifiant. Ici nous attribuons une valeur à la variable de nom <varname>a</varname>.</para>
1400
<term><userinput>*a</userinput></term>
1402
<para>Déréférence un identifiant. Cela attribue une valeur à ce que vers quoi la variable <varname>a</varname> pointe.</para>
1406
<term><userinput>a@(<région>)</userinput></term>
1408
<para>Une région d'une matrice. Ici la région est indiquée normalement comme avec l'opérateur habituel @() et peut être une entrée unique ou une région entière de la matrice.</para>
1411
</variablelist></para>
1412
<para>Exemples : <programlisting>a:=4
1415
a@(4:8,3) := [1,2,3,4,5]'
1416
</programlisting> Notez que <literal>:=</literal> et <literal>=</literal> peuvent être utilisés indifféremment l'un à la place de l'autre. Sauf si l'attribution apparaît dans une condition. Il est donc plus sûr d'utiliser uniquement <literal>:=</literal> lorsque vous voulez faire une attribution et <literal>==</literal> lorsque vous voulez faire une comparaison.</para>
1421
<chapter id="genius-gel-programming-advanced">
1422
<title>Programmation avancée avec GEL</title>
1424
<sect1 id="genius-gel-error-handling">
1425
<title>Gestion des erreurs</title>
1426
<para>Si vous détectez une erreur dans votre fonction, vous pouvez la quitter rapidement (« to bail out of »). Pour les erreurs normales, telles que les mauvais types d'arguments, vous pouvez éviter de calculer la fonction en ajoutant l'instruction <literal>bailout</literal>. Si quelque chose se passe vraiment mal et que vous voulez interrompre complètement le calcul actuel, vous pouvez utiliser l'instruction <literal>exception</literal>.</para>
1427
<para>Par exemple, si vous voulez vérifier les arguments de votre fonction. Vous pouvez utiliser le code suivant. <programlisting>function f(M) = (
1428
if not IsMatrix (M) then (
1429
error ("M n'est pas une matrice !");
1434
</programlisting></para>
1437
<sect1 id="genius-gel-toplevel-syntax">
1438
<title>Syntaxe de haut-niveau</title>
1439
<para>La syntaxe est légèrement différente si vous saisissez des instructions au niveau supérieur plutôt que lorsque vous êtes entre parenthèses ou à l'intérieur de fonctions. Au niveau supérieur, un retour à la ligne a le même effet qu'un appui sur la touche Entrée en ligne de commande. Par conséquent, considérez vos programmes comme une suite de lignes saisie en ligne de commande. En particulier, vous n'avez pas besoin de saisir le séparateur à la fin d'une ligne (à moins que cela ne soit une partie de plusieurs instructions à l'intérieur de parenthèses).</para>
1440
<para>Le code suivant provoque une erreur lorsqu'il est saisi au niveau supérieur d'un programme alors qu'il fonctionne très bien dans une fonction. <programlisting>if QuelqueChose() then
1444
</programlisting></para>
1445
<para>Le problème est que lorsque l'<application>Outil de maths Genius</application> rencontre la fin de la ligne après la seconde ligne, il décide que l'instruction est complète et il l'exécute. Après l'exécution l'<application>Outil de maths Genius</application> se rend à la ligne suivante, voit l'instruction <literal>else</literal> et affiche une erreur de syntaxe. Pour régler ce problème, utilisez des parenthèses. L'<application>Outil de maths Genius</application> ne sera pas satisfait tant qu'il n'aura pas trouvé que toutes les parenthèses sont fermées. <programlisting>if QuelqueChose() then(
1450
</programlisting></para>
1453
<sect1 id="genius-gel-returning-functions">
1454
<title>Renvoi de fonction</title>
1455
<para>Il est possible de renvoyer des fonctions en tant que donnée. De cette manière, vous pouvez écrire une fonction qui construit des fonctions dans un but précis en fonction de certains paramètres. Le point délicat est de savoir quelles variables sont visibles par la fonction construite. La façon dont cela fonctionne dans GEL est que, lorsqu'une fonction renvoie une autre fonction, tous les identifiants qui étaient référencés dans le corps de la fonction mère, et qui deviendraient hors de portée, sont en fait ajoutés dans un dictionnaire privé de la fonction renvoyée. Ainsi la fonction voit toutes les variables qui étaient à sa portée au moment où elle a été définie. Par exemple, nous pouvons définir ainsi une fonction qui renvoie une fonction qui ajoute 5 à son argument : <programlisting>function f() = (
1459
</programlisting> Notez que la fonction ajoute <varname>k</varname> à <varname>x</varname>. Vous pouvez l'utiliser ainsi. <programlisting>g = f();
1461
</programlisting> et <userinput>g(5)</userinput> doit renvoyer 10.</para>
1462
<para>Une chose à noter est que la valeur de <varname>k</varname> utilisée est celle qui est en cours lorsque la fonction <function>f</function> a terminé son exécution. Par exemple : <programlisting>function f() = (
1464
function r(x) = (x+k);
1468
</programlisting> renvoie une fonction qui ajoute 10 à son argument plutôt que 5. La raison est que le dictionnaire supplémentaire est créé uniquement lorsque le contexte dans lequel la fonction a été définie, se termine, c'est-à-dire lorsque la fonction <function>f</function> renvoie. C'est cohérent avec la manière dont on s'attend à ce que la fonction <function>r</function> fonctionne à l'intérieur de la fonction <function>f</function> d'après les règles sur la portée des variables dans GEL. Les seules variables ajoutées au dictionnaire supplémentaire sont celles qui sont présentes dans le contexte qui se termine et n'existe plus. Les variables utilisées dans la fonction, qui sont toujours dans des contextes valides, fonctionnent comme d'habitude, en utilisant la valeur actuelle de la variable. La seule différence, c'est pour les variables et les fonctions globales. Tous les identifiants qui référencent des variables globales au moment de la définition de la fonction ne sont pas ajoutés au dictionnaire privé. C'est pour éviter beaucoup de travail non nécessaire lors du renvoi de fonctions et cela ne pose que rarement problème. Par exemple, supposons que vous supprimiez le « k= 5 » de la fonction <function>f</function> et qu'au niveau supérieur vous définissiez <varname>k</varname> à 5 par exemple. Alors lorsque vous exécutez <function>f</function>, la fonction <function>r</function> ne met pas <varname>k</varname> dans le dictionnaire privé parce qu'il était global (au niveau supérieur) au moment de la définition de <function>r</function>.</para>
1469
<para>Parfois il est préférable d'avoir un meilleur contrôle sur la façon dont les variables sont copiées dans le dictionnaire privé. Depuis la version 1.0.7, vous pouvez spécifier quelles variables sont copiées dans le dictionnaire privée en mettant des crochets carrés supplémentaires après les arguments contenant la liste des variables qui seront copiées, séparées par des virgules. Si vous faites cela alors les variables sont copiées dans le dictionnaire privé au moment de la définition de la fonction et le dictionnaire privé n'est pas modifié ensuite. Par exemple, <programlisting>function f() = (
1471
function r(x) [k] = (x+k);
1475
</programlisting> renvoie une fonction qui, lorsqu'elle est appelée, ajoute 5 à ses arguments. La copie locale de <varname>k</varname> a été créée lorsque la fonction a été définie.</para>
1477
When you want the function to not have any private dictionary
1478
then put empty square brackets after the argument list. Then
1479
no private dictionary will be created at all. Doing this is
1480
good to increase efficiency when a private dictionary is not
1481
needed or when you want the function to lookup all variables
1482
as it sees them when called. For example suppose you want
1483
the function returned from <function>f</function> to see
1484
the value of <varname>k</varname> from the toplevel despite
1485
there being a local variable of the same name during definition.
1487
<programlisting>function f() = (
1489
function r(x) [] = (x+k);
1496
will return 20 and not 15, which would happen if
1497
<varname>k</varname> with a value of 5 was added to the private
1502
<sect1 id="genius-gel-true-local-variables">
1503
<title>Variables locales vraies</title>
1504
<para>Lors de la transmission de fonctions dans d'autres fonctions, la portée normale des variables peut être indésirable. Par exemple : <programlisting>k := 10;
1505
function r(x) = (x+k);
1511
</programlisting> vous souhaitez probablement que la fonction <function>r</function> lorsqu'elle est transmise à <function>g</function> dans <function>f</function>, puisse voir <varname>k</varname> comme 10 plutôt que 5 afin que le code renvoie 11 et pas 6. Cependant, tel que c'est écrit, la fonction lorsqu'elle est exécutée voit la variable <varname>k</varname> qui est égale à 5. Il y a deux façons de résoudre cela. L'une est que la fonction <function>r</function> obtienne <varname>k</varname> dans un dictionnaire privé en utilisant la notation crochet carré de la section <link linkend="genius-gel-returning-functions">Renvoi de fonctions</link>.</para>
1512
<para>Mais il y a une autre solution. Depuis la version 1.0.7 de Genius, il existe des variables vraiment locales. Ce sont des variables qui ne sont visibles qu'à partir du contexte actuel, et pas par les fonctions appelées. Nous pouvons définir <varname>k</varname> comme une variable locale dans la fonction <function>f</function>. Pour faire cela, ajoutez une instruction <command>local</command> comme première instruction dans la fonction (cela doit toujours être la première instruction de la fonction). Vous pouvez également transformer tous les arguments en variables locales, c'est-à-dire <programlisting>function f(g,x) = (
1517
</programlisting> Dans ce cas, le code fonctionne comme attendu et affiche 11. Notez que l'instruction <command>local</command> initialise toutes les variables référencées (sauf les arguments de la fonction) à <constant>null</constant>.</para>
1518
<para>Si toutes les variables doivent être créées localement, vous pouvez utiliser un astérisque à la place d'une liste de variables. Dans ce cas, les variables ne sont pas initialisées tant qu'elles ne sont pas définies bien sûr. La définition suivante de <function>f</function> fonctionne également : <programlisting>function f(g,x) = (
1523
</programlisting></para>
1524
<para>C'est une bonne pratique que toutes les fonctions qui prennent d'autres fonctions comme argument, utilisent des variables locales. De cette manière, la fonction transmise ne voit pas les détails de l'implémentation et n'est pas perturbée.</para>
1527
<sect1 id="genius-gel-startup-procedure">
1528
<title>Procédure de démarrage de GEL</title>
1529
<para>Dans un premier temps, le programme recherche dans le répertoire d'installation les fichiers de la bibliothèque installés (la version compilée <filename>lib.cgel</filename>), puis il recherche dans le répertoire actuel, puis il essaye de charger un fichier non compilé appelé <filename>~/.geniusinit</filename>.</para>
1531
If you ever change the library in its installed place, you’ll have to
1532
first compile it with <command>genius --compile loader.gel > lib.cgel</command>
1536
<sect1 id="genius-gel-loading-programs">
1537
<title>Chargement de programmes</title>
1538
<para>Imaginons que vous ayiez un programme d'une certaine taille que vous avez écrit dans un fichier et que vous vouliez lire ce fichier. Dans ce cas, il y a deux options. Vous pouvez conserver les fonctions que vous utilisez le plus souvent dans le fichier <filename>~/.geniusinit</filename> ou, si vous voulez charger un fichier au milieu d'une session, (ou à partir d'un autre fichier), vous pouvez saisir <command>load <liste de noms de fichier></command> au prompt. Cela doit être réalisé au niveau supérieur et pas à l'intérieur d'une fonction ou d'autres choses et cela ne peut pas faire partie d'une expression. La syntaxe est également légèrement différente du reste de genius, plus proche de celle d'un shell. Vous pouvez saisir le nom du fichier entre guillemets. Si vous utilisez les guillemets simples '', vous obtenez exactement la chaîne saisie mais si vous utilisez les guillemets doubles "", les caractères spéciaux ne seront pas échappés comme ils le sont pour les chaînes de caractères. Exemple : <programlisting>load programme1.gel programme2.gel
1539
load "Etrange nom de fichier avec des ESPACES.gel"
1540
</programlisting> Il existe également des commandes intégrées <command>cd</command>, <command>pwd</command> et <command>ls</command>. <command>cd</command> qui ne prenne qu'un seul argument, la commande <command>ls</command> ne prend qu'un seul argument qui est comme le « glob » dans le shell unix (c'est-à-dire vous pouvez utiliser des caractères génériques). La commande <command>pwd</command> ne prend pas d'argument. Par exemple : <programlisting>cd repertoire_contenant_des_programmes_gel
1542
</programlisting></para>
1547
<!-- ============= Matrices ================================= -->
1548
<chapter id="genius-gel-matrices">
1549
<title>Matrices en GEL</title>
1551
<para>Genius prend en charge les vecteurs et les matrices et possède une importante bibliothèque de fonctions pour la manipulation des matrices et l'algèbre linéaire.</para>
1553
<sect1 id="genius-gel-matrix-support">
1554
<title>Saisie de matrices</title>
1555
<para>Pour saisir des matrices, vous pouvez utiliser l'une des deux syntaxes suivantes. Soit vous saisissez la matrice sur une seule ligne, en séparant les valeurs par des virgules et les lignes par des point-virgules soit vous saisissez chaque rangée sur une ligne en séparant les valeurs par des virgules. Vous pouvez également combiner les deux méthodes. Ainsi pour saisir une matrice 3x3 contenant les nombres 1 à 9, vous pouvez saisir <programlisting>[1,2,3;4,5,6;7,8,9]
1556
</programlisting> ou <programlisting>[1, 2, 3
1559
</programlisting> Toutefois, n'utilisez pas à la fois « ; » et un retour chariot sur la même ligne.</para>
1561
<para>Vous pouvez aussi utiliser les fonctionnalités de complétion pour saisir des matrices. Par exemple, vous pouvez saisir : <programlisting>a = [ 1, 2, 3
1566
</programlisting> pour obtenir <programlisting>[1, 2, 3, 10
1570
</programlisting> De même, vous pouvez construire des matrices à partir de vecteurs ou d'autres choses du même type.</para>
1572
<para>Notez que les éléments non spécifiés sont initialisés à 0, donc <programlisting>[1, 2, 3
1575
</programlisting> donne au final <programlisting>
1579
</programlisting></para>
1581
<para>Lorsque les matrices sont évaluées, elles sont parcourues dans le sens des lignes, exactement de la même façon que l'opérateur <literal>M@(j)</literal>.</para>
1584
<para>Faites attention lorsque vous utilisez des retours à la ligne à l'intérieur des crochets <literal>[ ]</literal> car ils ont une signification légèrement différente dans ce cas. Vous commencez une nouvelle ligne.</para>
1589
<sect1 id="genius-gel-matrix-transpose">
1590
<title>Opérateur de transposition conjuguée et de transposition</title>
1591
<para>Vous pouvez obtenir la matrice transposée conjuguée grâce à l'opérateur <literal>'</literal>. Cela signifie que la valeur dans la <varname>i</varname>ième colonne et la <varname>j</varname>ième ligne est le complexe conjugué de la valeur dans la <varname>j</varname>ième colonne et la <varname>i</varname>ième ligne de la matrice d'origine. Dans l'exemple : <programlisting>[1,2,3]*[4,5,6]'
1592
</programlisting> il faut transposer la deuxième matrice pour permettre la multiplication des matrices. Si vous voulez juste transposer une matrice sans la conjuguer, vous devez utiliser l'opérateur <literal>.'</literal>. Par exemple : <programlisting>[1,2,3]*[4,5,6i].'
1593
</programlisting></para>
1594
<para>Remarquez que la transposée normale, c'est-à-dire l'opérateur <literal>.'</literal>, est beaucoup plus rapide et ne crée pas une nouvelle copie de la matrice en mémoire. La transposition conjuguée crée hélas une nouvelle copie. Il est recommandé de toujours utiliser l'opérateur <literal>.'</literal> lorsque vous travaillez avec des matrices et des vecteurs non complexes.</para>
1597
<sect1 id="genius-gel-matrix-linalg">
1598
<title>Algèbre linéaire</title>
1599
<para>Genius implémente beaucoup de routines utiles d'algèbre linéraire et de manipulation de matrice. Consultez les sections <link linkend="genius-gel-function-list-linear-algebra">Algèbre linéaire</link> et <link linkend="genius-gel-function-list-matrix">Manipulation de matrice</link> dans la liste des fonctions GEL.</para>
1600
<para>Les routines d'algèbre linéaire implémentées en GEL ne proviennent pas actuellement d'un paquet numérique bien testé et ne doivent donc pas être utilisées pour des calculs numériques critiques. D'un autre côté, Genius implémente très bien les nombreuses opérations d'algèbre linéaire avec des coefficients rationnels et entiers. Elles sont par nature exactes et en fait vous donnent de bien meilleurs résultats que les routines en double précision usuelles pour l'algèbre linéaire.</para>
1601
<para>Par exemple, il est vain de calculer le rang et le noyau d'une matrice réelle puisque dans tous les cas pratiques, il faut considérer que la matrice contienne de légères erreurs. Il est possible que vous obteniez un résultat différent de ce que vous attendiez. Le problème est qu'en faisant une légère perturbation toute matrice est de rang complet et inversible. Cependant si la matrice est composée de nombres rationnels alors le rang et le noyau sont toujours exactes.</para>
1602
<para>En général, lorsque Genius calcule la base d'un espace vectoriel (par exemple avec la fonction <function>NullSpace</function>) il renvoie la base sous la forme d'une matrice dans laquelle les colonnes sont les vecteurs de la base. Cela signifie que lorsque Genius parle d'un sous-espace linéaire, cela désigne une matrice dont l'espace des colonnes est le sous-espace linéaire concerné.</para>
1603
<para>Notez que Genius peut se souvenir d'un certaine nombre de propriétés d'une matrice. Par exemple, il se souvient qu'une matrice est sous une forme réduite. Si beaucoup d'appels à des fonctions qui utilisent en interne une forme réduite, sont effectués, vous pouvez réduire la matrice une fois pour toute auparavant. Les appels successifs à la fonction <function>rref</function> seront très rapides.</para>
1608
<!-- ============= Polynomials ============================== -->
1609
<chapter id="genius-gel-polynomials">
1610
<title>Polynômes en GEL</title>
1612
<para>Actuellement Genius peut prendre en charge des polynômes à une variable écrits sous la forme de vecteurs et réaliser des opérations élémentaires avec eux. Il est prévu d'étendre cette prise en charge.</para>
1614
<sect1 id="genius-gel-polynomials-using">
1615
<title>Utilisation des polynômes</title>
1616
<para>Actuellement les polynômes à une variable sont juste des vecteurs lignes dont les valeurs sont les coefficients. La puissance du terme est la position dans le vecteur, la première étant 0. Ainsi, <programlisting>[1,2,3]
1617
</programlisting> représente le polynôme <programlisting>1 + 2*x + 3*x^2
1618
</programlisting></para>
1619
<para>Vous pouvez ajouter, soustraire et multiplier des polynômes en utilisant respectivement les fonctions <link linkend="gel-function-AddPoly"><function>AddPoly</function></link>, <link linkend="gel-function-SubtractPoly"><function>SubtractPoly</function></link> et <link linkend="gel-function-MultiplyPoly"><function>MultiplyPoly</function></link>. Vous pouvez afficher un polynôme en utilisant la fonction <link linkend="gel-function-PolyToString"><function>PolyToString</function></link>. Par exemple, <programlisting>PolyToString([1,2,3],"y")
1620
</programlisting> donne <programlisting>3*y^2 + 2*y + 1
1621
</programlisting> Vous pouvez également obtenir une représentation fonctionnelle du polynôme afin de pouvoir l'évaluer. Pour cela, utilisez <link linkend="gel-function-PolyToFunction"><function>PolyToFunction</function></link> qui renvoie une fonction anonyme. <programlisting>f = PolyToFunction([0,1,1])
1623
</programlisting></para>
1624
<para>Il est aussi possible de trouver les racines des polynômes de degré 1 à 4 en utilisant la fonction <link linkend="gel-function-PolynomialRoots"><function>PolynomialRoots</function></link> qui appelle la formule appropriée. Les polynômes de degré supérieur doit être convertis en fonctions et résolus numériquement en utilisant une fonction telle que <link linkend="gel-function-FindRootBisection"><function>FindRootBisection</function></link>, <link linkend="gel-function-FindRootFalsePosition"><function>FindRootFalsePosition</function></link>, <link linkend="gel-function-FindRootMullersMethod"><function>FindRootMullersMethod</function></link> ou <link linkend="gel-function-FindRootSecant"><function>FindRootSecant</function></link>.</para>
1625
<para>Consultez <xref linkend="genius-gel-function-list-polynomials"/> dans la liste des fonctions pour le reste des fonctions agissant sur les polynômes.</para>
1630
<!-- ============= Set Theory ============================== -->
1631
<chapter id="genius-gel-settheory">
1632
<title>Théorie des ensembles en GEL</title>
1634
<para>Genius possède des fonctionnalités intégrées basiques concernant la théorie des ensembles. Actuellement un ensemble est juste un vecteur (ou une matrice). Chaque objet distinct est traité comme un élément différent.</para>
1636
<sect1 id="genius-gel-sets-using">
1637
<title>Utilisation des ensembles</title>
1638
<para>Tout comme les vecteurs, les objets dans les ensembles peuvent comprendre des nombres, des chaînes de caractères, <constant>null</constant>, des matrices et des vecteurs. Il est prévu dans le futur d'avoir un type dédié pour les ensembles plutôt que d'utiliser des vecteurs. Notez que les nombres flottants sont différents des entiers, même s'ils semblent être les mêmes. Cela signifie que Genius traite <constant>0</constant> et <constant>0.0</constant> comme deux éléments différents. La constante <constant>null</constant> est traitée comme un ensemble vide.</para>
1639
<para>Pour construire un ensemble à partir d'un vecteur, utilisez la fonction <link linkend="gel-function-MakeSet"><function>MakeSet</function></link>. Actuellement, cela renvoie juste un nouveau vecteur où chaque élément est unique. <screen><prompt>genius> </prompt><userinput>MakeSet([1,2,2,3])</userinput>
1643
<para>De manière similaire, il existe des fonctions <link linkend="gel-function-Union"><function>Union</function></link>, <link linkend="gel-function-Intersection"><function>Intersection</function></link>, <link linkend="gel-function-SetMinus"><function>SetMinus</function></link> dont le but est assez intuitif. Par exemple : <screen><prompt>genius> </prompt><userinput>Union([1,2,3], [1,2,4])</userinput>
1645
</screen> Notez qu'aucun ordre n'est garanti pour les valeurs renvoyées. Si vous souhaitez trier le vecteur, vous devez utiliser la fonction <link linkend="gel-function-SortVector"><function>SortVector</function></link>.</para>
1647
<para>Pour tester l'appartenance, il existe les fonctions <link linkend="gel-function-IsIn"><function>IsIn</function></link> et <link linkend="gel-function-IsSubset"><function>IsSubset</function></link> qui renvoient une valeur booléenne. Par exemple, <screen><prompt>genius> </prompt><userinput>IsIn (1, [0,1,2])</userinput>
1649
</screen> La syntaxe <userinput>IsIn(x,X)</userinput> est bien sûr équivalente à <userinput>IsSubset([x],X)</userinput>. Notez que puisque l'ensemble vide est un sous-ensemble de tous les ensembles, <userinput>IsSubset(null,X)</userinput> est toujours vrai.</para>
1655
<!-- ============= GEL function list ======================== -->
1656
<chapter id="genius-gel-function-list">
1657
<title>Liste des fonctions GEL</title>
1659
<!--&gel-function-list;-->
1661
<para>Pour obtenir de l'aide sur une fonction spécifique à partir de la console, saisissez : <programlisting>help NomDeLaFonction
1662
</programlisting></para>
1664
<sect1 id="genius-gel-function-list-commands">
1665
<title>Commandes</title>
1668
<term><anchor id="gel-command-help"/>help</term>
1670
<synopsis>help</synopsis>
1671
<synopsis>help NomDeLaFonction</synopsis>
1672
<para>Affiche l'aide (ou l'aide d'une fonction/commande).</para>
1677
<term><anchor id="gel-command-load"/>load</term>
1679
<synopsis>load "fichier.gel"</synopsis>
1680
<para>Charge un fichier dans l'interpréteur. Le contenu du fichier s'exécute comme s'il était saisi en ligne de commande.</para>
1685
<term><anchor id="gel-command-cd"/>cd</term>
1687
<synopsis>cd /nom/de/repertoire</synopsis>
1688
<para>Change le répertoire de travail en <filename>/nom/de/repertoire</filename>.</para>
1693
<term><anchor id="gel-command-pwd"/>pwd</term>
1695
<synopsis>pwd</synopsis>
1696
<para>Affiche le répertoire de travail.</para>
1701
<term><anchor id="gel-command-ls"/>ls</term>
1703
<synopsis>ls</synopsis>
1704
<para>Affiche les fichiers dans le répertoire.</para>
1709
<term><anchor id="gel-command-plugin"/>plugin</term>
1711
<synopsis>plugin nom_du_greffon</synopsis>
1712
<para>Charge un greffon. Le greffon portant ce nom doit être installé sur votre système dans le répertoire correct.</para>
1718
<sect1 id="genius-gel-function-list-basic">
1719
<title>Basique</title>
1722
<term><anchor id="gel-function-AskButtons"/>AskButtons</term>
1724
<synopsis>AskButtons (requête)</synopsis>
1725
<synopsis>AskButtons (requête, bouton1, ...)</synopsis>
1726
<para>Pose une question et présente une liste de boutons à l'utilisateur (ou un menu d'options en mode texte). Renvoie l'indice du bouton enfoncé, commençant à 1, c'est-à-dire renvoie 1 si le premier bouton est enfoncé, 2 si le second bouton est enfoncé, etc. Si l'utilisateur ferme la fenêtre (ou appui sur Entrée en mode texte) alors <constant>null</constant> est renvoyé. L'exécution du programme est bloqué jusqu'à ce que l'utilisateur réponde.</para>
1731
<term><anchor id="gel-function-AskString"/>AskString</term>
1733
<synopsis>AskString (requête)</synopsis>
1734
<synopsis>AskString (requête, défaut)</synopsis>
1735
<para>Pose une question et permet à l'utilisateur de saisir une chaîne de caractères qui est ensuite renvoyée. Si l'utilisateur annule ou ferme la fenêtre alors <constant>null</constant> est renvoyé. L'exécution du programme est bloquée jusqu'à ce que l'utilisateur réponde. Si <varname>défaut</varname> est fourni alors il est pré-saisi pour que l'utilisateur n'ait qu'à appuyer sur Entrée.</para>
1740
<term><anchor id="gel-function-Compose"/>Compose</term>
1742
<synopsis>Compose (f,g)</synopsis>
1743
<para>Compose deux fonctions et renvoie une fonction qui est la composition de <function>f</function> par <function>g</function>.</para>
1748
<term><anchor id="gel-function-ComposePower"/>ComposePower</term>
1750
<synopsis>ComposePower (f,n,x)</synopsis>
1751
<para>Compose et exécute une fonction avec elle-même <varname>n</varname> fois en transmettant l'argument <varname>x</varname>. Cela renvoie <varname>x</varname> si <varname>n</varname> vaut 0. Exemple : <screen><prompt>genius></prompt> <userinput>function f(x) = x^2 ;</userinput>
1752
<prompt>genius></prompt> <userinput>ComposePower (f,3,7)</userinput>
1754
<prompt>genius></prompt> <userinput>f(f(f(7)))</userinput>
1761
<term><anchor id="gel-function-Evaluate"/>Evaluate</term>
1763
<synopsis>Evaluate (chaîne)</synopsis>
1764
<para>Analyse et évalue une chaîne.</para>
1770
<term><anchor id="gel-function-GetCurrentModulo"/>GetCurrentModulo</term>
1772
<synopsis>GetCurrentModulo</synopsis>
1773
<para>Obtient le modulo actuel à partir du contexte extérieur à la fonction. C'est-à-dire, si l'extérieur de la fonction a été exécuté en mode modulo (en utilisant <literal>mod</literal>) alors cela renvoie cette valeur de modulo. Normalement le corps d'une fonction appelée n'est pas exécutée en arithmétique modulaire et cette fonction intégrée donne la possibilité aux fonctions GEL de prendre connaissance de l'arithmétique modulaire en cours.</para>
1778
<term><anchor id="gel-function-Identity"/>Identity</term>
1780
<synopsis>Identity (x)</synopsis>
1781
<para>Fonction identité, renvoie son argument.</para>
1786
<term><anchor id="gel-function-IntegerFromBoolean"/>IntegerFromBoolean</term>
1788
<synopsis>IntegerFromBoolean (val_bool)</synopsis>
1789
<para>Crée un entier (0 pour <constant>false</constant> ou 1 pour <constant>true</constant>) à partir d'une valeur booléenne. <varname>val_bool</varname> peut également être un nombre et dans ce cas une valeur non nulle est interprétée comme <constant>true</constant> et zéro est interprété comme <constant>false</constant>.</para>
1794
<term><anchor id="gel-function-IsBoolean"/>IsBoolean</term>
1796
<synopsis>IsBoolean (param)</synopsis>
1797
<para>Vérifie que l'argument est un booléen (et pas un nombre).</para>
1802
<term><anchor id="gel-function-IsDefined"/>IsDefined</term>
1804
<synopsis>IsDefined (id)</synopsis>
1805
<para>Vérifie qu'un identifiant est défini. Vous devez transmettre une chaîne de caractères ou un identifiant. Si vous transmettez une matrice, chaque entrée est évaluée séparément et la matrice doit contenir des chaînes ou des identifiants.</para>
1810
<term><anchor id="gel-function-IsFunction"/>IsFunction</term>
1812
<synopsis>IsFunction (param)</synopsis>
1813
<para>Vérifie que l'argument est une fonction.</para>
1818
<term><anchor id="gel-function-IsFunctionOrIdentifier"/>IsFunctionOrIdentifier</term>
1820
<synopsis>IsFunctionOrIdentifier (param)</synopsis>
1821
<para>Vérifie que l'argument est une fonction ou un identificateur.</para>
1826
<term><anchor id="gel-function-IsFunctionRef"/>IsFunctionRef</term>
1828
<synopsis>IsFunctionRef (param)</synopsis>
1829
<para>Vérifie que l'argument est une référence de fonction. Cela inclut les références de variable.</para>
1834
<term><anchor id="gel-function-IsMatrix"/>IsMatrix</term>
1836
<synopsis>IsMatrix (param)</synopsis>
1837
<para>Vérifie que l'argument est une matrice. Même si <constant>null</constant> est parfois considéré comme une matrice vide, la fonction <function>IsMatrix</function> ne considère pas <constant>null</constant> comme une matrice.</para>
1842
<term><anchor id="gel-function-IsNull"/>IsNull</term>
1844
<synopsis>IsNull (param)</synopsis>
1845
<para>Vérifie que l'argument est <constant>null</constant>.</para>
1850
<term><anchor id="gel-function-IsString"/>IsString</term>
1852
<synopsis>IsString (param)</synopsis>
1853
<para>Vérifie que l'argument est une chaîne de caractères.</para>
1858
<term><anchor id="gel-function-IsValue"/>IsValue</term>
1860
<synopsis>IsValue (param)</synopsis>
1861
<para>Vérifie que l'argument est un nombre.</para>
1866
<term><anchor id="gel-function-Parse"/>Parse</term>
1868
<synopsis>Parse (chaîne)</synopsis>
1869
<para>Analyse mais n'évalue pas une chaîne de caractères. Notez que certains pré-calculs sont effectués pendant l'étape d'évaluation.</para>
1874
<term><anchor id="gel-function-SetFunctionFlags"/>SetFunctionFlags</term>
1876
<synopsis>SetFunctionFlags (id,drapeau...)</synopsis>
1877
<para>Définit des drapeaux pour une fonction, actuellement <literal>« PropagateMod »</literal> et <literal>« NoModuloArguments »</literal>. Si <literal>« PropagateMod »</literal> est défini alors le corps de la fonction est évalué en arithmétique modulaire lorsque la fonction est appelée à l'intérieur d'un bloc qui est évalué en utilisant l'arithmétique modulaire (en utilisant <literal>mod</literal>). Si <literal>« NoModuloArguments »</literal> est défini alors les arguments de la fonction ne sont jamais évalués en arithmétique modulaire.</para>
1882
<term><anchor id="gel-function-SetHelp"/>SetHelp</term>
1884
<synopsis>SetHelp (id,categorie,desc)</synopsis>
1885
<para>Définit une catégorie et une ligne de description d'aide pour une fonction.</para>
1890
<term><anchor id="gel-function-SetHelpAlias"/>SetHelpAlias</term>
1892
<synopsis>SetHelpAlias (id,alias)</synopsis>
1893
<para>Met en place un pseudonyme pour l'aide.</para>
1898
<term><anchor id="gel-function-chdir"/>chdir</term>
1900
<synopsis>chdir (rep)</synopsis>
1901
<para>Change le répertoire actuel, tout comme la commande <command>cd</command>.</para>
1906
<term><anchor id="gel-function-CurrentTime"/>CurrentTime</term>
1908
<synopsis>CurrentTime</synopsis>
1909
<para>Renvoie l'heure UNIX courante avec une précision de l'ordre de la microseconde sous forme d'un nombre à virgule flottante, c'est-à-dire le nombre de secondes écoulées depuis le 1er janvier 1970.</para>
1914
<term><anchor id="gel-function-display"/>display</term>
1916
<synopsis>display (chaîne,expr)</synopsis>
1917
<para>Affiche une chaîne de caractères et une expression séparées par deux points.</para>
1922
<term><anchor id="gel-function-error"/>error</term>
1924
<synopsis>error (chaîne)</synopsis>
1925
<para>Affiche une chaîne vers la sortie erreur (dans la console).</para>
1930
<term><anchor id="gel-function-exit"/>exit</term>
1932
<synopsis>exit</synopsis>
1933
<para>Alias : <function>quit</function></para>
1934
<para>Quitte le programme.</para>
1939
<term><anchor id="gel-function-false"/>false</term>
1941
<synopsis>false</synopsis>
1942
<para>Alias : <function>False</function>, <function>FALSE</function></para>
1943
<para>La valeur booléenne <constant>false</constant> (faux).</para>
1948
<term><anchor id="gel-function-manual"/>manual</term>
1950
<synopsis>manual</synopsis>
1951
<para>Affiche le manuel utilisateur.</para>
1956
<term><anchor id="gel-function-print"/>print</term>
1958
<synopsis>print (chaîne)</synopsis>
1959
<para>Affiche une expression suivie d'un retour à la ligne. L'argument <varname>chaine</varname> peut être n'importe quelle expression. Elle est transformée en chaîne avant d'être affichée.</para>
1964
<term><anchor id="gel-function-printn"/>printn</term>
1966
<synopsis>printn (chaîne)</synopsis>
1967
<para>Affiche une expression non suivie d'un retour à la ligne. L'argument <varname>chaine</varname> peut être n'importe quelle expression. Elle est transformée en chaîne avant d'être affichée.</para>
1972
<term><anchor id="gel-function-protect"/>protect</term>
1974
<synopsis>protect (id)</synopsis>
1975
<para>Protège une variable de la modification. C'est utilisé dans les fonctions internes de GEL pour leur éviter d'être accidentellement écrasées.</para>
1980
<term><anchor id="gel-function-ProtectAll"/>ProtectAll</term>
1982
<synopsis>ProtectAll ()</synopsis>
1983
<para>Protège toutes les variables, paramètres et fonctions actuellement définis de la modification. C'est utilisé dans les fonctions internes de GEL pour leur éviter d'être accidentellement écrasées. Normalement l'<application>Outil de maths Genius</application> considère que les variables non protégées sont définies par l'utilisateur.</para>
1988
<term><anchor id="gel-function-set"/>set</term>
1990
<synopsis>set (id,val)</synopsis>
1991
<para>Définit une variable globale. L'<varname>identifiant</varname> (id) peut être soit une chaîne de caractères, soit un identifiant précédé d'une apostrophe comme ci-dessous. Par exemple : <programlisting>set(`x,1)
1992
</programlisting> définit la variable globale <varname>x</varname> à 1.</para>
1997
<term><anchor id="gel-function-string"/>string</term>
1999
<synopsis>string (s)</synopsis>
2000
<para>Crée une chaîne de caractères à partir de n'importe quel argument.</para>
2005
<term><anchor id="gel-function-true"/>true</term>
2007
<synopsis>true</synopsis>
2008
<para>Alias : <function>True</function>, <function>TRUE</function></para>
2009
<para>La valeur booléenne <constant>true</constant> (vrai).</para>
2014
<term><anchor id="gel-function-undefine"/>undefine</term>
2016
<synopsis>undefine (id)</synopsis>
2017
<para>Alias : <function>Undefine</function></para>
2018
<para>Annule la définition d'une variable, y compris les variables locales et globales, toutes les valeurs dans tous les contextes sont effacées. Vous ne devriez vraiment pas utiliser cette fonction pour des variables locales. Un vecteur d'identifiants peut également être transmis pour annuler la définition de plusieurs variables.</para>
2023
<term><anchor id="gel-function-UndefineAll"/>UndefineAll</term>
2025
<synopsis>UndefineAll ()</synopsis>
2026
<para>Annule la définition de toutes les variables globales non protégées (y compris les fonctions et les paramètres). Normalement l'<application>Outil de maths Genius</application> considère que les variables protégées sont des variables et des fonctions définies par le système. Notez que <function>UndefineAll</function> efface seulement la définition globale des symboles et pas les définitions locales donc cela peut être utilisé à l'intérieur d'autres fonctions sans danger.</para>
2031
<term><anchor id="gel-function-unprotect"/>unprotect</term>
2033
<synopsis>unprotect (id)</synopsis>
2034
<para>Annule la protection d'une variable contre sa modification.</para>
2039
<term><anchor id="gel-function-UserVariables"/>UserVariables</term>
2041
<synopsis>UserVariables ()</synopsis>
2042
<para>Renvoie un vecteur d'identifiants des variables globales définies par l'utilisateur (non protégées).</para>
2047
<term><anchor id="gel-function-wait"/>wait</term>
2049
<synopsis>wait (secs)</synopsis>
2050
<para>Attend un nombre spécifié de secondes. <varname>secs</varname> ne doit pas être négatif. Zéro est accepté et rien ne se passe dans ce cas mis à part, peut-être, le traitement d'évènements de l'interface utilisateur.</para>
2055
<term><anchor id="gel-function-version"/>version</term>
2057
<synopsis>version</synopsis>
2058
<para>Renvoie la version de Genius sous la forme d'un vecteur horizontal à 3 valeurs : en premier la version majeure, puis la version mineure et enfin le niveau de correction.</para>
2063
<term><anchor id="gel-function-warranty"/>warranty</term>
2065
<synopsis>warranty</synopsis>
2066
<para>Renvoie les informations sur la garantie.</para>
2073
<sect1 id="genius-gel-function-parameters">
2074
<title>Paramètres</title>
2077
<term><anchor id="gel-function-ChopTolerance"/>ChopTolerance</term>
2079
<synopsis>ChopTolerance = nombre</synopsis>
2080
<para>Tolérance pour la fonction <function>Chop</function>.</para>
2085
<term><anchor id="gel-function-ContinuousNumberOfTries"/>ContinuousNumberOfTries</term>
2087
<synopsis>ContinuousNumberOfTries = nombre</synopsis>
2088
<para>Nombre d'itérations à essayer pour rechercher la continuité et les limites d'une fonction.</para>
2093
<term><anchor id="gel-function-ContinuousSFS"/>ContinuousSFS</term>
2095
<synopsis>ContinuousSFS = nombre</synopsis>
2096
<para>Nombre d'étapes successives pour atteindre la tolérance pour le calcul de la continuité.</para>
2101
<term><anchor id="gel-function-ContinuousTolerance"/>ContinuousTolerance</term>
2103
<synopsis>ContinuousTolerance = nombre</synopsis>
2104
<para>Tolérance pour la continuité d'une fonction et pour le calcul de la limite.</para>
2109
<term><anchor id="gel-function-DerivativeNumberOfTries"/>DerivativeNumberOfTries</term>
2111
<synopsis>DerivativeNumberOfTries = nombre</synopsis>
2112
<para>Nombre d'itérations à essayer pour trouver la limite pour la dérivée.</para>
2117
<term><anchor id="gel-function-DerivativeSFS"/>DerivativeSFS</term>
2119
<synopsis>DerivativeSFS = nombre</synopsis>
2120
<para>Nombre d'étapes successives pour atteindre la tolérance pour le calcul de la dérivée.</para>
2125
<term><anchor id="gel-function-DerivativeTolerance"/>DerivativeTolerance</term>
2127
<synopsis>DerivativeTolerance = nombre</synopsis>
2128
<para>Tolérance pour le calcul de la dérivée des fonctions.</para>
2133
<term><anchor id="gel-function-ErrorFunctionTolerance"/>ErrorFunctionTolerance</term>
2135
<synopsis>ErrorFunctionTolerance = nombre</synopsis>
2136
<para>Tolérance pour la fonction <function>ErrorFunction</function>.</para>
2141
<term><anchor id="gel-function-FloatPrecision"/>FloatPrecision</term>
2143
<synopsis>FloatPrecision = nombre</synopsis>
2144
<para>Précision en virgule flottante.</para>
2149
<term><anchor id="gel-function-FullExpressions"/>FullExpressions</term>
2151
<synopsis>FullExpressions = booléen</synopsis>
2152
<para>Affiche les expressions complètes, même celles de plus d'une ligne.</para>
2157
<term><anchor id="gel-function-GaussDistributionTolerance"/>GaussDistributionTolerance</term>
2159
<synopsis>GaussDistributionTolerance = nombre</synopsis>
2160
<para>Tolérance pour la fonction <function>GaussDistribution</function>.</para>
2165
<term><anchor id="gel-function-IntegerOutputBase"/>IntegerOutputBase</term>
2167
<synopsis>IntegerOutputBase = nombre</synopsis>
2168
<para>Base de sortie pour les entiers.</para>
2173
<term><anchor id="gel-function-IsPrimeMillerRabinReps"/>IsPrimeMillerRabinReps</term>
2175
<synopsis>IsPrimeMillerRabinReps = nombre</synopsis>
2176
<para>Nombre de tests supplémentaires de Miller-Rabin à lancer sur un nombre avant de le déclarer comme premier dans <function>IsPrime</function>.</para>
2181
<term><anchor id="gel-function-LinePlotDrawLegends"/>LinePlotDrawLegends</term>
2183
<synopsis>LinePlotDrawLegends = true</synopsis>
2184
<para>Indique à genius de tracer les légendes pour les <link linkend="genius-gel-function-list-plotting">fonctions de tracé de graphiques</link> telles que <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
2189
<term><anchor id="gel-function-LinePlotDrawAxisLabels"/>LinePlotDrawAxisLabels</term>
2191
<synopsis>LinePlotDrawAxisLabels = true</synopsis>
2192
<para>Tells genius to draw the axis labels for <link linkend="genius-gel-function-list-plotting">line plotting
2193
functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
2199
<term><anchor id="gel-function-LinePlotVariableNames"/>LinePlotVariableNames</term>
2201
<synopsis>LinePlotVariableNames = ["x","y","z","t"]</synopsis>
2202
<para>Indique à Genius les noms des variables utilisés pour les <link linkend="genius-gel-function-list-plotting">fonctions de tracé de graphiques</link> telles que <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> et autres.</para>
2207
<term><anchor id="gel-function-LinePlotWindow"/>LinePlotWindow</term>
2209
<synopsis>LinePlotWindow = [x1,x2,y1,y2]</synopsis>
2210
<para>Définit les limites pour les <link linkend="genius-gel-function-list-plotting">fonctions de tracé de graphiques</link> telles que <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
2216
<term><anchor id="gel-function-MaxDigits"/>MaxDigits</term>
2218
<synopsis>MaxDigits = nombre</synopsis>
2219
<para>Nombre maximum de chiffres à afficher.</para>
2224
<term><anchor id="gel-function-MaxErrors"/>MaxErrors</term>
2226
<synopsis>MaxErrors = nombre</synopsis>
2227
<para>Nombre maximum d'erreurs à afficher.</para>
2232
<term><anchor id="gel-function-MixedFractions"/>MixedFractions</term>
2234
<synopsis>MixedFractions = booléen</synopsis>
2235
<para>Si vrai, les fractions mixtes sont affichées.</para>
2240
<term><anchor id="gel-function-NumericalIntegralFunction"/>NumericalIntegralFunction</term>
2242
<synopsis>NumericalIntegralFunction = fonction</synopsis>
2243
<para>Fonction utilisée pour l'intégration numérique dans la fonction <function>NumericalIntegral</function>.</para>
2248
<term><anchor id="gel-function-NumericalIntegralSteps"/>NumericalIntegralSteps</term>
2250
<synopsis>NumericalIntegralSteps = nombre</synopsis>
2251
<para>Nombre d'étapes à réaliser pour la fonction <function>NumericalIntegral</function>.</para>
2256
<term><anchor id="gel-function-OutputChopExponent"/>OutputChopExponent</term>
2258
<synopsis>OutputChopExponent = nombre</synopsis>
2259
<para>Lorsqu'un autre nombre dans l'objet qui est affiché (une matrice ou une valeur) est plus grand que 10<superscript>-OutputChopWhenExponent</superscript> et que le nombre actuellement affiché est inférieur à 10<superscript>-OutputChopExponent</superscript> alors afficher <computeroutput>0.0</computeroutput> au lieu du nombre.</para>
2260
<para>La sortie n'est jamais tronquée si <function>OutputChopExponent</function> vaut zéro. Cela doit être un nombre entier positif.</para>
2261
<para>Si vous voulez toujours que la sortie soit tronquée selon <function>OutputChopExponent</function> alors définissez <function>OutputChopWhenExponent</function> à quelque chose de supérieur ou égal à <function>OutputChopExponent</function>.</para>
2266
<term><anchor id="gel-function-OutputChopWhenExponent"/>OutputChopWhenExponent</term>
2268
<synopsis>OutputChopWhenExponent = nombre</synopsis>
2269
<para>Définit quand la sortie est tronquée. Consultez <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
2274
<term><anchor id="gel-function-OutputStyle"/>OutputStyle</term>
2276
<synopsis>OutputStyle = chaîne</synopsis>
2277
<para>Style des affichages, cela peut être <literal>normal</literal>, <literal>latex</literal>, <literal>mathml</literal> ou <literal>troff</literal>.</para>
2278
<para>Cela affecte principalement la façon dont les matrices et les fractions sont affichées et est utile pour le copier/coller vers des documents. Par exemple, vous pouvez définir ce paramètre à « latex » par : <programlisting>OutputStyle = "latex"
2279
</programlisting></para>
2284
<term><anchor id="gel-function-ResultsAsFloats"/>ResultsAsFloats</term>
2286
<synopsis>ResultsAsFloats = booléen</synopsis>
2287
<para>Convertit tous les résultats en nombres flottants avant de les afficher.</para>
2292
<term><anchor id="gel-function-ScientificNotation"/>ScientificNotation</term>
2294
<synopsis>ScientificNotation = booléen</synopsis>
2295
<para>Utilise la notation scientifique.</para>
2300
<term><anchor id="gel-function-SlopefieldTicks"/>SlopefieldTicks</term>
2302
<synopsis>SlopefieldTicks = [verticale,horizontale]</synopsis>
2303
<para>Définit le nombre de petits traits verticaux et horizontaux dans un graphique de champ de tangente (consultez <link linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).</para>
2308
<term><anchor id="gel-function-SumProductNumberOfTries"/>SumProductNumberOfTries</term>
2310
<synopsis>SumProductNumberOfTries = nombre</synopsis>
2311
<para>Nombre d'itérations à essayer pour les fonctions <function>InfiniteSum</function> et <function>InfiniteProduct</function>.</para>
2316
<term><anchor id="gel-function-SumProductSFS"/>SumProductSFS</term>
2318
<synopsis>SumProductSFS = nombre</synopsis>
2319
<para>Nombre d'étapes successives pour atteindre la tolérance pour les fonctions <function>InfiniteSum</function> et <function>InfiniteProduct</function>.</para>
2324
<term><anchor id="gel-function-SumProductTolerance"/>SumProductTolerance</term>
2326
<synopsis>SumProductTolerance = nombre</synopsis>
2327
<para>Tolérance pour les fonctions <function>InfiniteSum</function> et <function>InfiniteProduct</function>.</para>
2332
<term><anchor id="gel-function-SurfacePlotDrawLegends"/>SurfacePlotDrawLegends</term>
2334
<synopsis>SurfacePlotDrawLegends = true</synopsis>
2335
<para>Tells genius to draw the legends for <link linkend="genius-gel-function-list-plotting">surface plotting
2336
functions</link> such as <link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.
2342
<term><anchor id="gel-function-SurfacePlotVariableNames"/>SurfacePlotVariableNames</term>
2344
<synopsis>SurfacePlotVariableNames = ["x","y","z"]</synopsis>
2345
<para>Indique à Genius les noms de variables à utiliser comme noms par défaut pour les <link linkend="genius-gel-function-list-plotting">fonctions de tracé de surface</link> utilisant <link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>. Notez que le <varname>z</varname> ne fait pas référence à l'axe dépendant (vertical) mais à la variable complexe z indépendante <userinput>z=x+iy</userinput>.</para>
2350
<term><anchor id="gel-function-SurfacePlotWindow"/>SurfacePlotWindow</term>
2352
<synopsis>SurfacePlotWindow = [x1,x2,y1,y2,z1,z2]</synopsis>
2353
<para>Définit les limites pour les tracés de surface (consultez <link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>).</para>
2358
<term><anchor id="gel-function-VectorfieldNormalized"/>VectorfieldNormalized</term>
2360
<synopsis>VectorfieldNormalized = true</synopsis>
2361
<para>Indique si les longueurs de flèches du tracé de champ de vecteurs doivent être normalisées. Si true (vrai), les tracés de champ de vecteurs n'affichent que la direction et pas l'amplitude (consultez <link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).</para>
2366
<term><anchor id="gel-function-VectorfieldTicks"/>VectorfieldTicks</term>
2368
<synopsis>VectorfieldTicks = [verticale,horizontale]</synopsis>
2369
<para>Définit le nombre de petits traits verticaux et horizontaux dans un graphique de champ de vecteurs (consultez <link linkend="gel-function-SlopefieldPlot"><function>VectorfieldPlot</function></link>).</para>
2376
<sect1 id="genius-gel-function-list-constants">
2377
<title>Constantes</title>
2380
<term><anchor id="gel-function-CatalanConstant"/>CatalanConstant</term>
2382
<synopsis>CatalanConstant</synopsis>
2383
<para>Constante de Catalan, approximativement 0,915..., elle est définie comme la série des termes <userinput>(-1^k)/((2*k+1)^2)</userinput> où <varname>k</varname> va de 0 à l'infini.</para>
2384
<para>Consultez <ulink url="http://mathworld.wolfram.com/CatalansConstant.html">Mathworld</ulink> pour plus d'informations.</para>
2389
<term><anchor id="gel-function-EulerConstant"/>EulerConstant</term>
2391
<synopsis>EulerConstant</synopsis>
2392
<para>Alias : <function>gamma</function></para>
2393
<para>Constante d'Euler gamma, parfois appelée la constante d'Euler-Mascheroni.</para>
2394
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Constante_d%27Euler-Mascheroni">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/MascheroniConstant.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/Euler-MascheroniConstant.html">Mathworld</ulink> pour plus d'informations.</para>
2399
<term><anchor id="gel-function-GoldenRatio"/>GoldenRatio</term>
2401
<synopsis>GoldenRatio</synopsis>
2402
<para>Le nombre d'or.</para>
2403
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Nombre_d%27or">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/GoldenRatio.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/GoldenRatio.html">Mathworld</ulink> pour plus d'informations.</para>
2408
<term><anchor id="gel-function-Gravity"/>Gravity</term>
2410
<synopsis>Gravity</synopsis>
2411
<para>Accélération de la chute libre au niveau de la mer.</para>
2412
<para>Consultez <ulink url="http://en.wikipedia.org/wiki/Standard_gravity">Wikipedia</ulink> pour plus d'informations.</para>
2417
<term><anchor id="gel-function-e"/>e</term>
2419
<synopsis>e</synopsis>
2420
<para>La base du logarithme naturel. <userinput>e^x</userinput> est la fonction exponentielle <link linkend="gel-function-exp"><function>exp</function></link>. C'est approximativement le nombre 2.71828182846...</para>
2421
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/E_%28nombre%29">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/E.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/e.html">Mathworld</ulink> pour plus d'informations.</para>
2426
<term><anchor id="gel-function-pi"/>pi</term>
2428
<synopsis>pi</synopsis>
2429
<para>Le nombre pi, c'est-à-dire le rapport de la circonférence d'un cercle sur son diamètre. Il vaut approximativement 3.14159265359...</para>
2430
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Pi">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/Pi.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/Pi.html">Mathworld</ulink> pour plus d'informations.</para>
2437
<sect1 id="genius-gel-function-list-numeric">
2438
<title>Nombres</title>
2441
<term><anchor id="gel-function-AbsoluteValue"/>AbsoluteValue</term>
2443
<synopsis>AbsoluteValue (x)</synopsis>
2444
<para>Alias : <function>abs</function></para>
2445
<para>Valeur absolue d'un nombre et, si <varname>x</varname> est une grandeur complexe, le module de <varname>x</varname>, c'est-à-dire la distance de <varname>x</varname> à l'origine.</para>
2446
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Valeur_absolue">Wikipedia</ulink>, <ulink url="http://planetmath.org/encyclopedia/AbsoluteValue.html">Planetmath (valeur absolue)</ulink>, <ulink url="http://planetmath.org/encyclopedia/ModulusOfComplexNumber.html">Planetmath (module)</ulink>, <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld (valeur absolue)</ulink> ou <ulink url="http://mathworld.wolfram.com/ComplexModulus.html">Mathworld (module complexe)</ulink> pour plus d'informations.</para>
2451
<term><anchor id="gel-function-Chop"/>Chop</term>
2453
<synopsis>Chop (x)</synopsis>
2454
<para>Remplace les très petits nombres par zéro.</para>
2459
<term><anchor id="gel-function-ComplexConjugate"/>ComplexConjugate</term>
2461
<synopsis>ComplexConjugate (z)</synopsis>
2462
<para>Alias : <function>conj</function> <function>Conj</function></para>
2463
<para>Calcule le conjugué du nombre complexe <varname>z</varname>. Si <varname>z</varname> est un vecteur ou une matrice, tous les éléments sont conjugués.</para>
2464
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Conjugu%C3%A9">Wikipedia</ulink> pour plus d'informations.</para>
2469
<term><anchor id="gel-function-Denominator"/>Denominator</term>
2471
<synopsis>Denominator (x)</synopsis>
2472
<para>Renvoie le dénominateur d'un nombre rationnel.</para>
2473
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/D%C3%A9nominateurr">Wikipedia</ulink> pour plus d'informations.</para>
2478
<term><anchor id="gel-function-FractionalPart"/>FractionalPart</term>
2480
<synopsis>FractionalPart (x)</synopsis>
2481
<para>Renvoie la partie fractionnelle d'un nombre.</para>
2482
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Partie_fractionnaire">Wikipedia</ulink> pour plus d'informations.</para>
2487
<term><anchor id="gel-function-Im"/>Im</term>
2489
<synopsis>Im (z)</synopsis>
2490
<para>Alias : <function>ImaginaryPart</function></para>
2491
<para>Renvoie la partie imaginaire d'un nombre complexe.</para>
2492
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Partie_imaginaire">Wikipedia</ulink> pour plus d'informations.</para>
2497
<term><anchor id="gel-function-IntegerQuotient"/>IntegerQuotient</term>
2499
<synopsis>IntegerQuotient (m,n)</synopsis>
2500
<para>Division sans reste.</para>
2505
<term><anchor id="gel-function-IsComplex"/>IsComplex</term>
2507
<synopsis>IsComplex (nbre)</synopsis>
2508
<para>Vérifie si l'argument est un nombre complexe (non réel).</para>
2513
<term><anchor id="gel-function-IsComplexRational"/>IsComplexRational</term>
2515
<synopsis>IsComplexRational (nbre)</synopsis>
2516
<para>Vérifie si l'argument est potentiellement un nombre rationnel complexe. C'est-à-dire si la partie réelle et la partie imaginaire sont fournies sous la forme de nombres rationnels. Bien sûr, rationnel signifie simplement « non enregistré comme un nombre à virgule flottante ».</para>
2521
<term><anchor id="gel-function-IsFloat"/>IsFloat</term>
2523
<synopsis>IsFloat (nbre)</synopsis>
2524
<para>Vérifie si l'argument est un nombre flottant (non complexe).</para>
2529
<term><anchor id="gel-function-IsGaussInteger"/>IsGaussInteger</term>
2531
<synopsis>IsGaussInteger (nbre)</synopsis>
2532
<para>Alias : <function>IsComplexInteger</function></para>
2533
<para>Vérifie si l'argument peut être un entier complexe.</para>
2538
<term><anchor id="gel-function-IsInteger"/>IsInteger</term>
2540
<synopsis>IsInteger (nbre)</synopsis>
2541
<para>Vérifie si l'argument est un entier (non complexe).</para>
2546
<term><anchor id="gel-function-IsNonNegativeInteger"/>IsNonNegativeInteger</term>
2548
<synopsis>IsNonNegativeInteger (nbre)</synopsis>
2549
<para>Vérifie si l'argument est un entier réel non négatif.</para>
2554
<term><anchor id="gel-function-IsPositiveInteger"/>IsPositiveInteger</term>
2556
<synopsis>IsPositiveInteger (nbre)</synopsis>
2557
<para>Alias : <function>IsNaturalNumber</function></para>
2558
<para>Vérifie si l'argument est un entier réel positif. Notez que par convention 0 n'est pas un nombre naturel.</para>
2563
<term><anchor id="gel-function-IsRational"/>IsRational</term>
2565
<synopsis>IsRational (nbre)</synopsis>
2566
<para>Vérifie si l'argument est un nombre rationnel (non complexe). Bien sûr, rationnel signifie simplement « non enregistré comme un nombre à virgule flottante ».</para>
2571
<term><anchor id="gel-function-IsReal"/>IsReal</term>
2573
<synopsis>IsReal (nbre)</synopsis>
2574
<para>Vérifie si l'argument est un nombre réel.</para>
2579
<term><anchor id="gel-function-Numerator"/>Numerator</term>
2581
<synopsis>Numerator (x)</synopsis>
2582
<para>Renvoie le numérateur d'un nombre rationnel.</para>
2583
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Num%C3%A9rateur">Wikipedia</ulink> pour plus d'informations.</para>
2588
<term><anchor id="gel-function-Re"/>Re</term>
2590
<synopsis>Re (z)</synopsis>
2591
<para>Alias : <function>RealPart</function></para>
2592
<para>Renvoie la partie réelle d'un nombre complexe.</para>
2593
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Partie_r%C3%A9elle">Wikipedia</ulink> pour plus d'informations.</para>
2598
<term><anchor id="gel-function-Sign"/>Sign</term>
2600
<synopsis>Sign (x)</synopsis>
2601
<para>Alias : <function>sign</function></para>
2602
<para>Renvoie le signe d'un nombre. C'est-à-dire renvoie <literal>-1</literal> si la valeur est négative, <literal>0</literal> si la valeur est nulle et <literal>1</literal> si la valeur est positive. Si <varname>x</varname> est une grandeur complexe alors <function>Sign</function> renvoie la direction ou 0.</para>
2607
<term><anchor id="gel-function-ceil"/>ceil</term>
2609
<synopsis>ceil (x)</synopsis>
2610
<para>Alias : <function>Ceiling</function></para>
2611
<para>Get the lowest integer more than or equal to <varname>n</varname>. Examples:
2612
<screen><prompt>genius></prompt> <userinput>ceil(1.1)</userinput>
2614
<prompt>genius></prompt> <userinput>ceil(-1.1)</userinput>
2618
<para>Note that you should be careful and notice that floating point
2619
numbers are stored an binary and so may not be what you
2620
expect. For example <userinput>ceil(420/4.2)</userinput>
2621
returns 101 instead of the expected 100. This is because
2622
4.2 is actually very slightly less than 4.2. Use rational
2623
representation <userinput>42/10</userinput> if you want
2630
<term><anchor id="gel-function-exp"/>exp</term>
2632
<synopsis>exp (x)</synopsis>
2633
<para>La fonction exponentielle. C'est la fonction <userinput>e^x</userinput> où <varname>e</varname> est la <link linkend="gel-function-e">base du logarithme naturel</link>.</para>
2634
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Fonction_exponentielle">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/LogarithmFunction.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/ExponentialFunction.html">Mathworld</ulink> pour plus d'informations.</para>
2639
<term><anchor id="gel-function-float"/>float</term>
2641
<synopsis>float (x)</synopsis>
2642
<para>Transforme le nombre en nombre à virgule flottante. C'est-à-dire la représentation à virgule flottante du nombre <varname>x</varname>.</para>
2647
<term><anchor id="gel-function-floor"/>floor</term>
2649
<synopsis>floor (x)</synopsis>
2650
<para>Alias : <function>Floor</function></para>
2651
<para>Renvoie le plus grand entier inférieur ou égal à <varname>n</varname>.</para>
2656
<term><anchor id="gel-function-ln"/>ln</term>
2658
<synopsis>ln (x)</synopsis>
2659
<para>Le logarithme naturel, le logarithme de base <varname>e</varname>.</para>
2664
<term><anchor id="gel-function-log"/>log</term>
2666
<synopsis>log (x)</synopsis>
2667
<synopsis>log (x,b)</synopsis>
2668
<para>Logarithme de <varname>x</varname> dans la base <varname>b</varname> (appelle la fonction <function>DiscreteLog</function> dans le mode modulo). Si la base n'est pas donnée, <varname>e</varname> est utilisée.</para>
2673
<term><anchor id="gel-function-log10"/>log10</term>
2675
<synopsis>log10 (x)</synopsis>
2676
<para>Logarithme base 10 de <varname>x</varname>.</para>
2681
<term><anchor id="gel-function-log2"/>log2</term>
2683
<synopsis>log2 (x)</synopsis>
2684
<para>Alias : <function>lg</function></para>
2685
<para>Logarithme base 2 de <varname>x</varname>.</para>
2690
<term><anchor id="gel-function-max"/>max</term>
2692
<synopsis>max (a,params...)</synopsis>
2693
<para>Alias : <function>Max</function> <function>Maximum</function></para>
2694
<para>Renvoie le maximum des arguments ou de la matrice.</para>
2699
<term><anchor id="gel-function-min"/>min</term>
2701
<synopsis>min (a,params...)</synopsis>
2702
<para>Alias : <function>Min</function> <function>Minimum</function></para>
2703
<para>Renvoie le minimum des arguments ou de la matrice.</para>
2708
<term><anchor id="gel-function-rand"/>rand</term>
2710
<synopsis>rand (taille...)</synopsis>
2711
<para>Génère aléatoirement des nombres flottants dans l'intervalle <literal>[0,1)</literal>. Si taille est donnée alors une matrice (si deux nombres sont fournis) ou un vecteur (si un seul est fourni) de la taille indiquée est renvoyé.</para>
2716
<term><anchor id="gel-function-randint"/>randint</term>
2718
<synopsis>randint (max,taille...)</synopsis>
2719
<para>Génère aléatoirement des entiers dans l'intervalle <literal>[0,max)</literal>. Si taille est donné alors une matrice (si deux nombres sont fournis) ou un vecteur (si un seul est fourni) de la taille indiquée est renvoyé. Par exemple, <screen><prompt>genius></prompt> <userinput>randint(4)</userinput>
2721
<prompt>genius></prompt> <userinput>randint(4,2)</userinput>
2724
<prompt>genius></prompt> <userinput>randint(4,2,3)</userinput>
2733
<term><anchor id="gel-function-round"/>round</term>
2735
<synopsis>round (x)</synopsis>
2736
<para>Alias : <function>Round</function></para>
2737
<para>Arrondit un nombre.</para>
2742
<term><anchor id="gel-function-sqrt"/>sqrt</term>
2744
<synopsis>sqrt (x)</synopsis>
2745
<para>Alias : <function>SquareRoot</function></para>
2746
<para>La racine carrée. Au cours de calculs en mode modulaire, certains entiers renvoient soit <constant>null</constant> ou un vecteur contenant les racines carrées. Exemples : <screen><prompt>genius></prompt> <userinput>sqrt(2)</userinput>
2748
<prompt>genius></prompt> <userinput>sqrt(-1)</userinput>
2750
<prompt>genius></prompt> <userinput>sqrt(4) mod 7</userinput>
2753
<prompt>genius></prompt> <userinput>2*2 mod 7</userinput>
2756
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/SquareRoot.html">Planetmath</ulink> pour plus d'informations.</para>
2761
<term><anchor id="gel-function-trunc"/>trunc</term>
2763
<synopsis>trunc (x)</synopsis>
2764
<para>Alias : <function>Truncate</function><function>IntegerPart</function></para>
2765
<para>Tronque le nombre à un entier (renvoie la partie entière).</para>
2772
<sect1 id="genius-gel-function-list-trigonometry">
2773
<title>Trigonométrie</title>
2776
<term><anchor id="gel-function-acos"/>acos</term>
2778
<synopsis>acos (x)</synopsis>
2779
<para>Alias : <function>arccos</function></para>
2780
<para>Fonction arccos (arc cosinus).</para>
2785
<term><anchor id="gel-function-acosh"/>acosh</term>
2787
<synopsis>acosh (x)</synopsis>
2788
<para>Alias : <function>arccosh</function></para>
2789
<para>Fonction arccosh (cosinus hyperbolique inverse).</para>
2794
<term><anchor id="gel-function-acot"/>acot</term>
2796
<synopsis>acot (x)</synopsis>
2797
<para>Alias : <function>arccot</function></para>
2798
<para>Fonction arccot (cotangente inverse).</para>
2803
<term><anchor id="gel-function-acoth"/>acoth</term>
2805
<synopsis>acoth (x)</synopsis>
2806
<para>Alias : <function>arccoth</function></para>
2807
<para>Fonction arccoth (cotangente hyperbolique inverse).</para>
2812
<term><anchor id="gel-function-acsc"/>acsc</term>
2814
<synopsis>acsc (x)</synopsis>
2815
<para>Alias : <function>arccsc</function></para>
2816
<para>Inverse de la fonction cosécante.</para>
2821
<term><anchor id="gel-function-acsch"/>acsch</term>
2823
<synopsis>acsch (x)</synopsis>
2824
<para>Alias : <function>arccsch</function></para>
2825
<para>Inverse de la fonction cosécante hyperbolique.</para>
2830
<term><anchor id="gel-function-asec"/>asec</term>
2832
<synopsis>asec (x)</synopsis>
2833
<para>Alias : <function>arcsec</function></para>
2834
<para>Inverse de la fonction sécante.</para>
2839
<term><anchor id="gel-function-asech"/>asech</term>
2841
<synopsis>asech (x)</synopsis>
2842
<para>Alias : <function>arcsech</function></para>
2843
<para>Inverse de la fontion sécante hyperbolique.</para>
2848
<term><anchor id="gel-function-asin"/>asin</term>
2850
<synopsis>asin (x)</synopsis>
2851
<para>Alias : <function>arcsin</function></para>
2852
<para>La fonction arcsin (sinus inverse).</para>
2857
<term><anchor id="gel-function-asinh"/>asinh</term>
2859
<synopsis>asinh (x)</synopsis>
2860
<para>Alias : <function>arcsinh</function></para>
2861
<para>Fonction arcsinh (sinus hyperbolique inverse).</para>
2866
<term><anchor id="gel-function-atan"/>atan</term>
2868
<synopsis>atan (x)</synopsis>
2869
<para>Alias : <function>arctan</function></para>
2870
<para>Calcule la fonction arctangente (tangente inverse).</para>
2871
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Arctangente">Wikipedia</ulink> or <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> pour plus d'informations.</para>
2876
<term><anchor id="gel-function-atanh"/>atanh</term>
2878
<synopsis>atanh (x)</synopsis>
2879
<para>Alias : <function>arctanh</function></para>
2880
<para>Fonction arctanh (tangente hyperbolique inverse).</para>
2885
<term><anchor id="gel-function-atan2"/>atan2</term>
2887
<synopsis>atan2 (y, x)</synopsis>
2888
<para>Alias : <function>arctan2</function></para>
2889
<para>Calcule la fonction arctan2. Si <userinput>x>0</userinput> alors renvoie <userinput>atan(y/x)</userinput>. Si <userinput>x<0</userinput> alors cela renvoie <userinput>sign(y) * (pi - atan(|y/x|)</userinput>. Si <userinput>x=0</userinput> cela renvoie <userinput>sign(y) *
2890
pi/2</userinput>. <userinput>atan2(0,0)</userinput> renvoie 0 plutôt que d'échouer.</para>
2891
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Atan2">Wikipedia</ulink> ou <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> pour plus d'informations.</para>
2896
<term><anchor id="gel-function-cos"/>cos</term>
2898
<synopsis>cos (x)</synopsis>
2899
<para>Calcule la fonction cosinus.</para>
2900
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/DefinitionsInTrigonometry.html">Planetmath</ulink> pour plus d'informations.</para>
2905
<term><anchor id="gel-function-cosh"/>cosh</term>
2907
<synopsis>cosh (x)</synopsis>
2908
<para>Calcule la fonction cosinus hyperbolique.</para>
2909
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/HyperbolicFunctions.html">Planetmath</ulink> pour plus d'informations.</para>
2914
<term><anchor id="gel-function-cot"/>cot</term>
2916
<synopsis>cot (x)</synopsis>
2917
<para>Fonction cotangente.</para>
2918
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/DefinitionsInTrigonometry.html">Planetmath</ulink> pour plus d'informations.</para>
2923
<term><anchor id="gel-function-coth"/>coth</term>
2925
<synopsis>coth (x)</synopsis>
2926
<para>Fonction cotangente hyperbolique.</para>
2927
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/HyperbolicFunctions.html">Planetmath</ulink> pour plus d'informations.</para>
2932
<term><anchor id="gel-function-csc"/>csc</term>
2934
<synopsis>csc (x)</synopsis>
2935
<para>Fonction cosécante.</para>
2936
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/DefinitionsInTrigonometry.html">Planetmath</ulink> pour plus d'informations.</para>
2941
<term><anchor id="gel-function-csch"/>csch</term>
2943
<synopsis>csch (x)</synopsis>
2944
<para>Fonction cosécante hyperbolique.</para>
2945
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/HyperbolicFunctions.html">Planetmath</ulink> pour plus d'informations.</para>
2950
<term><anchor id="gel-function-sec"/>sec</term>
2952
<synopsis>sec (x)</synopsis>
2953
<para>Fonction sécante.</para>
2954
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/DefinitionsInTrigonometry.html">Planetmath</ulink> pour plus d'informations.</para>
2959
<term><anchor id="gel-function-sech"/>sech</term>
2961
<synopsis>sech (x)</synopsis>
2962
<para>Fonction sécante hyperbolique.</para>
2963
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/HyperbolicFunctions.html">Planetmath</ulink> pour plus d'informations.</para>
2968
<term><anchor id="gel-function-sin"/>sin</term>
2970
<synopsis>sin (x)</synopsis>
2971
<para>Calcule la fonction sinus.</para>
2972
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/DefinitionsInTrigonometry.html">Planetmath</ulink> pour plus d'informations.</para>
2977
<term><anchor id="gel-function-sinh"/>sinh</term>
2979
<synopsis>sinh (x)</synopsis>
2980
<para>Calcule la fonction sinus hyperbolique.</para>
2981
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/HyperbolicFunctions.html">Planetmath</ulink> pour plus d'informations.</para>
2986
<term><anchor id="gel-function-tan"/>tan</term>
2988
<synopsis>tan (x)</synopsis>
2989
<para>Calcule la fonction tangente.</para>
2990
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/DefinitionsInTrigonometry.html">Planetmath</ulink> pour plus d'informations.</para>
2995
<term><anchor id="gel-function-tanh"/>tanh</term>
2997
<synopsis>tanh (x)</synopsis>
2998
<para>Fonction tangente hyperbolique.</para>
2999
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/HyperbolicFunctions.html">Planetmath</ulink> pour plus d'informations.</para>
3006
<sect1 id="genius-gel-function-list-number-theory">
3007
<title>Théorie des nombres</title>
3010
<term><anchor id="gel-function-AreRelativelyPrime"/>AreRelativelyPrime</term>
3012
<synopsis>AreRelativelyPrime (a,b)</synopsis>
3013
<para>Si les entiers <varname>a</varname> et <varname>b</varname> sont premiers entre eux ? Renvoie <constant>true</constant> (vrai) ou <constant>false</constant> (faux).</para>
3014
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/RelativelyPrime.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/RelativelyPrime.html">Mathworld</ulink> pour plus d'informations.</para>
3019
<term><anchor id="gel-function-BernoulliNumber"/>BernoulliNumber</term>
3021
<synopsis>BernoulliNumber (n)</synopsis>
3022
<para>Renvoie le <varname>n</varname>-ième nombre de Bernoulli.</para>
3023
<para>Consultez <ulink url="http://en.wikipedia.org/wiki/Bernoulli_number">Wikipedia</ulink> ou <ulink url="http://mathworld.wolfram.com/BernoulliNumber.html">Mathworld</ulink> pour plus d'informations.</para>
3028
<term><anchor id="gel-function-ChineseRemainder"/>ChineseRemainder</term>
3030
<synopsis>ChineseRemainder (a,m)</synopsis>
3031
<para>Alias : <function>CRT</function></para>
3032
<para>Recherche <varname>x</varname> qui résout le système défini par le vecteur <varname>a</varname> et modulo les éléments de <varname>m</varname>, en utilisant le théorème des restes chinois.</para>
3033
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_des_restes_chinois">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/ChineseRemainderTheorem.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/ChineseRemainderTheorem.html">Mathworld</ulink> pour plus d'informations.</para>
3038
<term><anchor id="gel-function-CombineFactorizations"/>CombineFactorizations</term>
3040
<synopsis>CombineFactorizations (a,b)</synopsis>
3041
<para>Étant donné deux factorisations, donne la factorisation du produit.</para>
3042
<para>Consultez <link linkend="gel-function-Factorize">Factorize</link>.</para>
3047
<term><anchor id="gel-function-ConvertFromBase"/>ConvertFromBase</term>
3049
<synopsis>ConvertFromBase (v,b)</synopsis>
3050
<para>Convertit un vecteur de valeurs indiquant les puissances de b en un nombre.</para>
3055
<term><anchor id="gel-function-ConvertToBase"/>ConvertToBase</term>
3057
<synopsis>ConvertToBase (n,b)</synopsis>
3058
<para>Convertit un nombre en un vecteur contenant les puissances des éléments dans la base <varname>b</varname>.</para>
3063
<term><anchor id="gel-function-DiscreteLog"/>DiscreteLog</term>
3065
<synopsis>DiscreteLog (n,b,q)</synopsis>
3066
<para>Calcule le logarithme discret de <varname>n</varname> base <varname>b</varname> dans F<subscript>q</subscript>, le corps fini d'ordre <varname>q</varname> où <varname>q</varname> est un nombre premier, en utilisant l'algorithme de Silver-Pohlig-Hellman.</para>
3067
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Logarithme_discret">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/DiscreteLogarithm.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/DiscreteLogarithm.html">Mathworld</ulink> pour plus d'informations.</para>
3072
<term><anchor id="gel-function-Divides"/>Divides</term>
3074
<synopsis>Divides (m,n)</synopsis>
3075
<para>Vérifie la divisibilité (si <varname>m</varname> divise <varname>n</varname>).</para>
3080
<term><anchor id="gel-function-EulerPhi"/>EulerPhi</term>
3082
<synopsis>EulerPhi (n)</synopsis>
3083
<para>Calcule la fonction d'Euler phi, c'est-à-dire le nombre d'entiers compris entre 1 et <varname>n</varname> qui sont premiers avec <varname>n</varname>.</para>
3084
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Indicatrice_d%27Euler">Wikipedia</ulink> or <ulink url="http://planetmath.org/encyclopedia/EulerPhifunction.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/TotientFunction.html">Mathworld</ulink> pour plus d'informations.</para>
3089
<term><anchor id="gel-function-ExactDivision"/>ExactDivision</term>
3091
<synopsis>ExactDivision (n,d)</synopsis>
3092
<para>Renvoie <userinput>n/d</userinput> mais seulement si <varname>d</varname> divise <varname>n</varname>. Si <varname>d</varname> ne divise pas <varname>n</varname> alors cette fonction ne renvoie rien d'utile. Cette fonction est beaucoup plus rapide pour les très grands nombres que l'opération <userinput>n/d</userinput>, mais bien sûr utile seulement si vous savez que la division est exacte.</para>
3097
<term><anchor id="gel-function-Factorize"/>Factorize</term>
3099
<synopsis>Factorize (n)</synopsis>
3100
<para>Renvoie la factorisation d'un nombre sous la forme d'une matrice. La première ligne contient les nombres premiers dans la factorisation (y compris 1) et la seconde ligne sont les puissances. Par exemple : <screen><prompt>genius></prompt> <userinput>Factorize(11*11*13)</userinput>
3103
1 2 1]</screen></para>
3104
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Factorisation">Wikipedia</ulink> pour plus d'informations.</para>
3109
<term><anchor id="gel-function-Factors"/>Factors</term>
3111
<synopsis>Factors (n)</synopsis>
3112
<para>Renvoie tous les facteurs de <varname>n</varname> dans un vecteur. Cela inclut tous les facteurs non premiers également mais aussi 1 et le nombre lui-même. Ainsi par exemple pour afficher tous les nombres parfaits (ceux qui sont la somme de leurs facteurs) jusqu'au nombre 1000, vous pouvez écrire (ce n'est bien sûr pas efficace) : <programlisting>for n=1 to 1000 do (
3113
if MatrixSum (Factors(n)) == 2*n then
3116
</programlisting></para>
3121
<term><anchor id="gel-function-FermatFactorization"/>FermatFactorization</term>
3123
<synopsis>FermatFactorization (n,tentatives)</synopsis>
3125
Attempt Fermat factorization of <varname>n</varname> into
3126
<userinput>(t-s)*(t+s)</userinput>, returns <varname>t</varname>
3127
and <varname>s</varname> as a vector if possible, <constant>null</constant> otherwise.
3128
<varname>tries</varname> specifies the number of tries before
3131
<para>C'est une assez bonne factorisation si votre nombre est le produit de deux facteurs très proches l'un de l'autre.</para>
3132
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/M%C3%A9thode_de_factorisation_de_Fermat">Wikipedia</ulink> pour plus d'informations.</para>
3137
<term><anchor id="gel-function-FindPrimitiveElementMod"/>FindPrimitiveElementMod</term>
3139
<synopsis>FindPrimitiveElementMod (q)</synopsis>
3140
<para>Cherche le premier élément primitif dans F<subscript>q</subscript>, le groupe fini d'ordre <varname>q</varname>. Bien sûr, <varname>q</varname> doit être premier.</para>
3145
<term><anchor id="gel-function-FindRandomPrimitiveElementMod"/>FindRandomPrimitiveElementMod</term>
3147
<synopsis>FindRandomPrimitiveElementMod (q)</synopsis>
3148
<para>Cherche un élément primitif au hasard dans F<subscript>q</subscript>, le groupe fini d'ordre <varname>q</varname> (q doit être premier).</para>
3153
<term><anchor id="gel-function-IndexCalculus"/>IndexCalculus</term>
3155
<synopsis>IndexCalculus (n,b,q,S)</synopsis>
3156
<para>Calcule le logarithme discret de n base <varname>b</varname> dans F<subscript>q</subscript>, le corps fini d'ordre <varname>q</varname> (<varname>q </varname> est un nombre premier), en utilisant la base de facteur <varname>S</varname>. <varname>S</varname> doit être une colonne de nombres premiers avec éventuellement la deuxième colonne pré-calculée par <function>IndexCalculusPrecalculation</function>.</para>
3161
<term><anchor id="gel-function-IndexCalculusPrecalculation"/>IndexCalculusPrecalculation</term>
3163
<synopsis>IndexCalculusPrecalculation (b,q,S)</synopsis>
3164
<para>Lance l'étape de calcul préliminaire de <function>IndexCalculus</function> pour le logarithme base <varname>b</varname> dans F<subscript>q</subscript>, le corps fini d'ordre <varname>q</varname> (<varname>q </varname> est un nombre premier), pour la base de facteur <varname>S</varname> (où <varname>S</varname> doit être une colonne de nombres premiers). Les logarithmes sont pré-calculés et renvoyés dans la deuxième colonne.</para>
3169
<term><anchor id="gel-function-IsEven"/>IsEven</term>
3171
<synopsis>IsEven (n)</synopsis>
3172
<para>Teste si un entier est pair.</para>
3177
<term><anchor id="gel-function-IsMersennePrimeExponent"/>IsMersennePrimeExponent</term>
3179
<synopsis>IsMersennePrimeExponent (p)</synopsis>
3180
<para>Teste si un nombre entier positif <varname>p</varname> est un nombre premier de Mersenne, c'est-à-dire si 2<superscript>p</superscript>-1 est premier. Il s'agit d'une recherche dans une table de valeurs connues qui est assez petite. Consultez également <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link> et <link linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
3181
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Nombre_premier_de_Mersenne">Wikipedia</ulink>, <ulink url="http://planetmath.org/encyclopedia/MersenneNumbers.html">Planetmath</ulink>, <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> ou <ulink url="http://www.mersenne.org/">GIMPS</ulink> pour plus d'informations.</para>
3186
<term><anchor id="gel-function-IsNthPower"/>IsNthPower</term>
3188
<synopsis>IsNthPower (m,n)</synopsis>
3189
<para>Vérifie si un nombre rationnel <varname>m</varname> est une puissance <varname>n</varname>-ième parfaite. Consultez aussi <link linkend="gel-function-IsPerfectPower">IsPerfectPower</link> et <link linkend="gel-function-IsPerfectSquare">IsPerfectSquare</link>.</para>
3194
<term><anchor id="gel-function-IsOdd"/>IsOdd</term>
3196
<synopsis>IsOdd (n)</synopsis>
3197
<para>Teste si un entier est impair.</para>
3202
<term><anchor id="gel-function-IsPerfectPower"/>IsPerfectPower</term>
3204
<synopsis>IsPerfectPower (n)</synopsis>
3205
<para>Vérifie qu'un entier est une puissance parfaite, a<superscript>b</superscript>.</para>
3210
<term><anchor id="gel-function-IsPerfectSquare"/>IsPerfectSquare</term>
3212
<synopsis>IsPerfectSquare (n)</synopsis>
3213
<para>Vérifie qu'un entier est un carré parfait d'un entier. Le nombre doit être un vrai entier. Les entiers négatifs ne peuvent bien sûr jamais être des carrés de vrais entiers.</para>
3218
<term><anchor id="gel-function-IsPrime"/>IsPrime</term>
3220
<synopsis>IsPrime (n)</synopsis>
3221
<para>Teste la primalité des entiers ; pour les nombres inférieurs à 2,5e10 la réponse est déterministe (si l'hypothèse de Riemann est vérifiée). Pour des nombres plus grands, la probabilité d'une erreur de détermination dépend du paramètre <link linkend="gel-function-IsPrimeMillerRabinReps"><function>IsPrimeMillerRabinReps</function></link>. C'est-à-dire la probabilité d'une erreur de détermination vaut 1/4 à la puissance <function>IsPrimeMillerRabinReps</function>. La valeur par défaut de 22 mène à une probabilité d'environ 5.7e-14.</para>
3222
<para>Si <constant>false</constant> (faux) est renvoyé, vous êtes sûr que le nombre est composé. Si vous voulez être absolument certain d'avoir un nombre premier vous pouvez utiliser la fonction <link linkend="gel-function-MillerRabinTestSure"><function>MillerRabinTestSure</function></link> mais cela peut prendre beaucoup plus de temps.</para>
3223
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/PrimeNumber.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> pour plus d'informations.</para>
3228
<term><anchor id="gel-function-IsPrimitiveMod"/>IsPrimitiveMod</term>
3230
<synopsis>IsPrimitiveMod (g,q)</synopsis>
3231
<para>Vérifie que <varname>g</varname> est primitif dans F<subscript>q</subscript>, le groupe fini d'ordre <varname>q</varname>, où <varname>q</varname> est premier. Si <varname>q</varname> n'est pas premier, les résultats sont erronés.</para>
3236
<term><anchor id="gel-function-IsPrimitiveModWithPrimeFactors"/>IsPrimitiveModWithPrimeFactors</term>
3238
<synopsis>IsPrimitiveModWithPrimeFactors (g,q,f)</synopsis>
3239
<para>Vérifie que <varname>g</varname> est primitif dans F<subscript>q</subscript>, le groupe fini d'ordre <varname>q</varname>, où <varname>q</varname> est premier et <varname>f</varname> est un vecteur de facteurs premiers de <varname>q</varname>-1. Si <varname>q</varname> n'est pas premier, les résultats sont erronés.</para>
3244
<term><anchor id="gel-function-IsPseudoprime"/>IsPseudoprime</term>
3246
<synopsis>IsPseudoprime (n,b)</synopsis>
3247
<para>If <varname>n</varname> is a pseudoprime base <varname>b</varname> but not a prime,
3248
that is if <userinput>b^(n-1) == 1 mod n</userinput>. This calls the <function>PseudoprimeTest</function></para>
3253
<term><anchor id="gel-function-IsStrongPseudoprime"/>IsStrongPseudoprime</term>
3255
<synopsis>IsStrongPseudoprime (n,b)</synopsis>
3256
<para>Teste si <varname>n</varname> est un nombre pseudopremier fort en base <varname>b</varname> mais pas un nombre premier.</para>
3261
<term><anchor id="gel-function-Jacobi"/>Jacobi</term>
3263
<synopsis>Jacobi (a,b)</synopsis>
3264
<para>Alias : <function>JacobiSymbol</function></para>
3265
<para>Calcule le symbole de Jacobi (a/b) (b doit être impair).</para>
3270
<term><anchor id="gel-function-JacobiKronecker"/>JacobiKronecker</term>
3272
<synopsis>JacobiKronecker (a,b)</synopsis>
3273
<para>Alias : <function>JacobiKroneckerSymbol</function></para>
3274
<para>Calcule le symbole de Jacobi (a/b) avec l'extension de Kronecker (a/2)=(2/a) si impair, ou (a/2)=0 si pair.</para>
3279
<term><anchor id="gel-function-LeastAbsoluteResidue"/>LeastAbsoluteResidue</term>
3281
<synopsis>LeastAbsoluteResidue (a,n)</synopsis>
3282
<para>Renvoie le résidu de <varname>a</varname> modulo <varname>n</varname> avec la plus petite valeur absolue (entre -n/2 et n/2).</para>
3287
<term><anchor id="gel-function-Legendre"/>Legendre</term>
3289
<synopsis>Legendre (a,p)</synopsis>
3290
<para>Alias : <function>LegendreSymbol</function></para>
3291
<para>Calcule le symbole de Legendre (a/p).</para>
3292
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/LegendreSymbol.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/LegendreSymbol.html">Mathworld</ulink> pour plus d'informations.</para>
3297
<term><anchor id="gel-function-LucasLehmer"/>LucasLehmer</term>
3299
<synopsis>LucasLehmer (p)</synopsis>
3300
<para>Teste si 2<superscript>p</superscript>-1 est un nombre premier de Mersenne en utilisant le test de Lucas-Lehmer. Consultez aussi <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link> et <link linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>.</para>
3301
<para>Consultez <ulink url="http://http://fr.wikipedia.org/wiki/Test_de_primalit%C3%A9_de_Lucas-Lehmer_pour_les_nombres_de_Mersenne">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/LucasLhemer.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/Lucas-LehmerTest.html">Mathworld</ulink> pour plus d'informations.</para>
3306
<term><anchor id="gel-function-LucasNumber"/>LucasNumber</term>
3308
<synopsis>LucasNumber (n)</synopsis>
3309
<para>Renvoie le <varname>n</varname>-ième nombre de Lucas.</para>
3310
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Nombre_de_Lucas">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/LucasNumbers.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/LucasNumber.html">Mathworld</ulink> pour plus d'informations.</para>
3315
<term><anchor id="gel-function-MaximalPrimePowerFactors"/>MaximalPrimePowerFactors</term>
3317
<synopsis>MaximalPrimePowerFactors (n)</synopsis>
3318
<para>Renvoie les puissances premières d'un nombre.</para>
3323
<term><anchor id="gel-function-MersennePrimeExponents"/>MersennePrimeExponents</term>
3325
<synopsis>MersennePrimeExponents</synopsis>
3326
<para>Renvoie un vecteur de nombres premiers de Mersenne qui est une liste d'entiers positifs <varname>p</varname> tels que 2<superscript>p</superscript>-1 est entier. Consultez aussi <link linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link> et <link linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
3327
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Nombre_premier_de_Mersenne">Wikipedia</ulink>, <ulink url="http://planetmath.org/encyclopedia/MersenneNumbers.html">Planetmath</ulink>, <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> ou <ulink url="http://www.mersenne.org/">GIMPS</ulink> pour plus d'informations.</para>
3332
<term><anchor id="gel-function-MillerRabinTest"/>MillerRabinTest</term>
3334
<synopsis>MillerRabinTest (n,reps)</synopsis>
3335
<para>Utilise le test de primalité de Miller-Rabin sur <varname>n</varname>, en faisant <varname>reps</varname> essais. La probabilité d'une erreur de détermination est <userinput>(1/4)^reps</userinput>. Il est probablement préférable d'utiliser la fonction <link linkend="gel-function-IsPrime"><function>IsPrime</function></link> puisqu'elle est plus rapide et meilleure pour les entiers les plus petits.</para>
3336
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Test_de_primalit%C3%A9_de_Miller-Rabin">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/MillerRabinPrimeTest.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> pour plus d'informations.</para>
3341
<term><anchor id="gel-function-MillerRabinTestSure"/>MillerRabinTestSure</term>
3343
<synopsis>MillerRabinTestSure (n)</synopsis>
3344
<para>Utilise le test de primalité de Miller-Rabin sur <varname>n</varname> avec suffisamment d'essais pour qu'en supposant la véracité de l'hypothèse de Riemann généralisée, le résultat soit déterministe.</para>
3345
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Test_de_primalit%C3%A9_de_Miller-Rabin">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/MillerRabinPrimeTest.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> pour plus d'informations.</para>
3350
<term><anchor id="gel-function-ModInvert"/>ModInvert</term>
3352
<synopsis>ModInvert (n,m)</synopsis>
3353
<para>Renvoie l'inverse de n mod m.</para>
3354
<para>Consultez <ulink url="http://mathworld.wolfram.com/ModularInverse.html">Mathworld</ulink> pour plus d'informations.</para>
3359
<term><anchor id="gel-function-MoebiusMu"/>MoebiusMu</term>
3361
<synopsis>MoebiusMu (n)</synopsis>
3362
<para>Renvoie la fonction mu de Moebius évaluée dans <varname>n</varname>. C'est-à-dire renvoie 0 si <varname>n</varname> n'est pas un produit de nombres premiers différents et <userinput>(-1)^k</userinput> si c'est un produit de <varname>k</varname> nombres premiers différents.</para>
3363
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/MoebiusFunction.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/MoebiusFunction.html">Mathworld</ulink> pour plus d'informations.</para>
3368
<term><anchor id="gel-function-NextPrime"/>NextPrime</term>
3370
<synopsis>NextPrime (n)</synopsis>
3371
<para>Renvoie le plus petit nombre premier supérieur à <varname>n</varname>. L'opposé d'un nombre premier est considéré comme un nombre premier donc pour obtenir le nombre premier précédent, vous pouvez utiliser <userinput>-NextPrime(-n)</userinput>.</para>
3372
<para>La fonction utilise la fonction <function>mpz_nextprime</function> de GMP qui utilise elle-même le test de probabilité de Miller-Rabin (consultez aussi <link linkend="gel-function-MillerRabinTest">MillerRabinTest</link>). La probabilité d'une erreur de détermination n'est pas ajustable mais suffisamment faible dans tous les cas pratiques.</para>
3373
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/PrimeNumber.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> pour plus d'informations.</para>
3378
<term><anchor id="gel-function-PadicValuation"/>PadicValuation</term>
3380
<synopsis>PadicValuation (n,p)</synopsis>
3381
<para>Renvoie la valuation p-adic (nombre de zéros après la virgule en base <varname>p</varname>).</para>
3382
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/PAdicValuation.html">Planetmath</ulink> pour plus d'informations.</para>
3387
<term><anchor id="gel-function-PowerMod"/>PowerMod</term>
3389
<synopsis>PowerMod (a,b,m)</synopsis>
3390
<para>Calcule <userinput>a^b mod m</userinput>. La puissance <varname>b</varname> de <varname>a</varname> modulo <varname>m</varname>. Il n'est pas nécesssaire d'utiliser cette fonction car elle est utilisée automatiquement en mode modulaire. Par conséquent, <userinput>a^b mod m</userinput> est aussi rapide.</para>
3395
<term><anchor id="gel-function-Prime"/>Prime</term>
3397
<synopsis>Prime (n)</synopsis>
3398
<para>Alias : <function>prime</function></para>
3399
<para>Renvoie le <varname>n</varname>-ième nombre premier (jusqu'à une limite) .</para>
3400
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/PrimeNumber.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> pour plus d'informations.</para>
3405
<term><anchor id="gel-function-PrimeFactors"/>PrimeFactors</term>
3407
<synopsis>PrimeFactors (n)</synopsis>
3408
<para>Renvoie tous les facteurs premiers d'un nombre sous la forme d'un vecteur.</para>
3409
<para>Consultez <ulink url="http://mathworld.wolfram.com/PrimeFactor.html">Mathworld</ulink> pour plus d'informations.</para>
3414
<term><anchor id="gel-function-PseudoprimeTest"/>PseudoprimeTest</term>
3416
<synopsis>PseudoprimeTest (n,b)</synopsis>
3417
<para>Test de pseudoprimalité, renvoie <constant>true</constant> (vrai) si et seulement si <userinput>b^(n-1) == 1 mod n</userinput></para>
3418
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/Pseudoprime.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/Pseudoprime.html">Mathworld</ulink> pour plus d'informations.</para>
3423
<term><anchor id="gel-function-RemoveFactor"/>RemoveFactor</term>
3425
<synopsis>RemoveFactor (n,m)</synopsis>
3426
<para>Supprime toutes les instances du facteur <varname>m</varname> dans le nombre <varname>n</varname>. C'est-à-dire divise par la plus grande puissance de <varname>m</varname> qui divise <varname>n</varname>.</para>
3427
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/Divisibility.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/Factor.html">Mathworld</ulink> pour plus d'informations.</para>
3432
<term><anchor id="gel-function-SilverPohligHellmanWithFactorization"/>SilverPohligHellmanWithFactorization</term>
3434
<synopsis>SilverPohligHellmanWithFactorization (n,b,q,f)</synopsis>
3435
<para>Calcule le logarithme discret de <varname>n</varname> base <varname>b</varname> dans F<subscript>q</subscript>, le corps fini d'ordre <varname>q</varname> où <varname>q</varname> est un nombre premier, en utilisant l'algorithme de Silver-Pohlig-Hellman, sachant que <varname>f</varname> est la factorisation de <varname>q</varname>-1.</para>
3440
<term><anchor id="gel-function-SqrtModPrime"/>SqrtModPrime</term>
3442
<synopsis>SqrtModPrime (n,p)</synopsis>
3443
<para>Cherche la racine carrée de <varname>n</varname> modulo <varname>p</varname> (où <varname>p</varname> est premier). <constant>null</constant> est renvoyé si ce n'est pas un résidu quadratique.</para>
3444
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/QuadraticResidue.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/QuadraticResidue.html">Mathworld</ulink> pour plus d'informations.</para>
3449
<term><anchor id="gel-function-StrongPseudoprimeTest"/>StrongPseudoprimeTest</term>
3451
<synopsis>StrongPseudoprimeTest (n,b)</synopsis>
3452
<para>Lance le test de pseudo-primarité forte en base <varname>b</varname> sur <varname>n</varname>.</para>
3453
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/StrongPseudoprime.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/StrongPseudoprime.html">Mathworld</ulink> pour plus d'informations.</para>
3458
<term><anchor id="gel-function-gcd"/>gcd</term>
3460
<synopsis>gcd (a,params...)</synopsis>
3461
<para>Alias : <function>GCD</function></para>
3462
<para>Plus grand commun diviseur d'entiers (PGCD, en anglais « Greatest Common Divisor »). Vous pouvez fournir autant d'entiers que vous voulez dans la liste d'arguments ou vous pouvez fournir un vecteur ou une matrice d'entiers. Si vous fournissez plus d'une matrice de la même taille alors le PGCD est recherché élément par élément.</para>
3463
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/GreatestCommonDivisor.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/GreatestCommonDivisor.html">Mathworld</ulink> pour plus d'informations.</para>
3468
<term><anchor id="gel-function-lcm"/>lcm</term>
3470
<synopsis>lcm (a,params...)</synopsis>
3471
<para>Alias : <function>LCM</function></para>
3472
<para>Plus petit commun multiple d'entiers (PPCM, en anglais « Least Common Multiplier »). Vous pouvez fournir autant d'entiers que vous voulez dans la liste d'arguments ou vous pouvez fournir un vecteur ou une matrice d'entiers. Si vous fournissez plus d'une matrice de la même taille alors le PPCM est recherché élément par élément.</para>
3473
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/LeastCommonMultiple.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/LeastCommonMultiple.html">Mathworld</ulink> pour plus d'informations.</para>
3480
<sect1 id="genius-gel-function-list-matrix">
3481
<title>Manipulation de matrices</title>
3484
<term><anchor id="gel-function-ApplyOverMatrix"/>ApplyOverMatrix</term>
3486
<synopsis>ApplyOverMatrix (a,fonc)</synopsis>
3487
<para>Applique une fonction sur tous les éléments d'une matrice et renvoie une matrice de résultats.</para>
3492
<term><anchor id="gel-function-ApplyOverMatrix2"/>ApplyOverMatrix2</term>
3494
<synopsis>ApplyOverMatrix2 (a,b,fonc)</synopsis>
3495
<para>Applique une fonction sur tous les éléments de 2 matrices (ou 1 valeur et 1 matrice) et renvoie une matrice de résultats.</para>
3500
<term><anchor id="gel-function-ColumnsOf"/>ColumnsOf</term>
3502
<synopsis>ColumnsOf (M)</synopsis>
3503
<para>Extrait les colonnes de la matrice comme un vecteur horizontal.</para>
3508
<term><anchor id="gel-function-ComplementSubmatrix"/>ComplementSubmatrix</term>
3510
<synopsis>ComplementSubmatrix (m,r,c)</synopsis>
3511
<para>Supprime certaines lignes et colonnes d'une matrice.</para>
3516
<term><anchor id="gel-function-CompoundMatrix"/>CompoundMatrix</term>
3518
<synopsis>CompoundMatrix (k,A)</synopsis>
3519
<para>Calcule la k-ième matrice composée de A.</para>
3524
<term><anchor id="gel-function-CountZeroColumns"/>CountZeroColumns</term>
3526
<synopsis>CountZeroColumns (M)</synopsis>
3528
Count the number of zero columns in a matrix. For example
3529
once your column reduce a matrix you can use this to find
3530
the nullity. See <link linkend="gel-function-cref"><function>cref</function></link>
3531
and <link linkend="gel-function-Nullity"><function>Nullity</function></link>.
3537
<term><anchor id="gel-function-DeleteColumn"/>DeleteColumn</term>
3539
<synopsis>DeleteColumn (M,col)</synopsis>
3540
<para>Supprime une colonne d'une matrice.</para>
3545
<term><anchor id="gel-function-DeleteRow"/>DeleteRow</term>
3547
<synopsis>DeleteRow (M,row)</synopsis>
3548
<para>Supprime une ligne d'une matrice.</para>
3553
<term><anchor id="gel-function-DiagonalOf"/>DiagonalOf</term>
3555
<synopsis>DiagonalOf (M)</synopsis>
3556
<para>Extrait la diagonale de la matrice comme un vecteur colonne.</para>
3557
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Diagonale">Wikipedia</ulink> pour plus d'informations.</para>
3562
<term><anchor id="gel-function-DotProduct"/>DotProduct</term>
3564
<synopsis>DotProduct (u,v)</synopsis>
3565
<para>Renvoie le produit scalaire de deux vecteurs. Les vecteurs doivent être de même taille. Aucune conjugaison n'est faite donc c'est une forme bilinéaire même dans le cas de nombres complexes.</para>
3566
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/DotProduct.html">Planetmath</ulink> pour plus d'informations.</para>
3571
<term><anchor id="gel-function-ExpandMatrix"/>ExpandMatrix</term>
3573
<synopsis>ExpandMatrix (M)</synopsis>
3574
<para>Développe une matrice exactement comme cela est fait lors de la saisie d'une matrice non précédée d'une apostrophe. Cela signifie que toute matrice interne est développée sous la forme de blocs. C'est une façon de construire des matrices à partir de matrices plus petites et c'est ce qui est effectué normalement de manière automatique lors d'une saisie à moins que la matrice ne soit précédée d'une apostrophe.</para>
3579
<term><anchor id="gel-function-HermitianProduct"/>HermitianProduct</term>
3581
<synopsis>HermitianProduct (u,v)</synopsis>
3582
<para>Alias : <function>InnerProduct</function></para>
3583
<para>Renvoie le produit hermitienne de deux vecteurs. Les vecteurs doivent avoir la même taille. C'est une forme sesquilinéaire utilisant la matrice identité.</para>
3584
<para>Consultez <ulink url="http://mathworld.wolfram.com/HermitianInnerProduct.html">Mathworld</ulink> pour plus d'informations.</para>
3589
<term><anchor id="gel-function-I"/>I</term>
3591
<synopsis>I (n)</synopsis>
3592
<para>Alias : <function>eye</function></para>
3593
<para>Renvoie une matrice identité de la taille indiquée, soit une matrice de <varname>n</varname> par <varname>n</varname>. Si <varname>n</varname> vaut zéro, renvoie <constant>null</constant>.</para>
3594
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/IdentityMatrix.html">Planetmath</ulink> pour plus d'informations.</para>
3599
<term><anchor id="gel-function-IndexComplement"/>IndexComplement</term>
3601
<synopsis>IndexComplement (vec,mtaille)</synopsis>
3602
<para>Renvoie le complémentaire d'un vecteur d'indices. Le premier indice est toujours 1. Par exemple pour le vecteur <userinput>[2,3]</userinput> et la taille <userinput>5</userinput>, cela renvoie <userinput>[1,4,5]</userinput>. Si <varname>mtaille</varname> vaut 0, cela renvoie toujours <constant>null</constant>.</para>
3607
<term><anchor id="gel-function-IsDiagonal"/>IsDiagonal</term>
3609
<synopsis>IsDiagonal (M)</synopsis>
3610
<para>Indique si la matrice est diagonale.</para>
3611
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Matrice_diagonale">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/DiagonalMatrix.html">Planetmath</ulink> pour plus d'informations.</para>
3616
<term><anchor id="gel-function-IsIdentity"/>IsIdentity</term>
3618
<synopsis>IsIdentity (x)</synopsis>
3619
<para>Vérifie qu'une matrice est la matrice identité. Renvoie automatiquement <constant>false</constant> (faux) si la matrice n'est pas carrée. Fonctionne également avec les nombres et dans ce cas, c'est équivalent à <userinput>x==1</userinput>. Lorsque <varname>x</varname> est <constant>null</constant>, il est considéré comme une matrice 0 par 0, aucune erreur n'est générée et <constant>false</constant> (faux) est renvoyé.</para>
3624
<term><anchor id="gel-function-IsLowerTriangular"/>IsLowerTriangular</term>
3626
<synopsis>IsLowerTriangular (M)</synopsis>
3627
<para>Indique si une matrice est triangulaire inférieure, c'est-à-dire que toutes les valeurs au dessus de la diagonale sont nulles.</para>
3632
<term><anchor id="gel-function-IsMatrixInteger"/>IsMatrixInteger</term>
3634
<synopsis>IsMatrixInteger (M)</synopsis>
3635
<para>Vérifie si une matrice est constituée de nombres entiers (non complexe).</para>
3640
<term><anchor id="gel-function-IsMatrixNonnegative"/>IsMatrixNonnegative</term>
3642
<synopsis>IsMatrixNonnegative (M)</synopsis>
3643
<para>Vérifie si une matrice est non négative, c'est-à-dire que chaque élément n'est pas négatif. Ne pas confondre les matrices positives avec les matrices définies positives.</para>
3644
<para>Consultez <ulink url="http://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> pour plus d'informations.</para>
3649
<term><anchor id="gel-function-IsMatrixPositive"/>IsMatrixPositive</term>
3651
<synopsis>IsMatrixPositive (M)</synopsis>
3652
<para>Vérifie si une matrice est positive, c'est-à-dire que chaque élément est positif (et par conséquent réel), et en particulier qu'aucun élément n'est nul. Ne pas confondre les matrices positives avec les matrices définies positives</para>
3653
<para>Consultez <ulink url="http://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> pour plus d'informations.</para>
3658
<term><anchor id="gel-function-IsMatrixRational"/>IsMatrixRational</term>
3660
<synopsis>IsMatrixRational (M)</synopsis>
3661
<para>Vérifie si une matrice est constituée de nombres rationnels (non complexes).</para>
3666
<term><anchor id="gel-function-IsMatrixReal"/>IsMatrixReal</term>
3668
<synopsis>IsMatrixReal (M)</synopsis>
3669
<para>Vérifie si une matrice est constituée de nombres réels (non complexes).</para>
3674
<term><anchor id="gel-function-IsMatrixSquare"/>IsMatrixSquare</term>
3676
<synopsis>IsMatrixSquare (M)</synopsis>
3677
<para>Vérifie si une matrice est carrée, c'est-à-dire que sa largeur est égale à sa hauteur.</para>
3682
<term><anchor id="gel-function-IsUpperTriangular"/>IsUpperTriangular</term>
3684
<synopsis>IsUpperTriangular (M)</synopsis>
3685
<para>Is a matrix upper triangular? That is, a matrix is upper triangular if all the entries below the diagonal are zero.</para>
3690
<term><anchor id="gel-function-IsValueOnly"/>IsValueOnly</term>
3692
<synopsis>IsValueOnly (M)</synopsis>
3693
<para>Vérifie si une matrice est une matrice de nombres seulement. Beaucoup de fonctions internes contrôlent cela. Les valeurs peuvent être n'importe quels nombres y compris des complexes.</para>
3698
<term><anchor id="gel-function-IsVector"/>IsVector</term>
3700
<synopsis>IsVector (v)</synopsis>
3701
<para>Si l'argument est un vecteur horizontal ou vertical. Genius ne fait pas de distinction entre une matrice et un vecteur, un vecteur est juste une matrice 1 par <varname>n</varname> ou <varname>n</varname> par 1.</para>
3706
<term><anchor id="gel-function-IsZero"/>IsZero</term>
3708
<synopsis>IsZero (x)</synopsis>
3709
<para>Vérifie si une matrice est composée uniquement de zéros. Fonctionne également avec les nombres et dans ce cas, c'est équivalent à <userinput>x==0</userinput>. Lorsque <varname>x</varname> est <constant>null</constant>, il est considéré comme une matrice 0 par 0, aucune erreur n'est générée et <constant>true</constant> (vrai) est renvoyé car la condition est vide.</para>
3714
<term><anchor id="gel-function-LowerTriangular"/>LowerTriangular</term>
3716
<synopsis>LowerTriangular (M)</synopsis>
3717
<para>Renvoie une copie de la matrice <varname>M</varname> avec tous les éléments au dessus de la diagonale mis à zéro.</para>
3722
<term><anchor id="gel-function-MakeDiagonal"/>MakeDiagonal</term>
3724
<synopsis>MakeDiagonal (v,param...)</synopsis>
3725
<para>Alias : <function>diag</function></para>
3726
<para>Make diagonal matrix from a vector. Alternatively you can pass
3727
in the values to put on the diagonal as arguments. So
3728
<userinput>MakeDiagonal([1,2,3])</userinput> is the same as
3729
<userinput>MakeDiagonal(1,2,3)</userinput>.</para>
3730
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Matrice_diagonale">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/DiagonalMatrix.html">Planetmath</ulink> pour plus d'informations.</para>
3735
<term><anchor id="gel-function-MakeVector"/>MakeVector</term>
3737
<synopsis>MakeVector (A)</synopsis>
3738
<para>Construit un vecteur colonne à partir d'une matrice en mettant les colonnes les unes au dessus des autres. Renvoie <constant>null</constant> si <constant>null</constant> est fourni.</para>
3743
<term><anchor id="gel-function-MatrixProduct"/>MatrixProduct</term>
3745
<synopsis>MatrixProduct (A)</synopsis>
3746
<para>Calcule et renvoie le produit de tous les éléments d'une matrice ou d'un vecteur.</para>
3751
<term><anchor id="gel-function-MatrixSum"/>MatrixSum</term>
3753
<synopsis>MatrixSum (A)</synopsis>
3754
<para>Calcule et renvoie la somme de tous les éléments d'une matrice ou d'un vecteur.</para>
3759
<term><anchor id="gel-function-MatrixSumSquares"/>MatrixSumSquares</term>
3761
<synopsis>MatrixSumSquares (A)</synopsis>
3762
<para>Calcule la somme du carré de tous les éléments d'une matrice ou d'un vecteur.</para>
3767
<term><anchor id="gel-function-OuterProduct"/>OuterProduct</term>
3769
<synopsis>OuterProduct (u,v)</synopsis>
3770
<para>Retourne le produit tensoriel de deux vecteurs, c'est-à-dire que si on suppose que <varname>u</varname> et <varname>v</varname> sont des vecteurs colonnes, alors le produit tensoriel est <userinput>v * u.'</userinput>.</para>
3775
<term><anchor id="gel-function-ReverseVector"/>ReverseVector</term>
3777
<synopsis>ReverseVector (v)</synopsis>
3778
<para>Inverse l'ordre des éléments d'un vecteur. Renvoie <constant>null</constant> si <constant>null</constant> est fourni</para>
3783
<term><anchor id="gel-function-RowSum"/>RowSum</term>
3785
<synopsis>RowSum (m)</synopsis>
3786
<para>Calcule la somme pour chaque ligne d'une matrice et renvoie un vecteur colonne contenant le résultat.</para>
3791
<term><anchor id="gel-function-RowSumSquares"/>RowSumSquares</term>
3793
<synopsis>RowSumSquares (m)</synopsis>
3794
<para>Calculate sum of squares of each row in a matrix and return a vertical vector with the results.</para>
3799
<term><anchor id="gel-function-RowsOf"/>RowsOf</term>
3801
<synopsis>RowsOf (M)</synopsis>
3802
<para>Renvoie les lignes d'une matrice dans un vecteur vertical. Chaque élément du vecteur est un vecteur horizontal qui correspond à chaque ligne de <varname>M</varname>. Cette fonction est utile si vous désirez faire une boucle sur les lignes d'une matrice comme par exemple, <userinput>for r in RowsOf(M) do
3803
quelquechose(r)</userinput>.</para>
3808
<term><anchor id="gel-function-SetMatrixSize"/>SetMatrixSize</term>
3810
<synopsis>SetMatrixSize (M,lignes,colonnes)</synopsis>
3811
<para>Make new matrix of given size from old one. That is, a new
3812
matrix will be returned to which the old one is copied. Entries that
3813
don't fit are clipped and extra space is filled with zeros.
3814
If <varname>rows</varname> or <varname>columns</varname> are zero
3815
then <constant>null</constant> is returned.
3821
<term><anchor id="gel-function-ShuffleVector"/>ShuffleVector</term>
3823
<synopsis>ShuffleVector (v)</synopsis>
3824
<para>Mélange les éléments d'un vecteur. Renvoie <constant>null</constant> si <constant>null</constant> est fourni</para>
3829
<term><anchor id="gel-function-SortVector"/>SortVector</term>
3831
<synopsis>SortVector (v)</synopsis>
3832
<para>Trie les éléments d'un vecteur en ordre croissant.</para>
3837
<term><anchor id="gel-function-StripZeroColumns"/>StripZeroColumns</term>
3839
<synopsis>StripZeroColumns (M)</synopsis>
3840
<para>Élimine toutes les colonnes entièrement nulles de <varname>M</varname>.</para>
3845
<term><anchor id="gel-function-StripZeroRows"/>StripZeroRows</term>
3847
<synopsis>StripZeroRows (M)</synopsis>
3848
<para>Élimine toutes les lignes entièrement nulles de <varname>M</varname>.</para>
3853
<term><anchor id="gel-function-Submatrix"/>Submatrix</term>
3855
<synopsis>Submatrix (m,r,c)</synopsis>
3856
<para>Renvoie certaines colonnes et lignes d'une matrice. C'est équivalent à <userinput>m@(r,c)</userinput>. <varname>r</varname> et <varname>c</varname> doivent être des vecteurs de lignes et de colonnes (ou de simples nombres si vous avez besoin d'une seule ligne ou colonne).</para>
3861
<term><anchor id="gel-function-SwapRows"/>SwapRows</term>
3863
<synopsis>SwapRows (m,ligne1,ligne2)</synopsis>
3864
<para>Échange deux lignes dans une matrice.</para>
3869
<term><anchor id="gel-function-UpperTriangular"/>UpperTriangular</term>
3871
<synopsis>UpperTriangular (M)</synopsis>
3872
<para>Renvoie une copie de la matrice <varname>M</varname> avec tous les éléments sous la diagonale mis à zéro.</para>
3877
<term><anchor id="gel-function-columns"/>columns</term>
3879
<synopsis>columns (M)</synopsis>
3880
<para>Renvoie le nombre de colonnes d'une matrice.</para>
3885
<term><anchor id="gel-function-elements"/>elements</term>
3887
<synopsis>elements (M)</synopsis>
3888
<para>Renvoie le nombre total d'éléments d'une matrice. C'est le nombre de colonnes multiplié par le nombre de lignes.</para>
3893
<term><anchor id="gel-function-ones"/>ones</term>
3895
<synopsis>ones (lignes,colonnes...)</synopsis>
3896
<para>Crée une matrice de 1 (ou un vecteur colonne si un seul argument est donné). Renvoie <constant>null</constant> si ligne ou colonne est nul.</para>
3901
<term><anchor id="gel-function-rows"/>rows</term>
3903
<synopsis>rows (M)</synopsis>
3904
<para>Renvoie le nombre de lignes d'une matrice.</para>
3909
<term><anchor id="gel-function-zeros"/>zeros</term>
3911
<synopsis>zeros (lignes,colonnes...)</synopsis>
3912
<para>Crée une matrice de 0 (ou un vecteur colonne si un seul argument est donné). Renvoie <constant>null</constant> si ligne ou colonne est nul.</para>
3919
<sect1 id="genius-gel-function-list-linear-algebra">
3920
<title>Algèbre linéaire</title>
3923
<term><anchor id="gel-function-AuxiliaryUnitMatrix"/>AuxiliaryUnitMatrix</term>
3925
<synopsis>AuxiliaryUnitMatrix (n)</synopsis>
3926
<para>Get the auxiliary unit matrix of size <varname>n</varname>. This is a square matrix with that is all zero except the
3927
superdiagonal being all ones. It is the Jordan block matrix of one zero eigenvalue.</para>
3928
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/JordanCanonicalFormTheorem.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> pour plus d'informations sur la forme canonique de Jordan.</para>
3933
<term><anchor id="gel-function-BilinearForm"/>BilinearForm</term>
3935
<synopsis>BilinearForm (v,A,w)</synopsis>
3936
<para>Évalue (v,w) par rapport à la forme bilinéaire donnée par la matrice A.</para>
3941
<term><anchor id="gel-function-BilinearFormFunction"/>BilinearFormFunction</term>
3943
<synopsis>BilinearFormFunction (A)</synopsis>
3944
<para>Renvoie une fonction qui évalue deux vecteurs par rapport à la forme bilinéaire donnée par A.</para>
3949
<term><anchor id="gel-function-CharacteristicPolynomial"/>CharacteristicPolynomial</term>
3951
<synopsis>CharacteristicPolynomial (M)</synopsis>
3952
<para>Alias : <function>CharPoly</function></para>
3953
<para>Renvoie le polynôme caractéristique d'un vecteur. C'est-à-dire renvoie les coefficients du polynôme en commençant par le terme constant. Ce polynôme est défini par <userinput>det(M-xI)</userinput>. Les racines de ce polynôme sont les valeurs propres de <varname>M</varname>. Consultez également <link linkend="gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</link>.</para>
3954
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/CharacteristicEquation.html">Planetmath</ulink> pour plus d'informations.</para>
3959
<term><anchor id="gel-function-CharacteristicPolynomialFunction"/>CharacteristicPolynomialFunction</term>
3961
<synopsis>CharacteristicPolynomialFunction (M)</synopsis>
3962
<para>Renvoie le polynôme caractéristique d'un vecteur sous la forme d'une fonction. Ce polynôme est défini par <userinput>det(M-xI)</userinput>. Les racines de ce polynôme sont les valeurs propres de <varname>M</varname>. Consultez également <link linkend="gel-function-CharacteristicPolynomial">CharacteristicPolynomial</link>.</para>
3963
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/CharacteristicEquation.html">Planetmath</ulink> pour plus d'informations.</para>
3968
<term><anchor id="gel-function-ColumnSpace"/>ColumnSpace</term>
3970
<synopsis>ColumnSpace (M)</synopsis>
3971
<para>Renvoie une matrice de base pour le sous-espace vectoriel d'une matrice. C'est-à-dire renvoie une matrice dont les colonnes forment une base pour le sous-espace vectoriel de <varname>M</varname>, donc l'espace engendré par les colonnes de <varname>M</varname>.</para>
3976
<term><anchor id="gel-function-CommutationMatrix"/>CommutationMatrix</term>
3978
<synopsis>CommutationMatrix (m, n)</synopsis>
3979
<para>Renvoie la matrice de permutation K(m,n) qui est l'unique matrice m*n par m*n telle que K(m,n) * MakeVector(A) = MakeVector(A.') pour toutes matrices A de taille m par n.</para>
3984
<term><anchor id="gel-function-CompanionMatrix"/>CompanionMatrix</term>
3986
<synopsis>CompanionMatrix (p)</synopsis>
3987
<para>Matrice compagnon d'un polynôme (comme vecteur).</para>
3992
<term><anchor id="gel-function-ConjugateTranspose"/>ConjugateTranspose</term>
3994
<synopsis>ConjugateTranspose (M)</synopsis>
3995
<para>Transposée conjuguée d'une matrice (matrice adjointe). Identique à l'opérateur <userinput>'</userinput>.</para>
3996
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/ConjugateTranspose.html">Planetmath</ulink> pour plus d'informations.</para>
4001
<term><anchor id="gel-function-Convolution"/>Convolution</term>
4003
<synopsis>Convolution (a,b)</synopsis>
4004
<para>Alias : <function>convol</function></para>
4005
<para>Calcule la convolution de deux vecteurs horizontaux.</para>
4010
<term><anchor id="gel-function-ConvolutionVector"/>ConvolutionVector</term>
4012
<synopsis>ConvolutionVector (a,b)</synopsis>
4013
<para>Calcule la convolution de deux vecteurs horizontaux. Renvoie le résultat sous la forme d'un vecteur dont les composants ne sont pas additionnées ensemble.</para>
4018
<term><anchor id="gel-function-CrossProduct"/>CrossProduct</term>
4020
<synopsis>CrossProduct (v,w)</synopsis>
4021
<para>Produit vectoriel de deux vecteurs dans R<superscript>3</superscript> sous la forme d'un vecteur colonne.</para>
4026
<term><anchor id="gel-function-DeterminantalDivisorsInteger"/>DeterminantalDivisorsInteger</term>
4028
<synopsis>DeterminantalDivisorsInteger (M)</synopsis>
4029
<para>Renvoie les « determinantal divisors » d'une matrice d'entiers (et non pas son polynôme caractéristique).</para>
4034
<term><anchor id="gel-function-DirectSum"/>DirectSum</term>
4036
<synopsis>DirectSum (M,N...)</synopsis>
4037
<para>Somme directe de matrices.</para>
4042
<term><anchor id="gel-function-DirectSumMatrixVector"/>DirectSumMatrixVector</term>
4044
<synopsis>DirectSumMatrixVector (v)</synopsis>
4045
<para>Somme directe d'un vecteur de matrices.</para>
4050
<term><anchor id="gel-function-Eigenvalues"/>Eigenvalues</term>
4052
<synopsis>Eigenvalues (M)</synopsis>
4053
<para>Alias : <function>eig</function></para>
4054
<para>Renvoie les valeurs propres d'une matrice carrée. Ne fonctionne actuellement que pour les matrices de taille inférieure ou égale à 4 par 4 ou pour les matrices triangulaires (pour lesquelles les valeurs propres sont sur la diagonale).</para>
4055
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Valeur_propre,_vecteur_propre_et_espace_propre">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/Eigenvalue.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/Eigenvalue.html">Mathworld</ulink> pour plus d'informations.</para>
4060
<term><anchor id="gel-function-Eigenvectors"/>Eigenvectors</term>
4062
<synopsis>Eigenvectors (M)</synopsis>
4063
<synopsis>Eigenvectors (M, &valeurspropres)</synopsis>
4064
<synopsis>Eigenvectors (M, &valeurpropres, &multiplicités)</synopsis>
4065
<para>Renvoie les vecteurs propres d'une matrice carrée. Il est possible en option d'obtenir les valeurs propres ainsi que leur multiplicité algébrique. Ne fonctionne actuellement que pour les matrices 2x2.</para>
4066
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Valeur_propre,_vecteur_propre_et_espace_propre">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/Eigenvector.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/Eigenvector.html">Mathworld</ulink> pour plus d'informations.</para>
4071
<term><anchor id="gel-function-GramSchmidt"/>GramSchmidt</term>
4073
<synopsis>GramSchmidt (v,B...)</synopsis>
4074
<para>Applique le procédé de Gram-Schmidt (aux colonnes) par rapport au produit scalaire donné par <varname>B</varname>. Si <varname>B</varname> n'est pas fourni alors le produit hermitien standard est utilisé. <varname>B</varname> peut être soit une forme sesquilinéaire à deux arguments soit une matrice fournissant une forme sesquilinéaire. Les vecteurs seront orthogonaux par rapport à <varname>B</varname>.</para>
4075
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/GramSchmidtOrthogonalization.html">Planetmath</ulink> pour plus d'informations.</para>
4080
<term><anchor id="gel-function-HankelMatrix"/>HankelMatrix</term>
4082
<synopsis>HankelMatrix (c,r)</synopsis>
4083
<para>Matrice de Hankel.</para>
4088
<term><anchor id="gel-function-HilbertMatrix"/>HilbertMatrix</term>
4090
<synopsis>HilbertMatrix (n)</synopsis>
4091
<para>Matrice de Hilbert d'ordre <varname>n</varname>.</para>
4092
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/HilbertMatrix.html">Planetmath</ulink> pour plus d'informations.</para>
4097
<term><anchor id="gel-function-Image"/>Image</term>
4099
<synopsis>Image (T)</synopsis>
4100
<para>Renvoie l'image (espace vectoriel engendré par les colonnes) d'une transformation linéaire.</para>
4105
<term><anchor id="gel-function-InfNorm"/>InfNorm</term>
4107
<synopsis>InfNorm (v)</synopsis>
4108
<para>Renvoie la norme « infini », appelée aussi norme sup, ou encore norme de la convergence uniforme.</para>
4113
<term><anchor id="gel-function-InvariantFactorsInteger"/>InvariantFactorsInteger</term>
4115
<synopsis>InvariantFactorsInteger (M)</synopsis>
4116
<para>Renvoie les facteurs invariants d'une matrice carrée (pas sa caractéristique).</para>
4121
<term><anchor id="gel-function-InverseHilbertMatrix"/>InverseHilbertMatrix</term>
4123
<synopsis>InverseHilbertMatrix (n)</synopsis>
4124
<para>Matrice inverse de Hilbert d'ordre <varname>n</varname>.</para>
4125
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/HilbertMatrix.html">Planetmath</ulink> pour plus d'informations.</para>
4130
<term><anchor id="gel-function-IsHermitian"/>IsHermitian</term>
4132
<synopsis>IsHermitian (M)</synopsis>
4133
<para>Indique si une matrice est hermitienne. C'est-à-dire si elle est égale à sa transposée conjuguée.</para>
4134
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/HermitianMatrix.html">Planetmath</ulink> pour plus d'informations.</para>
4139
<term><anchor id="gel-function-IsInSubspace"/>IsInSubspace</term>
4141
<synopsis>IsInSubspace (v,W)</synopsis>
4142
<para>Teste si un vecteur appartient à un sous-espace.</para>
4147
<term><anchor id="gel-function-IsInvertible"/>IsInvertible</term>
4149
<synopsis>IsInvertible (n)</synopsis>
4150
<para>Is a matrix (or number) invertible (Integer matrix is invertible if and only if it is invertible over the integers).</para>
4155
<term><anchor id="gel-function-IsInvertibleField"/>IsInvertibleField</term>
4157
<synopsis>IsInvertibleField (n)</synopsis>
4158
<para>Indique si une matrice (ou un nombre) est inversible sur un corps.</para>
4163
<term><anchor id="gel-function-IsNormal"/>IsNormal</term>
4165
<synopsis>IsNormal (M)</synopsis>
4166
<para>Indique si <varname>M</varname> est une matrice normale, c'est-à-dire <userinput>M*M' == M'*M</userinput>.</para>
4167
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/NormalMatrix.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/NormalMatrix.html">Mathworld</ulink> pour plus d'informations.</para>
4172
<term><anchor id="gel-function-IsPositiveDefinite"/>IsPositiveDefinite</term>
4174
<synopsis>IsPositiveDefinite (M)</synopsis>
4175
<para>Indique si <varname>M</varname> est une matrice hermitienne définie positive. C'est-à-dire si <userinput>HermitianProduct(M*v,v)</userinput> est toujours strictement positif pour tout vecteur <varname>v</varname>. <varname>M</varname> doit être carré et hermitienne pour être définie positive. Le contrôle effectué est que le déterminant de chaque sous-matrice principale n'est pas négatif (consultez <link linkend="gel-function-HermitianProduct">HermitianProduct</link>).</para>
4176
<para>Notez que certains auteurs (par exemple Mathworld) n'exigent pas que <varname>M</varname> soit hermitienne, ainsi la condition porte sur la partie réelle du produit scalaire mais ce n'est pas le cas de Genius. Si vous souhaitez réaliser ce type de contrôle, vérifiez seulement la partie hermitienne de la matrice <varname>M</varname> comme ceci : <userinput>IsPositiveDefinite(M+M')</userinput>.</para>
4177
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/PositiveDefinite.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html">Mathworld</ulink> pour plus d'informations.</para>
4182
<term><anchor id="gel-function-IsPositiveSemidefinite"/>IsPositiveSemidefinite</term>
4184
<synopsis>IsPositiveSemidefinite (M)</synopsis>
4185
<para>Indique si <varname>M</varname> est une matrice hermitienne semi-définie positive. C'est-à-dire si <userinput>HermitianProduct(M*v,v)</userinput> est toujours non négatif pour tout vecteur <varname>v</varname>. <varname>M</varname> doit être carré et hermitienne pour être semi-définie positive. Le contrôle effectué est que le déterminant de chaque sous-matrice principale n'est pas négatif (consultez <link linkend="gel-function-HermitianProduct">HermitianProduct</link>).</para>
4186
<para>Notez que certains auteurs n'exigent pas que <varname>M</varname> soit hermitienne, ainsi la condition porte sur la partie réelle du produit scalaire mais ce n'est pas le cas de Genius. Si vous souhaitez réaliser ce type de contrôle, vérifiez seulement la partie hermitienne de la matrice <varname>M</varname> comme ceci : <userinput>IsPositiveSemiDefinite(M+M')</userinput>.</para>
4187
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/PositiveSemidefinite.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html">Mathworld</ulink> pour plus d'informations.</para>
4192
<term><anchor id="gel-function-IsSkewHermitian"/>IsSkewHermitian</term>
4194
<synopsis>IsSkewHermitian (M)</synopsis>
4195
<para>Indique si une matrice est anti-hermitienne. C'est-à-dire si sa transposée conjuguée est égale à l'opposée de la matrice.</para>
4196
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/SkewHermitianMatrix.html">Planetmath</ulink> pour plus d'informations.</para>
4201
<term><anchor id="gel-function-IsUnitary"/>IsUnitary</term>
4203
<synopsis>IsUnitary (M)</synopsis>
4204
<para>Indique si une matrice est unitaire. C'est-à-dire si <userinput>M'*M</userinput> et <userinput>M*M'</userinput> sont égaux à l'identité.</para>
4205
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/UnitaryTransformation.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/UnitaryMatrix.html">Mathworld</ulink> pour plus d'informations.</para>
4210
<term><anchor id="gel-function-JordanBlock"/>JordanBlock</term>
4212
<synopsis>JordanBlock (n,lambda)</synopsis>
4213
<para>Alias : <function>J</function></para>
4214
<para>Renvoie le bloc de Jordan correspondant à la valeur propre <varname>lambda</varname> de multiplicité <varname>n</varname>.</para>
4215
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/JordanCanonicalFormTheorem.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> pour plus d'informations.</para>
4220
<term><anchor id="gel-function-Kernel"/>Kernel</term>
4222
<synopsis>Kernel (T)</synopsis>
4223
<para>Renvoie le noyau d'une transformation linéaire.</para>
4224
<para>(consultez <link linkend="gel-function-NullSpace">NullSpace</link>)</para>
4229
<term><anchor id="gel-function-LUDecomposition"/>LUDecomposition</term>
4231
<synopsis>LUDecomposition (A, L, U)</synopsis>
4232
<para>Calcule la décomposition LU de <varname>A</varname> et enregistre le résultat dans <varname>L</varname> et <varname>U</varname> qui doivent être des références. Renvoie <constant>true</constant> (vrai) en cas de réussite. Par exemple, supposons que A est une matrice carrée, alors après avoir exécuté : <screen><prompt>genius></prompt> <userinput>LUDecomposition(A,&L,&U)</userinput>
4233
</screen> Vous obtenez la matrice inférieure dans une variable appelée <varname>L</varname> et la matrice supérieure dans une variable appelée <varname>U</varname>.</para>
4234
<para>C'est la décomposition LU d'une matrice appelée aussi réduction de Crout ou de Cholesky (ISBN 0-201-11577-8 pp.99-103). La matrice triangulaire supérieure est composée d'une diagonale de 1. Ce n'est pas la méthode de Doolittle pour laquelle la diagonale de 1 est dans la matrice inférieure.</para>
4235
<para>Toutes les matrices ne possèdent pas de décomposition LU, par exemple <userinput>[0,1;1,0]</userinput> n'en a pas. Dans ce cas, cette fonction renvoie <constant>false</constant> (faux) et initialise <varname>L</varname> et <varname>U</varname> à <constant>null</constant>.</para>
4236
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/LUDecomposition.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/LUDecomposition.html">Mathworld</ulink> pour plus d'informations.</para>
4241
<term><anchor id="gel-function-Minor"/>Minor</term>
4243
<synopsis>Minor (M,i,j)</synopsis>
4244
<para>Renvoie le mineur <varname>i</varname>-<varname>j</varname> d'une matrice.</para>
4245
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/Minor.html">Planetmath</ulink> pour plus d'informations.</para>
4250
<term><anchor id="gel-function-NonPivotColumns"/>NonPivotColumns</term>
4252
<synopsis>NonPivotColumns (M)</synopsis>
4253
<para>Renvoie les colonnes qui ne sont pas les colonnes pivot d'une matrice.</para>
4258
<term><anchor id="gel-function-Norm"/>Norm</term>
4260
<synopsis>Norm (v,p...)</synopsis>
4261
<para>Alias : <function>norm</function></para>
4262
<para>Renvoie la norme-p d'un vecteur (ou norme-2 si p n'est pas fourni).</para>
4267
<term><anchor id="gel-function-NullSpace"/>NullSpace</term>
4269
<synopsis>NullSpace (T)</synopsis>
4270
<para>Renvoie le noyau d'une matrice. C'est-à-dire le noyau de l'application linéaire que la matrice représente sous la forme d'une matrice dont l'espace des colonnes est le noyau de <varname>T</varname>.</para>
4271
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/Nullspace.html">Planetmath</ulink> pour plus d'informations.</para>
4276
<term><anchor id="gel-function-Nullity"/>Nullity</term>
4278
<synopsis>Nullity (M)</synopsis>
4279
<para>Alias : <function>nullity</function></para>
4280
<para>Renvoie la dimension du noyau de la matrice <varname>M</varname>.</para>
4281
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/Nullity.html">Planetmath</ulink> pour plus d'informations.</para>
4286
<term><anchor id="gel-function-OrthogonalComplement"/>OrthogonalComplement</term>
4288
<synopsis>OrthogonalComplement (M)</synopsis>
4289
<para>Renvoie le complément orthogonal de l'espace des colonnes.</para>
4294
<term><anchor id="gel-function-PivotColumns"/>PivotColumns</term>
4296
<synopsis>PivotColumns (M)</synopsis>
4297
<para>Renvoie les numéros des colonnes pivot d'une matrice, c'est-à-dire quelles sont les colonnes d'une matrice réduite qui contiennent 1 en première position. Renvoie également dans quelles lignes se trouvent ces pivots.</para>
4302
<term><anchor id="gel-function-Projection"/>Projection</term>
4304
<synopsis>Projection (v,W,B...)</synopsis>
4305
<para>Projection du vecteur <varname>v</varname> sur le sous-espace <varname>W</varname> par rapport au produit scalaire donné par <varname>B</varname>. Si <varname>B</varname> n'est pas fourni alors le produit hermitien standard est utilisé. <varname>B</varname> peut être soit une forme sesquilinéaire à deux arguments soit une matrice fournissant une forme sesquilinéaire.</para>
4310
<term><anchor id="gel-function-QRDecomposition"/>QRDecomposition</term>
4312
<synopsis>QRDecomposition (A, Q)</synopsis>
4313
<para>Calcule la décomposition QR d'une matrice carrée <varname>A</varname>, renvoie la matrice triangulaire supérieure <varname>R</varname> et définit <varname>Q</varname> comme la matrice orthogonale (unitaire). <varname>Q</varname> doit être une référence. Si vous ne voulez pas qu'elle soit renvoyée, utilisez <constant>null</constant>. Par exemple : <screen><prompt>genius></prompt> <userinput>R = QRDecomposition(A,&Q)</userinput>
4314
</screen> Vous obtenez la matrice supérieure dans une variable appelée <varname>R</varname> et la matrice orthogonale (unitaire) dans <varname>Q</varname>.</para>
4315
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/QRDecomposition.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/QRDecomposition.html">Mathworld</ulink> pour plus d'informations.</para>
4320
<term><anchor id="gel-function-RayleighQuotient"/>RayleighQuotient</term>
4322
<synopsis>RayleighQuotient (A,x)</synopsis>
4323
<para>Renvoie le quotient de Rayleigh (aussi appelé le quotient ou rapport de Rayleigh-Ritz) d'une matrice et d'un vecteur.</para>
4324
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/RayleighQuotient.html">Planetmath</ulink> pour plus d'informations.</para>
4329
<term><anchor id="gel-function-RayleighQuotientIteration"/>RayleighQuotientIteration</term>
4331
<synopsis>RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</synopsis>
4332
<para>Cherche les valeurs propres de <varname>A</varname> en utilisant la méthode itérative du quotient de Rayleigh. <varname>x</varname> est une valeur initiale estimée pour un vecteur propre et peut être tirée au hasard. Si vous voulez avoir une chance de trouver des valeurs propres complexes, la partie imaginaire ne doit pas être nulle. Le programme effectue au maximum <varname>maxiter</varname> itérations et renvoie <constant>null</constant> s'il ne peut trouver une solution avec une précision inférieure à <varname>epsilon</varname>. <varname>vecref</varname> doit être soit <constant>null</constant> ou une référence à une variable dans laquelle le vecteur propre est enregistré.</para>
4333
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/RayleighQuotient.html">Planetmath</ulink> pour plus d'informations sur le quotient de Rayleigh.</para>
4338
<term><anchor id="gel-function-Rank"/>Rank</term>
4340
<synopsis>Rank (M)</synopsis>
4341
<para>Alias : <function>rank</function></para>
4342
<para>Renvoie le rang d'une matrice.</para>
4343
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/SylvestersLaw.html">Planetmath</ulink> pour plus d'informations.</para>
4348
<term><anchor id="gel-function-RosserMatrix"/>RosserMatrix</term>
4350
<synopsis>RosserMatrix ()</synopsis>
4351
<para>Returns the Rosser matrix, which is a classic symmetric eigenvalue test problem.</para>
4356
<term><anchor id="gel-function-Rotation2D"/>Rotation2D</term>
4358
<synopsis>Rotation2D (angle)</synopsis>
4359
<para>Alias : <function>RotationMatrix</function></para>
4360
<para>Renvoie la matrice correspondant à la rotation centrée sur l'origine dans R<superscript>2</superscript>.</para>
4365
<term><anchor id="gel-function-Rotation3DX"/>Rotation3DX</term>
4367
<synopsis>Rotation3DX (angle)</synopsis>
4368
<para>Renvoie la matrice correspondant à la rotation centrée sur l'origine dans R<superscript>3</superscript> autour de l'axe des x.</para>
4373
<term><anchor id="gel-function-Rotation3DY"/>Rotation3DY</term>
4375
<synopsis>Rotation3DY (angle)</synopsis>
4376
<para>Renvoie la matrice correspondant à la rotation centrée sur l'origine dans R<superscript>3</superscript> autour de l'axe des y.</para>
4381
<term><anchor id="gel-function-Rotation3DZ"/>Rotation3DZ</term>
4383
<synopsis>Rotation3DZ (angle)</synopsis>
4384
<para>Renvoie la matrice correspondant à la rotation centrée sur l'origine dans R<superscript>3</superscript> autour de l'axe des z.</para>
4389
<term><anchor id="gel-function-RowSpace"/>RowSpace</term>
4391
<synopsis>RowSpace (M)</synopsis>
4392
<para>Renvoie une matrice de base pour l'espace vectoriel engendré par les lignes d'une matrice.</para>
4397
<term><anchor id="gel-function-SesquilinearForm"/>SesquilinearForm</term>
4399
<synopsis>SesquilinearForm (v,A,w)</synopsis>
4400
<para>Évalue (v, w) par rapport à la forme sesquilinéaire donnée par la matrice A.</para>
4405
<term><anchor id="gel-function-SesquilinearFormFunction"/>SesquilinearFormFunction</term>
4407
<synopsis>SesquilinearFormFunction (A)</synopsis>
4408
<para>Renvoie une fonction qui évalue deux vecteurs par rapport à la forme sesquilinéaire donnée par A.</para>
4413
<term><anchor id="gel-function-SmithNormalFormField"/>SmithNormalFormField</term>
4415
<synopsis>SmithNormalFormField (A)</synopsis>
4416
<para>Forme normale de Smith pour les corps (se terminera par des 1 sur la diagonale).</para>
4421
<term><anchor id="gel-function-SmithNormalFormInteger"/>SmithNormalFormInteger</term>
4423
<synopsis>SmithNormalFormInteger (M)</synopsis>
4424
<para>Forme normale de Smith pour les matrices entières carrées (pas sa caractéristique).</para>
4429
<term><anchor id="gel-function-SolveLinearSystem"/>SolveLinearSystem</term>
4431
<synopsis>SolveLinearSystem (M,V,params...)</synopsis>
4432
<para>Résout le système linéaire Mx=V, renvoie V s'il y a une solution unique ou <constant>null</constant> sinon. Deux références d'arguments supplémentaires peuvent être utilisés pour recevoir les réductions de M et V.</para>
4437
<term><anchor id="gel-function-ToeplitzMatrix"/>ToeplitzMatrix</term>
4439
<synopsis>ToeplitzMatrix (c, r...)</synopsis>
4440
<para>Renvoie la matrice de Toeplitz construite à partir de la première colonne c et (éventuellement) de la première ligne r. Si seule la colonne c est fournie alors elle est conjuguée et la version non conjuguée est utilisée pour la première ligne pour fournir une matrice hermitienne (si le premier élément est réel bien sûr).</para>
4441
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/ToeplitzMatrix.html">Planetmath</ulink> pour plus d'informations.</para>
4446
<term><anchor id="gel-function-Trace"/>Trace</term>
4448
<synopsis>Trace (M)</synopsis>
4449
<para>Alias : <function>trace</function></para>
4450
<para>Calcule la trace d'une matrice, c'est-à-dire la somme des éléments diagonaux.</para>
4451
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/Trace.html">Planetmath</ulink> pour plus d'informations.</para>
4456
<term><anchor id="gel-function-Transpose"/>Transpose</term>
4458
<synopsis>Transpose (M)</synopsis>
4459
<para>Matrice transposée. C'est identique à l'opérateur <userinput>.'</userinput></para>
4460
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/Transpose.html">Planetmath</ulink> pour plus d'informations.</para>
4465
<term><anchor id="gel-function-VandermondeMatrix"/>VandermondeMatrix</term>
4467
<synopsis>VandermondeMatrix (v)</synopsis>
4468
<para>Alias : <function>vander</function></para>
4469
<para>Renvoie la matrice de Vandermonde.</para>
4474
<term><anchor id="gel-function-VectorAngle"/>VectorAngle</term>
4476
<synopsis>VectorAngle (v,w,B...)</synopsis>
4477
<para>L'angle entre deux vecteurs par rapport au produit scalaire donné par <varname>B</varname>. Si <varname>B</varname> n'est pas fourni alors le produit hermitien standard est utilisé. <varname>B</varname> peut être soit une forme sesquilinéaire à deux arguments soit une matrice fournissant une forme sesquilinéaire.</para>
4482
<term><anchor id="gel-function-VectorSpaceDirectSum"/>VectorSpaceDirectSum</term>
4484
<synopsis>VectorSpaceDirectSum (M,N)</synopsis>
4485
<para>Somme directe des espaces vectoriels M et N.</para>
4490
<term><anchor id="gel-function-VectorSubspaceIntersection"/>VectorSubspaceIntersection</term>
4492
<synopsis>VectorSubspaceIntersection (M,N)</synopsis>
4493
<para>Intersection des sous-espaces donnés par M et N.</para>
4498
<term><anchor id="gel-function-VectorSubspaceSum"/>VectorSubspaceSum</term>
4500
<synopsis>VectorSubspaceSum (M,N)</synopsis>
4501
<para>Somme des espaces vectoriels M et N, c'est-à-dire {w | w=m+n, m dans M, n dans N}.</para>
4506
<term><anchor id="gel-function-adj"/>adj</term>
4508
<synopsis>adj (m)</synopsis>
4509
<para>Alias : <function>Adjugate</function></para>
4510
<para>Renvoie la matrice adjointe d'une matrice.</para>
4515
<term><anchor id="gel-function-cref"/>cref</term>
4517
<synopsis>cref (M)</synopsis>
4518
<para>Alias : <function>CREF</function><function>ColumnReducedEchelonForm</function></para>
4519
<para>Calcule la forme échelonnée réduite en colonnes.</para>
4524
<term><anchor id="gel-function-det"/>det</term>
4526
<synopsis>det (M)</synopsis>
4527
<para>Alias : <function>Determinant</function></para>
4528
<para>Renvoie le déterminant d'une matrice.</para>
4529
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/D%C3%A9terminant_%28math%C3%A9matiques%29">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/Determinant2.html">Planetmath</ulink> pour plus d'informations.</para>
4534
<term><anchor id="gel-function-ref"/>ref</term>
4536
<synopsis>ref (M)</synopsis>
4537
<para>Alias : <function>REF</function><function>RowEchelonForm</function></para>
4538
<para>Renvoie la matrice échelonnée en lignes (row echelon) d'une matrice. C'est-à-dire effectue une élimination de Gauss de <varname>M</varname>. Les lignes de pivot sont divisées pour que tous les pivots soient égaux à 1.</para>
4539
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Matrice_%C3%A9chelonn%C3%A9e">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/RowEchelonForm.html">Planetmath</ulink> pour plus d'informations.</para>
4544
<term><anchor id="gel-function-rref"/>rref</term>
4546
<synopsis>rref (M)</synopsis>
4547
<para>Alias : <function>RREF</function><function>ReducedRowEchelonForm</function></para>
4548
<para>Renvoie la matrice échelonnée réduite en lignes (reduced row echelon) d'une matrice. C'est-à-dire effectue une élimination de Gauss-Jordan de <varname>M</varname>.</para>
4549
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Matrice_%C3%A9chelonn%C3%A9e">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/ReducedRowEchelonForm.html">Planetmath</ulink> pour plus d'informations.</para>
4556
<sect1 id="genius-gel-function-list-combinatorics">
4557
<title>Combinatoire</title>
4560
<term><anchor id="gel-function-Catalan"/>Catalan</term>
4562
<synopsis>Catalan (n)</synopsis>
4563
<para>Renvoie le <varname>n</varname>-ième nombre catalan.</para>
4564
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/CatalanNumbers.html">Planetmath</ulink> pour plus d'informations.</para>
4569
<term><anchor id="gel-function-Combinations"/>Combinations</term>
4571
<synopsis>Combinations (k,n)</synopsis>
4572
<para>Renvoie toutes les combinaisons de k nombres de 1 à n comme un vecteur de vecteurs (consultez aussi <link linkend="gel-function-NextCombination">NextCombination</link>).</para>
4577
<term><anchor id="gel-function-DoubleFactorial"/>DoubleFactorial</term>
4579
<synopsis>DoubleFactorial (n)</synopsis>
4580
<para>Double factorielle : <userinput>n(n-2)(n-4)...</userinput></para>
4581
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/DoubleFactorial.html">Planetmath</ulink> pour plus d'informations.</para>
4586
<term><anchor id="gel-function-Factorial"/>Factorial</term>
4588
<synopsis>Factorial (n)</synopsis>
4589
<para>Factorielle : <userinput>n(n-1)(n-2)...</userinput></para>
4590
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/Factorial.html">Planetmath</ulink> pour plus d'informations.</para>
4595
<term><anchor id="gel-function-FallingFactorial"/>FallingFactorial</term>
4597
<synopsis>FallingFactorial (n,k)</synopsis>
4598
<para>Factorielle décroissante : <userinput>(n)_k·=·n(n-1)...(n-(k-1))</userinput></para>
4599
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/FallingFactorial.html">Planetmath</ulink> pour plus d'informations.</para>
4604
<term><anchor id="gel-function-Fibonacci"/>Fibonacci</term>
4606
<synopsis>Fibonacci (x)</synopsis>
4607
<para>Alias : <function>fib</function></para>
4608
<para>Calcule le <varname>n</varname>-ième nombre de Fibonacci. C'est-à-dire le nombre défini de manière récursive par <userinput>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</userinput> et <userinput>Fibonacci(1) = Fibonacci(2) = 1</userinput>.</para>
4609
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Suite_de_Fibonacci">Wikipedia</ulink> ou <ulink url="http://planetmath.org/encyclopedia/FibonacciSequence.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/FibonacciNumber.html">Mathworld</ulink> pour plus d'informations.</para>
4614
<term><anchor id="gel-function-FrobeniusNumber"/>FrobeniusNumber</term>
4616
<synopsis>FrobeniusNumber (v,param...)</synopsis>
4617
<para>Calcule le nombre de Frobenius. C'est-à-dire calcule le plus petit nombre qui ne peut pas être obtenu comme une combinaison linéaire d'entiers non négatifs d'un vecteur donné d'entiers non négatifs. Le vecteur peut être fourni sous la forme de nombre séparés ou d'un seul vecteur. Tous les nombres fournis doivent avoir un PGCD de 1.</para>
4618
<para>Consultez <ulink url="http://mathworld.wolfram.com/FrobeniusNumber.html">Mathworld</ulink> pour plus d'informations.</para>
4623
<term><anchor id="gel-function-GaloisMatrix"/>GaloisMatrix</term>
4625
<synopsis>GaloisMatrix (règle_de_combinaison)</synopsis>
4626
<para>Matrice de Galois étant donnée la règle de combinaison linéaire (a_1*x_+...+a_n*x_n=x_(n+1)).</para>
4631
<term><anchor id="gel-function-GreedyAlgorithm"/>GreedyAlgorithm</term>
4633
<synopsis>FrobeniusNumber (n,v)</synopsis>
4634
<para>Trouve le vecteur <varname>c</varname> d'entiers non négatifs tel que le produit scalaire par <varname>v</varname> est égal à n. Si ce n'est pas possible, renvoie <constant>null</constant>. <varname>v</varname> doit être fourni trié dans l'ordre croissant et doit être composé d'entier non négatif.</para>
4635
<para>Consultez <ulink url="http://mathworld.wolfram.com/GreedyAlgorithm.html">Mathworld</ulink> pour plus d'informations.</para>
4640
<term><anchor id="gel-function-HarmonicNumber"/>HarmonicNumber</term>
4642
<synopsis>HarmonicNumber (n,r)</synopsis>
4643
<para>Alias : <function>HarmonicH</function></para>
4644
<para>Nombre harmonique, le <varname>n</varname>-ième nombre harmonique d'ordre <varname>r</varname>.</para>
4649
<term><anchor id="gel-function-Hofstadter"/>Hofstadter</term>
4651
<synopsis>Hofstadter (n)</synopsis>
4652
<para>Fonction de Hofstadter q(n) définie par q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2)).</para>
4657
<term><anchor id="gel-function-LinearRecursiveSequence"/>LinearRecursiveSequence</term>
4659
<synopsis>LinearRecursiveSequence (valeurs_ensemencement,règle_de_combinaison,n)</synopsis>
4660
<para>Calcule la relation de récurrence linéaire en utilisant l'algorithme de Galois.</para>
4665
<term><anchor id="gel-function-Multinomial"/>Multinomial</term>
4667
<synopsis>Multinomial (v,param...)</synopsis>
4668
<para>Calcule les coefficients multinomiaux. Prend un vecteur de <varname>k</varname> entiers non négatifs et calcule les coefficients multinomiaux. Cela correspond aux coefficients dans le polynôme homogène à <varname>k</varname> variables avec les puissances correspondantes.</para>
4669
<para>La formule pour <userinput>Multinomial(a,b,c)</userinput> peut s'écrire sous la forme :<programlisting>(a+b+c)! / (a!b!c!)
4670
</programlisting> En d'autres termes, si vous n'avez que deux éléments alors <userinput>Multinomial(a,b)</userinput> est la même chose que <userinput>Binomial(a+b,a)</userinput> ou <userinput>Binomial(a+b,b)</userinput>.</para>
4671
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/MultinomialTheorem.html">Planetmath</ulink>, <ulink url="http://mathworld.wolfram.com/MultinomialCoefficient.html">Mathworld</ulink> ou <ulink url="http://fr.wikipedia.org/wiki/Formule_du_multin%C3%B4me">Wikipedia</ulink> pour plus d'informations.</para>
4676
<term><anchor id="gel-function-NextCombination"/>NextCombination</term>
4678
<synopsis>NextCombination (v,n)</synopsis>
4679
<para>Calcule la combinaison qui apparaîtrait après v dans un appel à la fonction combinations, la première combinaison devrait être <userinput>[1:k]</userinput>. Cette fonction est utile si vous devez parcourir beaucoup de combinaisons et que vous ne voulez pas gaspiller de la mémoire pour les enregistrer.</para>
4680
<para>Par exemple, avec la fonction Combinations, vous devriez normalement écrire une boucle du style : <screen><userinput>for n in Combinations (4,6) do (
4683
</screen> Mais avec NextCombination, vous écrivez quelque chose comme cela : <screen><userinput>n:=[1:4];
4686
) while not IsNull(n:=NextCombination(n,6));</userinput>
4687
</screen> Consultez également <link linkend="gel-function-Combinations">Combinations</link>.</para>
4692
<term><anchor id="gel-function-Pascal"/>Pascal</term>
4694
<synopsis>Pascal (i)</synopsis>
4695
<para>Calcule le triangle de Pascal sous la forme d'une matrice. Cela renvoie une matrice <varname>i</varname>+1 par <varname>i</varname>+1 diagonale inférieure qui est le triangle de Pascal après <varname>i</varname> itérations.</para>
4696
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/PascalsTriangle.html">Planetmath</ulink> pour plus d'informations.</para>
4701
<term><anchor id="gel-function-Permutations"/>Permutations</term>
4703
<synopsis>Permutations (k,n)</synopsis>
4704
<para>Renvoie toutes les permutations de <varname>k</varname> nombres de 1 à <varname>n</varname> comme un vecteur de vecteurs.</para>
4705
<para>Consultez <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> ou <ulink url="http://fr.wikipedia.org/wiki/Permutation">Wikipedia</ulink> pour plus d'informations.</para>
4710
<term><anchor id="gel-function-RisingFactorial"/>RisingFactorial</term>
4712
<synopsis>RisingFactorial (n,k)</synopsis>
4713
<para>Alias : <function>Pochhammer</function></para>
4714
<para>Factorielle croissante (Pochhammer) : (n)_k = n(n+1)...(n+(k-1)).</para>
4715
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/RisingFactorial.html">Planetmath</ulink> pour plus d'informations.</para>
4720
<term><anchor id="gel-function-StirlingNumberFirst"/>StirlingNumberFirst</term>
4722
<synopsis>StirlingNumberFirst (n,m)</synopsis>
4723
<para>Alias : <function>StirlingS1</function></para>
4724
<para>Nombre de Stirling du premier type.</para>
4725
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/StirlingNumbersOfTheFirstKind.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html">Mathworld</ulink> pour plus d'informations.</para>
4730
<term><anchor id="gel-function-StirlingNumberSecond"/>StirlingNumberSecond</term>
4732
<synopsis>StirlingNumberSecond (n,m)</synopsis>
4733
<para>Alias : <function>StirlingS2</function></para>
4734
<para>Nombre de Stirling du second type.</para>
4735
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/StirlingNumbersSecondKind.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html">Mathworld</ulink> pour plus d'informations.</para>
4740
<term><anchor id="gel-function-Subfactorial"/>Subfactorial</term>
4742
<synopsis>Subfactorial (n)</synopsis>
4743
<para>Sous-factorielle : n! multiplié par sum_{k=1}^n (-1)^k/k!.</para>
4748
<term><anchor id="gel-function-Triangular"/>Triangular</term>
4750
<synopsis>Triangular (nième)</synopsis>
4751
<para>Calcule le <varname>n</varname>-ième nombre triangulaire.</para>
4752
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/TriangularNumbers.html">Planetmath</ulink> pour plus d'informations.</para>
4757
<term><anchor id="gel-function-nCr"/>nCr</term>
4759
<synopsis>nCr (n,r)</synopsis>
4760
<para>Alias : <function>Binomial</function></para>
4761
<para>Calcule le nombre de combinaisons, c'est-à-dire le coefficient binomial. <varname>n</varname> peut être n'importe quel nombre réel.</para>
4762
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/Choose.html">Planetmath</ulink> pour plus d'informations.</para>
4767
<term><anchor id="gel-function-nPr"/>nPr</term>
4769
<synopsis>nPr (n,r)</synopsis>
4770
<para>Calcule le nombre de permutations de taille <varname>r</varname> de nombres compris entre 1 et <varname>n</varname>.</para>
4771
<para>Consultez <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> ou <ulink url="http://fr.wikipedia.org/wiki/Permutation">Wikipedia</ulink> pour plus d'informations.</para>
4778
<sect1 id="genius-gel-function-list-calculus">
4779
<title>Analyse</title>
4782
<term><anchor id="gel-function-CompositeSimpsonsRule"/>CompositeSimpsonsRule</term>
4784
<synopsis>CompositeSimpsonsRule (f,a,b,n)</synopsis>
4785
<para>Intégration de f par la méthode de Simpson composée sur l'intervalle [a,b] avec n sous-intervalles avec une erreur de l'ordre max(f'''')*h^4*(b-a)/180, notez que n doit être pair.</para>
4786
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/SimpsonsRule.html">Planetmath</ulink> pour plus d'informations.</para>
4791
<term><anchor id="gel-function-CompositeSimpsonsRuleTolerance"/>CompositeSimpsonsRuleTolerance</term>
4793
<synopsis>CompositeSimpsonsRuleTolerance (f,a,b,FourthDerivativeBound,Tolerance)</synopsis>
4794
<para>Intégration de f par la méthode de Simpson composée sur l'intervalle [a,b] avec un nombre d'étapes calculé à l'aide de la borne de la dérivée quatrième et la tolérance souhaitée.</para>
4795
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/SimpsonsRule.html">Planetmath</ulink> pour plus d'informations.</para>
4800
<term><anchor id="gel-function-Derivative"/>Derivative</term>
4802
<synopsis>Derivative (f,x0)</synopsis>
4803
<para>Tente de calculer la dérivée en essayant d'abord une approche symbolique puis numérique.</para>
4808
<term><anchor id="gel-function-EvenPeriodicExtension"/>EvenPeriodicExtension</term>
4810
<synopsis>EvenPeriodicExtension (f,L)</synopsis>
4811
<para>Renvoie une fonction qui est l'extension périodique paire de <function>f</function> de demi-période <varname>L</varname>. C'est-à-dire une fonction définie sur l'intervalle <userinput>[0,L]</userinput> étendue de manière à être paire sur <userinput>[-L,L]</userinput> puis rendue périodique de période <userinput>2*L</userinput>.</para>
4812
<para>Consultez aussi <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link> et <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
4817
<term><anchor id="gel-function-FourierSeriesFunction"/>FourierSeriesFunction</term>
4819
<synopsis>FourierSeriesFunction (a,b,L)</synopsis>
4820
<para>Renvoie une fonction qui est la série de Fourier de coefficients donnés par les vecteurs <varname>a</varname> (cosinus) et <varname>b</varname> (sinus). Notez que <userinput>a@(1)</userinput> est le coefficient constant donc <userinput>a@(n)</userinput> se rapporte au terme en <userinput>cos(x*(n-1)*pi/L)</userinput> alors que <userinput>b@(n)</userinput> se rapporte au terme en <userinput>sin(x*n*pi/L)</userinput>. Il est possible que <varname>a</varname> ou <varname>b</varname> soit <constant>null</constant>.</para>
4821
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/S%C3%A9rie_de_Fourier">Wikipedia</ulink> ou <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> pour plus d'informations.</para>
4826
<term><anchor id="gel-function-InfiniteProduct"/>InfiniteProduct</term>
4828
<synopsis>InfiniteProduct (fonc,début,inc)</synopsis>
4829
<para>Essaie de calculer un produit infini pour une fonction à un seul argument.</para>
4834
<term><anchor id="gel-function-InfiniteProduct2"/>InfiniteProduct2</term>
4836
<synopsis>InfiniteProduct2 (fonc,param,début,inc)</synopsis>
4837
<para>Essaie de calculer un produit infini pour une fonction à double arguments avec func(arg,n).</para>
4842
<term><anchor id="gel-function-InfiniteSum"/>InfiniteSum</term>
4844
<synopsis>InfiniteSum (fonc,début,inc)</synopsis>
4845
<para>Essaie de calculer une somme infinie pour une fonction à un seul argument.</para>
4850
<term><anchor id="gel-function-InfiniteSum2"/>InfiniteSum2</term>
4852
<synopsis>InfiniteSum2 (fonc,param,début,inc)</synopsis>
4853
<para>Essaie de calculer une somme infinie pour une fonction à double arguments avec func(arg,n).</para>
4858
<term><anchor id="gel-function-IsContinuous"/>IsContinuous</term>
4860
<synopsis>IsContinuous (f,x0)</synopsis>
4861
<para>Essaie de voir si une fonction à valeur réelle est continue en x0 en calculant la limite en ce point.</para>
4866
<term><anchor id="gel-function-IsDifferentiable"/>IsDifferentiable</term>
4868
<synopsis>IsDifferentiable (f,x0)</synopsis>
4869
<para>Teste de différentiabilité en approchant les limites gauche et droite et en les comparant.</para>
4874
<term><anchor id="gel-function-LeftLimit"/>LeftLimit</term>
4876
<synopsis>LeftLimit (f,x0)</synopsis>
4877
<para>Calcule la limite gauche d'une fonction à valeurs réelles en x0.</para>
4882
<term><anchor id="gel-function-Limit"/>Limit</term>
4884
<synopsis>Limit (f,x0)</synopsis>
4885
<para>Calcule la limite d'une fonction à valeur réelle en x0. Essaie de calculer les deux limites à gauche et à droite.</para>
4890
<term><anchor id="gel-function-MidpointRule"/>MidpointRule</term>
4892
<synopsis>MidpointRule (f,a,b,n)</synopsis>
4893
<para>Intégration par la méthode des rectangles.</para>
4898
<term><anchor id="gel-function-NumericalDerivative"/>NumericalDerivative</term>
4900
<synopsis>NumericalDerivative (f,x0)</synopsis>
4901
<para>Alias : <function>NDerivative</function></para>
4902
<para>Essaie de calculer la dérivée par méthode numérique.</para>
4907
<term><anchor id="gel-function-NumericalFourierSeriesCoefficients"/>NumericalFourierSeriesCoefficients</term>
4909
<synopsis>NumericalFourierSeriesCoefficients (f,L,N)</synopsis>
4910
<para>Renvoie un vecteur de vecteurs <userinput>[a,b]</userinput> où <varname>a</varname> sont les coefficients des cosinus et <varname>b</varname> ceux des sinus de la série de Fourier de la fonction <function>f</function> de demi-période <varname>L</varname> (définie sur l'intervalle <userinput>[-L,L]</userinput> et étendue de manière périodique), calculée numériquement jusqu'au <varname>N</varname>-ième harmonique. Les coefficients sont calculés par intégration numérique en utilisant la fonction <function>NumericalIntegral</function>.</para>
4911
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/S%C3%A9rie_de_Fourier">Wikipedia</ulink> ou <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> pour plus d'informations.</para>
4916
<term><anchor id="gel-function-NumericalFourierSeriesFunction"/>NumericalFourierSeriesFunction</term>
4918
<synopsis>NumericalFourierSeriesFunction (f,L,N)</synopsis>
4919
<para>Renvoie une fonction, qui est la série de Fourier de la fonction <function>f</function> de demi-période <varname>L</varname> (définie sur l'intervalle <userinput>[-L,L]</userinput> et étendue de manière périodique), calculée numériquement jusqu'au <varname>N</varname>-ième harmonique. C'est la série trigonométrique réelle composée de sinus et de cosinus. Les coefficients sont calculés par intégration numérique en utilisant la fonction <function>NumericalIntegral</function>.</para>
4920
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/S%C3%A9rie_de_Fourier">Wikipedia</ulink> ou <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> pour plus d'informations.</para>
4925
<term><anchor id="gel-function-NumericalFourierCosineSeriesCoefficients"/>NumericalFourierCosineSeriesCoefficients</term>
4927
<synopsis>NumericalFourierCosineSeriesCoefficients (f,L,N)</synopsis>
4928
<para>Return a vector of coefficients of
4929
the cosine Fourier series of
4930
<function>f</function> with half-period <varname>L</varname>. That is,
4931
we take <function>f</function> defined on <userinput>[0,L]</userinput>
4932
take the even periodic extension and compute the Fourier series, which
4933
only has cosine terms. The series is computed up to the
4934
<varname>N</varname>th harmonic. The coefficients are
4935
computed by numerical integration using
4936
<function>NumericalIntegral</function>.
4937
Note that <userinput>a@(1)</userinput> is
4938
the constant coefficient! That is, <userinput>a@(n)</userinput> refers to
4939
the term <userinput>cos(x*(n-1)*pi/L)</userinput>.</para>
4940
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/S%C3%A9rie_de_Fourier">Wikipedia</ulink> ou <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> pour plus d'informations.</para>
4945
<term><anchor id="gel-function-NumericalFourierCosineSeriesFunction"/>NumericalFourierCosineSeriesFunction</term>
4947
<synopsis>NumericalFourierCosineSeriesFunction (f,L,N)</synopsis>
4948
<para>Renvoie une fonction qui est la série de Fourier en cosinus de <function>f</function> de demi-période <varname>L</varname>. C'est-à-dire la fonction <function>f</function> définie sur l'intervalle <userinput>[0,L]</userinput> est étendue en la rendant périodique paire, puis la série de Fourier qui ne contient que des termes en cosinus, est calculée. La série est calculée jusqu'au <varname>N</varname>-ième harmonique. Les coefficients sont calculés par intégration numérique en utilisant la fonction <function>NumericalIntegral</function>.</para>
4949
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/S%C3%A9rie_de_Fourier">Wikipedia</ulink> ou <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> pour plus d'informations.</para>
4954
<term><anchor id="gel-function-NumericalFourierSineSeriesCoefficients"/>NumericalFourierSineSeriesCoefficients</term>
4956
<synopsis>NumericalFourierSineSeriesCoefficients (f,L,N)</synopsis>
4957
<para>Return a vector of coefficients of
4958
the sine Fourier series of
4959
<function>f</function> with half-period <varname>L</varname>. That is,
4960
we take <function>f</function> defined on <userinput>[0,L]</userinput>
4961
take the odd periodic extension and compute the Fourier series, which
4962
only has sine terms. The series is computed up to the
4963
<varname>N</varname>th harmonic. The coefficients are
4964
computed by numerical integration using
4965
<function>NumericalIntegral</function>.</para>
4966
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/S%C3%A9rie_de_Fourier">Wikipedia</ulink> ou <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> pour plus d'informations.</para>
4971
<term><anchor id="gel-function-NumericalFourierSineSeriesFunction"/>NumericalFourierSineSeriesFunction</term>
4973
<synopsis>NumericalFourierSineSeriesFunction (f,L,N)</synopsis>
4974
<para>Renvoie une fonction qui est la série de Fourier en sinus de <function>f</function> de demi-période <varname>L</varname>. C'est-à-dire la fonction <function>f</function> définie sur l'intervalle <userinput>[0,L]</userinput> est étendue en la rendant périodique impaire, puis la série de Fourier qui ne contient que des termes en sinus, est calculée. La série est calculée jusqu'au <varname>N</varname>-ième harmonique. Les coefficients sont calculés par intégration numérique en utilisant la fonction <function>NumericalIntegral</function>.</para>
4975
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/S%C3%A9rie_de_Fourier">Wikipedia</ulink> ou <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> pour plus d'informations.</para>
4980
<term><anchor id="gel-function-NumericalIntegral"/>NumericalIntegral</term>
4982
<synopsis>NumericalIntegral (f,a,b)</synopsis>
4983
<para>Intégration de f entre a et b, en suivant la règle définie par <varname>NumericalIntegralFunction</varname> et en utilisant les <varname>NumericalIntegralSteps</varname> pas.</para>
4988
<term><anchor id="gel-function-NumericalLeftDerivative"/>NumericalLeftDerivative</term>
4990
<synopsis>NumericalLeftDerivative (f,x0)</synopsis>
4991
<para>Essaie de calculer la dérivée à gauche par méthode numérique.</para>
4996
<term><anchor id="gel-function-NumericalLimitAtInfinity"/>NumericalLimitAtInfinity</term>
4998
<synopsis>NumericalLimitAtInfinity (_f,step_fun,tolerance,successive_for_success,N)</synopsis>
4999
<para>Essaie de calculer la limite de f (step_fun(i)) lorsque i va de 1 à N.</para>
5004
<term><anchor id="gel-function-NumericalRightDerivative"/>NumericalRightDerivative</term>
5006
<synopsis>NumericalRightDerivative (f,x0)</synopsis>
5007
<para>Essaie de calculer la dérivée à droite par méthode numérique.</para>
5012
<term><anchor id="gel-function-OddPeriodicExtension"/>OddPeriodicExtension</term>
5014
<synopsis>OddPeriodicExtension (f,L)</synopsis>
5015
<para>Renvoie une fonction qui est l'extension périodique impaire de <function>f</function> de demi-période <varname>L</varname>. C'est-à-dire une fonction définie sur l'intervalle <userinput>[0,L]</userinput> étendue de manière à être impaire sur <userinput>[-L,L]</userinput> puis rendue périodique de période <userinput>2*L</userinput>.</para>
5016
<para>Consultez aussi <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link> et <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
5021
<term><anchor id="gel-function-OneSidedFivePointFormula"/>OneSidedFivePointFormula</term>
5023
<synopsis>OneSidedFivePointFormula (f,x0,h)</synopsis>
5024
<para>Calcule la dérivée d'un côté en utilisant une formule à cinq points.</para>
5029
<term><anchor id="gel-function-OneSidedThreePointFormula"/>OneSidedThreePointFormula</term>
5031
<synopsis>OneSidedThreePointFormula (f,x0,h)</synopsis>
5032
<para>Calcule la dérivée d'un côté en utilisant une formule à trois points.</para>
5037
<term><anchor id="gel-function-PeriodicExtension"/>PeriodicExtension</term>
5039
<synopsis>PeriodicExtension (f,a,b)</synopsis>
5040
<para>Renvoie une fonction qui est l'extension périodique de <function>f</function> définie sur l'intervalle <userinput>[a,b]</userinput> et de période <userinput>b-a</userinput>.</para>
5041
<para>Consultez également <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link> et <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>.</para>
5046
<term><anchor id="gel-function-RightLimit"/>RightLimit</term>
5048
<synopsis>RightLimit (f,x0)</synopsis>
5049
<para>Calcule la limite à droite d'une fonction à valeurs réelles en x0.</para>
5054
<term><anchor id="gel-function-TwoSidedFivePointFormula"/>TwoSidedFivePointFormula</term>
5056
<synopsis>TwoSidedFivePointFormula (f,x0,h)</synopsis>
5057
<para>Calcule la dérivée des deux côtés en utilisant une formule à cinq points.</para>
5062
<term><anchor id="gel-function-TwoSidedThreePointFormula"/>TwoSidedThreePointFormula</term>
5064
<synopsis>TwoSidedThreePointFormula (f,x0,h)</synopsis>
5065
<para>Calcule la dérivée des deux côtés en utilisant une formule à trois points.</para>
5072
<sect1 id="genius-gel-function-list-functions">
5073
<title>Fonctions</title>
5076
<term><anchor id="gel-function-Argument"/>Argument</term>
5078
<synopsis>Argument (z)</synopsis>
5079
<para>Alias : <function>Arg</function> <function>arg</function></para>
5080
<para>Renvoie l'argument (angle) d'un nombre complexe.</para>
5085
<term><anchor id="gel-function-BesselJ0"/>BesselJ0</term>
5087
<synopsis>BesselJ0 (x)</synopsis>
5088
<para>Bessel function of the first kind of order 0. Only implemented for real numbers.</para>
5091
<ulink url="http://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more information.
5097
<term><anchor id="gel-function-BesselJ1"/>BesselJ1</term>
5099
<synopsis>BesselJ1 (x)</synopsis>
5100
<para>Bessel function of the first kind of order 1. Only implemented for real numbers.</para>
5103
<ulink url="http://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more information.
5109
<term><anchor id="gel-function-BesselJn"/>BesselJn</term>
5111
<synopsis>BesselJn (n,x)</synopsis>
5112
<para>Bessel function of the first kind of order <varname>n</varname>. Only implemented for real numbers.</para>
5115
<ulink url="http://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more information.
5121
<term><anchor id="gel-function-BesselY0"/>BesselY0</term>
5123
<synopsis>BesselY0 (x)</synopsis>
5124
<para>Bessel function of the second kind of order 0. Only implemented for real numbers.</para>
5127
<ulink url="http://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more information.
5133
<term><anchor id="gel-function-BesselY1"/>BesselY1</term>
5135
<synopsis>BesselY1 (x)</synopsis>
5136
<para>Bessel function of the second kind of order 1. Only implemented for real numbers.</para>
5139
<ulink url="http://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more information.
5145
<term><anchor id="gel-function-BesselYn"/>BesselYn</term>
5147
<synopsis>BesselYn (n,x)</synopsis>
5148
<para>Bessel function of the second kind of order <varname>n</varname>. Only implemented for real numbers.</para>
5151
<ulink url="http://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more information.
5157
<term><anchor id="gel-function-DirichletKernel"/>DirichletKernel</term>
5159
<synopsis>DirichletKernel (n,t)</synopsis>
5160
<para>Calcul le noyau de Dirichlet d'ordre n.</para>
5165
<term><anchor id="gel-function-DiscreteDelta"/>DiscreteDelta</term>
5167
<synopsis>DiscreteDelta (v)</synopsis>
5168
<para>Renvoie 1 si et seulement si tous les éléments sont nuls.</para>
5173
<term><anchor id="gel-function-ErrorFunction"/>ErrorFunction</term>
5175
<synopsis>ErrorFunction (x)</synopsis>
5176
<para>Alias : <function>erf</function></para>
5177
<para>Fonction erreur, 2/sqrt(pi) * int_0^x e^(-t^2) dt.</para>
5178
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/ErrorFunction.html">Planetmath</ulink> pour plus d'informations.</para>
5183
<term><anchor id="gel-function-FejerKernel"/>FejerKernel</term>
5185
<synopsis>FejerKernel (n,t)</synopsis>
5186
<para>Noyau Fejer d'ordre <varname>n</varname> évalué en <varname>t</varname>.</para>
5187
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/FejerKernel.html">Planetmath</ulink> pour plus d'informations.</para>
5192
<term><anchor id="gel-function-GammaFunction"/>GammaFunction</term>
5194
<synopsis>GammaFunction (x)</synopsis>
5195
<para>Alias : <function>Gamma</function></para>
5196
<para>La fonction Gamma. Seules les valeurs réelles sont actuellement implémentées.</para>
5197
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/GammaFunction.html">Planetmath</ulink> pour plus d'informations.</para>
5202
<term><anchor id="gel-function-KroneckerDelta"/>KroneckerDelta</term>
5204
<synopsis>KroneckerDelta (v)</synopsis>
5205
<para>Renvoie 1 si et seulement si tous les éléments sont égaux.</para>
5210
<term><anchor id="gel-function-MinimizeFunction"/>MinimizeFunction</term>
5212
<synopsis>MinimizeFunction (fonc,x,incr)</synopsis>
5213
<para>Cherche la première valeur pour laquelle f(x)=0.</para>
5218
<term><anchor id="gel-function-MoebiusDiskMapping"/>MoebiusDiskMapping</term>
5220
<synopsis>MoebiusDiskMapping (a,z)</synopsis>
5221
<para>Transformation de Möbius du disque vers lui-même en faisant correspondre a à 0.</para>
5222
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/MobiusTransformation.html">Planetmath</ulink> pour plus d'informations.</para>
5227
<term><anchor id="gel-function-MoebiusMapping"/>MoebiusMapping</term>
5229
<synopsis>MoebiusMapping (z,z2,z3,z4)</synopsis>
5230
<para>Transformation de Möbius utilisant le rapport croisé en prenant z2, z3, z4 à 1, 0 et l'infini respectivement.</para>
5231
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/MobiusTransformation.html">Planetmath</ulink> pour plus d'informations.</para>
5236
<term><anchor id="gel-function-MoebiusMappingInftyToInfty"/>MoebiusMappingInftyToInfty</term>
5238
<synopsis>MoebiusMappingInftyToInfty (z,z2,z3)</synopsis>
5239
<para>Transformation de Möbius utilisant le rapport croisé en prenant l'infini à l'infini et z2, z3 à 1 et 0 respectivement.</para>
5240
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/MobiusTransformation.html">Planetmath</ulink> pour plus d'informations.</para>
5245
<term><anchor id="gel-function-MoebiusMappingInftyToOne"/>MoebiusMappingInftyToOne</term>
5247
<synopsis>MoebiusMappingInftyToOne (z,z3,z4)</synopsis>
5248
<para>Transformation de Möbius utilisant le rapport croisé en prenant l'infini à 1 et z3, z4 à 0 et l'infini respectivement.</para>
5249
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/MobiusTransformation.html">Planetmath</ulink> pour plus d'informations.</para>
5254
<term><anchor id="gel-function-MoebiusMappingInftyToZero"/>MoebiusMappingInftyToZero</term>
5256
<synopsis>MoebiusMappingInftyToZero (z,z2,z4)</synopsis>
5257
<para>Transformation de Möbius utilisant le rapport croisé en prenant l'infini à 0 et z2, z4 à 1 et l'infini respectivement.</para>
5258
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/MobiusTransformation.html">Planetmath</ulink> pour plus d'informations.</para>
5263
<term><anchor id="gel-function-PoissonKernel"/>PoissonKernel</term>
5265
<synopsis>PoissonKernel (r,sigma)</synopsis>
5266
<para>Le noyau de Poisson sur D(0,1) (non normalisé à 1, donc son intégrale vaut 2 pi).</para>
5271
<term><anchor id="gel-function-PoissonKernelRadius"/>PoissonKernelRadius</term>
5273
<synopsis>PoissonKernelRadius (r,sigma)</synopsis>
5274
<para>Le noyau de Poisson sur D(0,R) (non normalisé à 1).</para>
5279
<term><anchor id="gel-function-RiemannZeta"/>RiemannZeta</term>
5281
<synopsis>RiemannZeta (x)</synopsis>
5282
<para>Alias : <function>zeta</function></para>
5283
<para>Fonction zeta de Riemann (seules les valeurs réelles sont actuellement implémentées).</para>
5284
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/RiemannZetaFunction.html">Planetmath</ulink> pour plus d'informations.</para>
5289
<term><anchor id="gel-function-UnitStep"/>UnitStep</term>
5291
<synopsis>UnitStep (x)</synopsis>
5292
<para>La fonction échelon vaut 0 pour x<0, 1 sinon. C'est l'intégrale de la fonction delta de Dirac. Elle est aussi appelée fonction d'Heaviside.</para>
5293
<para>Consultez <ulink url="http://fr.wikipedia.org/wiki/Fonction_de_Heaviside">Wikipedia</ulink> pour plus d'informations.</para>
5298
<term><anchor id="gel-function-cis"/>cis</term>
5300
<synopsis>cis (x)</synopsis>
5301
<para>La fonction <function>cis</function> est la même que <userinput>cos(x)+1i*sin(x)</userinput>.</para>
5306
<term><anchor id="gel-function-deg2rad"/>deg2rad</term>
5308
<synopsis>deg2rad (x)</synopsis>
5309
<para>Convertit les degrés en radians.</para>
5314
<term><anchor id="gel-function-rad2deg"/>rad2deg</term>
5316
<synopsis>rad2deg (x)</synopsis>
5317
<para>Convertit les radians en degrés.</para>
5322
<term><anchor id="gel-function-sinc"/>sinc</term>
5324
<synopsis>sinc (x)</synopsis>
5325
<para>Calculates the unnormalized sinc function, that is
5326
<userinput>sin(x)/x</userinput>.
5327
If you want the normalized function call <userinput>sinc(pi*x)</userinput>.</para>
5330
<ulink url="http://en.wikipedia.org/wiki/Sinc">Wikipedia</ulink> for more information.
5338
<sect1 id="genius-gel-function-list-equation-solving">
5339
<title>Résolution d'équations</title>
5343
<term><anchor id="gel-function-CubicFormula"/>CubicFormula</term>
5345
<synopsis>CubicFormula (p)</synopsis>
5346
<para>Calcule les racines d'un polynôme cubique (de degré 3) en utilisant la formule cubique. Le polynôme doit être fourni sous la forme d'un vecteur de coefficients. Par exemple <userinput>4*x^3 + 2*x + 1</userinput> correspond au vecteur <userinput>[1,2,0,4]</userinput>. Renvoie un vecteur colonne contenant les trois solutions. La première solution est toujours celle qui est réelle puisqu'un polynôme cubique possède toujours une solution réelle.</para>
5347
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/CubicFormula.html">Planetmath</ulink>, <ulink url="http://mathworld.wolfram.com/CubicFormula.html">Mathworld</ulink> ou <ulink url="http://fr.wikipedia.org/wiki/%C3%89quation_cubique">Wikipedia</ulink> pour plus d'informations.</para>
5352
<term><anchor id="gel-function-EulersMethod"/>EulersMethod</term>
5354
<synopsis>EulersMethod (f,x0,y0,x1,n)</synopsis>
5355
<para>Utilise la méthode classique d'Euler pour résoudre numériquement y'=f(x,y) avec les valeurs initiales <varname>x0</varname>, <varname>y0</varname> allant vers <varname>x1</varname> avec <varname>n</varname> incréments, renvoie <varname>y</varname> en <varname>x1</varname>.</para>
5356
<para>Les systèmes peuvent être résolus en ayant uniquement <varname>y</varname> sous la forme d'un vecteur (colonne) partout. C'est-à-dire <varname>y0</varname> peut être un vecteur et dans ce cas <varname>f</varname> doit prendre un nombre <varname>x</varname> et un vecteur de la même taille comme deuxième argument et doit renvoyer un vecteur de la même taille.</para>
5357
<para>Consultez <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> ou <ulink url="http://fr.wikipedia.org/wiki/M%C3%A9thode_d%27Euler">Wikipedia</ulink> pour plus d'informations.</para>
5362
<term><anchor id="gel-function-EulersMethodFull"/>EulersMethodFull</term>
5364
<synopsis>EulersMethodFull (f,x0,y0,x1,n)</synopsis>
5365
<para>Utilise la méthode classique d'Euler pour résoudre numériquement y'=f(x,y) avec les valeurs initiales <varname>x0</varname>, <varname>y0</varname> allant vers <varname>x1</varname> avec <varname>n</varname> incréments, renvoie une matrice 2 par <userinput>n+1</userinput> contenant les valeurs de <varname>x</varname> et <varname>y</varname> (approprié pour un usage avec <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link>).</para>
5366
<para>Les systèmes peuvent être résolus en ayant uniquement <varname>y</varname> sous la forme d'un vecteur (colonne) partout. C'est-à-dire <varname>y0</varname> peut être un vecteur et dans ce cas <varname>f</varname> doit prendre un nombre <varname>x</varname> et un vecteur de la même taille comme deuxième argument et doit renvoyer un vecteur de la même taille.</para>
5367
<para>Consultez <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> ou <ulink url="http://fr.wikipedia.org/wiki/M%C3%A9thode_d%27Euler">Wikipedia</ulink> pour plus d'informations.</para>
5372
<term><anchor id="gel-function-FindRootBisection"/>FindRootBisection</term>
5374
<synopsis>FindRootBisection (f,a,b,TOL,N)</synopsis>
5375
<para>Find root of a function using the bisection method.
5376
<varname>a</varname> and <varname>b</varname> are the initial guess interval,
5377
<userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
5378
<varname>TOL</varname> is the desired tolerance and
5379
<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
5384
<term><anchor id="gel-function-FindRootFalsePosition"/>FindRootFalsePosition</term>
5386
<synopsis>FindRootFalsePosition (f,a,b,TOL,N)</synopsis>
5387
<para>Find root of a function using the method of false position.
5388
<varname>a</varname> and <varname>b</varname> are the initial guess interval,
5389
<userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
5390
<varname>TOL</varname> is the desired tolerance and
5391
<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
5396
<term><anchor id="gel-function-FindRootMullersMethod"/>FindRootMullersMethod</term>
5398
<synopsis>FindRootMullersMethod (f,x0,x1,x2,TOL,N)</synopsis>
5399
<para>Cherche la racine d'une fonction en utilisant la méthode de Muller. <varname>TOL</varname> est la tolérance permise et <varname>N</varname> est la limite du nombre d'itérations réalisées, 0 signifiant pas de limite. La fonction renvoie un vecteur <userinput>[succes,valeur,itération]</userinput> dans lequel <varname>succes</varname> est un booléen indiquant la réussite, <varname>valeur</varname> est la dernière valeur calculée et <varname>itération</varname> est le nombre d'itérations réalisées.</para>
5404
<term><anchor id="gel-function-FindRootSecant"/>FindRootSecant</term>
5406
<synopsis>FindRootSecant (f,a,b,TOL,N)</synopsis>
5407
<para>Find root of a function using the secant method.
5408
<varname>a</varname> and <varname>b</varname> are the initial guess interval,
5409
<userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
5410
<varname>TOL</varname> is the desired tolerance and
5411
<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a boolean indicating success, <varname>value</varname> is the last value computed, and <varname>iteration</varname> is the number of iterations done.</para>
5416
<term><anchor id="gel-function-PolynomialRoots"/>PolynomialRoots</term>
5418
<synopsis>PolynomialRoots (p)</synopsis>
5419
<para>Calcule les racines d'un polynôme (de degré 1 à 4) en utilisant une des formules adaptée à ce type de polynôme. Le polynôme doit être fourni sous la forme d'un vecteur de coefficients. Par exemple <userinput>4*x^3 + 2*x + 1</userinput> correspond au vecteur <userinput>[1,2,0,4]</userinput>. Renvoie un vecteur colonne contenant les solutions.</para>
5420
<para>La fonction appelle <link linkend="gel-function-QuadraticFormula">QuadraticFormula</link>, <link linkend="gel-function-CubicFormula">CubicFormula</link> et <link linkend="gel-function-QuarticFormula">QuarticFormula</link>.</para>
5425
<term><anchor id="gel-function-QuadraticFormula"/>QuadraticFormula</term>
5427
<synopsis>QuadraticFormula (p)</synopsis>
5428
<para>Calcule les racines d'un polynôme quadratique (de degré 2) en utilisant la formule quadratique. Le polynôme doit être fourni sous la forme d'un vecteur de coefficients. <userinput>3*x^2 + 2*x + 1</userinput> correspond au vecteur <userinput>[1,2,3]</userinput>. Renvoie un vecteur colonne contenant les deux solutions.</para>
5429
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/QuadraticFormula.html">Planetmath</ulink> ou <ulink url="http://mathworld.wolfram.com/QuadraticFormula.html">Mathworld</ulink> pour plus d'informations.</para>
5434
<term><anchor id="gel-function-QuarticFormula"/>QuarticFormula</term>
5436
<synopsis>QuarticFormula (p)</synopsis>
5437
<para>Calcule les racines d'un polynôme quartique (de degré 4) en utilisant la formule quartique. Le polynôme doit être fourni sous la forme d'un vecteur de coefficients. <userinput>5*x^4 + 2*x + 1</userinput> correspond au vecteur <userinput>[1,2,0,0,5]</userinput>. Renvoie un vecteur colonne contenant les quatre solutions.</para>
5438
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/QuarticFormula.html">Planetmath</ulink>, <ulink url="http://mathworld.wolfram.com/QuarticEquation.html">Mathworld</ulink> ou <ulink url="http://fr.wikipedia.org/wiki/%C3%89quation_quartique">Wikipedia</ulink> pour plus d'informations.</para>
5443
<term><anchor id="gel-function-RungeKutta"/>RungeKutta</term>
5445
<synopsis>RungeKutta (f,x0,y0,x1,n)</synopsis>
5446
<para>Utilise la méthode classique non adaptative de Runge-Kutta du quatrième ordre pour résoudre numériquement y'=f(x,y) avec les valeurs initiales <varname>x0</varname>, <varname>y0</varname> allant vers <varname>x1</varname> avec <varname>n</varname> incréments, renvoie <varname>y</varname> en <varname>x1</varname>.</para>
5447
<para>Les systèmes peuvent être résolus en ayant uniquement <varname>y</varname> sous la forme d'un vecteur (colonne) partout. C'est-à-dire <varname>y0</varname> peut être un vecteur et dans ce cas <varname>f</varname> doit prendre un nombre <varname>x</varname> et un vecteur de la même taille comme deuxième argument et doit renvoyer un vecteur de la même taille.</para>
5448
<para>Consultez <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> ou <ulink url="http://fr.wikipedia.org/wiki/M%C3%A9thodes_de_Runge-Kutta">Wikipedia</ulink> pour plus d'informations.</para>
5453
<term><anchor id="gel-function-RungeKuttaFull"/>RungeKuttaFull</term>
5455
<synopsis>RungeKuttaFull (f,x0,y0,x1,n)</synopsis>
5456
<para>Utilise la méthode classique non adaptative de Runge-Kutta du quatrième ordre pour résoudre numériquement y'=f(x,y) avec les valeurs initiales <varname>x0</varname>, <varname>y0</varname> allant vers <varname>x1</varname> avec <varname>n</varname> incréments, renvoie une matrice 2 par <userinput>n+1</userinput> contenant les valeurs de <varname>x</varname> et <varname>y</varname> (approprié pour un usage avec <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link>).</para>
5457
<para>Les systèmes peuvent être résolus en ayant uniquement <varname>y</varname> sous la forme d'un vecteur (colonne) partout. C'est-à-dire <varname>y0</varname> peut être un vecteur et dans ce cas <varname>f</varname> doit prendre un nombre <varname>x</varname> et un vecteur de la même taille comme deuxième argument et doit renvoyer un vecteur de la même taille.</para>
5458
<para>Consultez <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> ou <ulink url="http://fr.wikipedia.org/wiki/M%C3%A9thodes_de_Runge-Kutta">Wikipedia</ulink> pour plus d'informations.</para>
5466
<sect1 id="genius-gel-function-list-statistics">
5467
<title>Statistiques</title>
5470
<term><anchor id="gel-function-Average"/>Average</term>
5472
<synopsis>Average (m)</synopsis>
5473
<para>Alias : <function>average</function><function>Mean</function><function>mean</function></para>
5474
<para>Calcule la moyenne de toute une matrice.</para>
5475
<para>Consultez <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> pour plus d'informations.</para>
5480
<term><anchor id="gel-function-GaussDistribution"/>GaussDistribution</term>
5482
<synopsis>GaussDistribution (x,sigma)</synopsis>
5483
<para>Intégrale de la fonction de Gauss de 0 à <varname>x</varname> (aire sous la courbe normale).</para>
5484
<para>Consultez <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> pour plus d'informations.</para>
5489
<term><anchor id="gel-function-GaussFunction"/>GaussFunction</term>
5491
<synopsis>GaussFunction (x,sigma)</synopsis>
5492
<para>Fonction distribution de Gauss normalisée (courbe normale).</para>
5493
<para>Consultez <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> pour plus d'informations.</para>
5499
<term><anchor id="gel-function-Median"/>Median</term>
5501
<synopsis>Median (m)</synopsis>
5502
<para>Alias : <function>median</function></para>
5503
<para>Calcule la médiane de toute une matrice.</para>
5504
<para>Consultez <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> pour plus d'informations.</para>
5509
<term><anchor id="gel-function-PopulationStandardDeviation"/>PopulationStandardDeviation</term>
5511
<synopsis>PopulationStandardDeviation (m)</synopsis>
5512
<para>Alias : <function>stdevp</function></para>
5513
<para>Calcule l'écart type de la population de toute une matrice.</para>
5518
<term><anchor id="gel-function-RowAverage"/>RowAverage</term>
5520
<synopsis>RowAverage (m)</synopsis>
5521
<para>Alias : <function>RowMean</function></para>
5522
<para>Calcule la moyenne de chaque ligne d'une matrice.</para>
5523
<para>Consultez <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> pour plus d'informations.</para>
5528
<term><anchor id="gel-function-RowMedian"/>RowMedian</term>
5530
<synopsis>RowMedian (m)</synopsis>
5531
<para>Calcule la médiane de chaque ligne d'une matrice et renvoie un vecteur colonne.</para>
5532
<para>Consultez <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> pour plus d'informations.</para>
5537
<term><anchor id="gel-function-RowPopulationStandardDeviation"/>RowPopulationStandardDeviation</term>
5539
<synopsis>RowPopulationStandardDeviation (m)</synopsis>
5540
<para>Alias : <function>rowstdevp</function></para>
5541
<para>Calcule l'écart type de la population des lignes d'une matrice et renvoie un vecteur colonne.</para>
5546
<term><anchor id="gel-function-RowStandardDeviation"/>RowStandardDeviation</term>
5548
<synopsis>RowStandardDeviation (m)</synopsis>
5549
<para>Alias : <function>rowstdev</function></para>
5550
<para>Calcule l'écart type des lignes d'une matrice et renvoie un vecteur colonne.</para>
5555
<term><anchor id="gel-function-StandardDeviation"/>StandardDeviation</term>
5557
<synopsis>StandardDeviation (m)</synopsis>
5558
<para>Alias : <function>stdev</function></para>
5559
<para>Calcule l'écart type de toute une matrice.</para>
5566
<sect1 id="genius-gel-function-list-polynomials">
5567
<title>Polynômes</title>
5570
<term><anchor id="gel-function-AddPoly"/>AddPoly</term>
5572
<synopsis>AddPoly (p1,p2)</synopsis>
5573
<para>Ajoute deux polynômes (vecteurs).</para>
5578
<term><anchor id="gel-function-DividePoly"/>DividePoly</term>
5580
<synopsis>DividePoly (p,q,&r)</synopsis>
5581
<para>Divise deux polynômes (en tant que vecteurs) en utilisant la division longue. Renvoie le quotient des deux polynômes. L'argument optionnel <varname>r</varname> est utilisé pour renvoyer le reste. Le reste a un degré plus bas que <varname>q</varname>.</para>
5582
<para>Consultez <ulink url="http://planetmath.org/encyclopedia/PolynomialLongDivision.html">Planetmath</ulink> pour plus d'informations.</para>
5587
<term><anchor id="gel-function-IsPoly"/>IsPoly</term>
5589
<synopsis>IsPoly (p)</synopsis>
5590
<para>Vérifie qu'un vecteur est utilisable en tant que polynôme.</para>
5595
<term><anchor id="gel-function-MultiplyPoly"/>MultiplyPoly</term>
5597
<synopsis>MultiplyPoly (p1,p2)</synopsis>
5598
<para>Multiplie deux polynômes (comme vecteurs).</para>
5603
<term><anchor id="gel-function-NewtonsMethodPoly"/>NewtonsMethodPoly</term>
5605
<synopsis>NewtonsMethodPoly (poly,valeurinitiale,epsilon,maxn)</synopsis>
5606
<para>Utilise la méthode de Newton sur un polynôme pour essayer de trouver une racine, s'arrête après deux valeurs successives égales, à epsilon près, ou après maxn essais (renvoie alors <constant>null</constant>).</para>
5611
<term><anchor id="gel-function-Poly2ndDerivative"/>Poly2ndDerivative</term>
5613
<synopsis>Poly2ndDerivative (p)</synopsis>
5614
<para>Renvoie la dérivée seconde du polynôme (comme vecteur).</para>
5619
<term><anchor id="gel-function-PolyDerivative"/>PolyDerivative</term>
5621
<synopsis>PolyDerivative (p)</synopsis>
5622
<para>Prend la dérivée du polynôme (comme vecteur).</para>
5627
<term><anchor id="gel-function-PolyToFunction"/>PolyToFunction</term>
5629
<synopsis>PolyToFunction (p)</synopsis>
5630
<para>Fabrique une fonction à partir d'un polynôme (comme vecteur).</para>
5635
<term><anchor id="gel-function-PolyToString"/>PolyToString</term>
5637
<synopsis>PolyToString (p,var...)</synopsis>
5638
<para>Fabrique une chaîne à partir d'un polynôme (comme vecteur).</para>
5643
<term><anchor id="gel-function-SubtractPoly"/>SubtractPoly</term>
5645
<synopsis>SubtractPoly (p1,p2)</synopsis>
5646
<para>Soustrait deux polynômes (comme vecteur).</para>
5651
<term><anchor id="gel-function-TrimPoly"/>TrimPoly</term>
5653
<synopsis>TrimPoly (p)</synopsis>
5654
<para>Tronque les zéros d'un polynôme (défini comme vecteur).</para>
5661
<sect1 id="genius-gel-function-list-set-theory">
5662
<title>Théorie des ensembles</title>
5665
<term><anchor id="gel-function-Intersection"/>Intersection</term>
5667
<synopsis>Intersection (X,Y)</synopsis>
5668
<para>Renvoie l'intersection, selon la théorie des ensembles, de X et Y (X et Y sont des vecteurs supposés être des ensembles).</para>
5673
<term><anchor id="gel-function-IsIn"/>IsIn</term>
5675
<synopsis>IsIn (x,X)</synopsis>
5676
<para>Renvoie <constant>true</constant> (vrai) si l'élément x fait partie de l'ensemble X (où X est un vecteur supposé être un ensemble).</para>
5681
<term><anchor id="gel-function-IsSubset"/>IsSubset</term>
5683
<synopsis>IsSubset (X, Y)</synopsis>
5684
<para>Renvoie <constant>true</constant> (vrai) si X est un sous-ensemble de Y (X et Y sont des vecteurs supposés être des ensembles).</para>
5689
<term><anchor id="gel-function-MakeSet"/>MakeSet</term>
5691
<synopsis>MakeSet (X)</synopsis>
5692
<para>Renvoie un vecteur où chaque élément de X n'apparaît qu'une seule fois.</para>
5697
<term><anchor id="gel-function-SetMinus"/>SetMinus</term>
5699
<synopsis>SetMinus (X,Y)</synopsis>
5700
<para>Renvoie la différence X-Y selon la théorie des ensembles (X et Y sont des vecteurs supposés être des ensembles).</para>
5705
<term><anchor id="gel-function-Union"/>Union</term>
5707
<synopsis>Union (X,Y)</synopsis>
5708
<para>Renvoie l'union, selon la théorie des ensembles, de X et Y (X et Y sont des vecteurs supposés être des ensembles).</para>
5715
<sect1 id="genius-gel-function-list-commutative-algebra">
5716
<title>Commutative Algebra</title>
5719
<term><anchor id="gel-function-MacaulayBound"/>MacaulayBound</term>
5721
<synopsis>MacaulayBound (c,d)</synopsis>
5722
<para>For a Hilbert function that is c for degree d, given the Macaulay bound for the Hilbert function of degree d+1 (The c^<d> operator from Green's proof).</para>
5727
<term><anchor id="gel-function-MacaulayLowerOperator"/>MacaulayLowerOperator</term>
5729
<synopsis>MacaulayLowerOperator (c,d)</synopsis>
5730
<para>The c_<d> operator from Green's proof of Macaulay's Theorem.</para>
5735
<term><anchor id="gel-function-MacaulayRep"/>MacaulayRep</term>
5737
<synopsis>MacaulayRep (c,d)</synopsis>
5738
<para>Return the dth Macaulay representation of a positive integer c.</para>
5744
<sect1 id="genius-gel-function-list-miscellaneous">
5745
<title>Divers</title>
5748
<term><anchor id="gel-function-ASCIIToString"/>ASCIIToString</term>
5750
<synopsis>ASCIIToString (vec)</synopsis>
5751
<para>Convertit un vecteur de valeurs ASCII en chaîne.</para>
5756
<term><anchor id="gel-function-AlphabetToString"/>AlphabetToString</term>
5758
<synopsis>AlphabetToString (vec,alphabet)</synopsis>
5759
<para>Convertit un vecteur d'indices en chaîne de caractères. Les indices correspondent à la position dans la chaîne <literal>alphabet</literal>, en commençant à zéro.</para>
5764
<term><anchor id="gel-function-StringToASCII"/>StringToASCII</term>
5766
<synopsis>StringToASCII (chaîne)</synopsis>
5767
<para>Convertit une chaîne en vecteur de valeurs ASCII.</para>
5772
<term><anchor id="gel-function-StringToAlphabet"/>StringToAlphabet</term>
5774
<synopsis>StringToAlphabet (chaîne,alphabet)</synopsis>
5775
<para>Convertit une <literal>chaîne</literal> de caractères en un vecteur d'indices correspondant à la position dans la chaîne <literal>alphabet</literal> (en commençant à zéro). Lorsque le caractère n'est pas dans l'<literal>alphabet</literal>, l'indice est -1.</para>
5782
<sect1 id="genius-gel-function-list-symbolic">
5783
<title>Calcul symbolique</title>
5786
<term><anchor id="gel-function-SymbolicDerivative"/>SymbolicDerivative</term>
5788
<synopsis>SymbolicDerivative (f)</synopsis>
5789
<para>Essaie de dériver symboliquement la fonction f, où f est une fonction à une variable.</para>
5790
<para>Exemples : <screen><prompt>genius></prompt> <userinput>SymbolicDerivative(sin)</userinput>
5792
<prompt>genius></prompt> <userinput>SymbolicDerivative(`(x)=7*x^2)</userinput>
5799
<term><anchor id="gel-function-SymbolicDerivativeTry"/>SymbolicDerivativeTry</term>
5801
<synopsis>SymbolicDerivativeTry (f)</synopsis>
5802
<para>Essaie de dériver symboliquement la fonction f, où f est une fonction à une variable, renvoie <constant>null</constant> en cas d'échec mais reste silencieux (consultez <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>).</para>
5807
<term><anchor id="gel-function-SymbolicNthDerivative"/>SymbolicNthDerivative</term>
5809
<synopsis>SymbolicNthDerivative (f,n)</synopsis>
5810
<para>Essaie de dériver symboliquement une fonction n fois (consultez <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>).</para>
5815
<term><anchor id="gel-function-SymbolicNthDerivativeTry"/>SymbolicNthDerivativeTry</term>
5817
<synopsis>SymbolicNthDerivativeTry (f,n)</synopsis>
5818
<para>Essaie de dériver symboliquement une fonction n fois silencieusement et renvoie <constant>null</constant> en cas d'échec (consultez <link linkend="gel-function-SymbolicNthDerivative"><function>SymbolicNthDerivative</function></link>).</para>
5823
<term><anchor id="gel-function-SymbolicTaylorApproximationFunction"/>SymbolicTaylorApproximationFunction</term>
5825
<synopsis>SymbolicTaylorApproximationFunction (f,x0,n)</synopsis>
5826
<para>Attempt to construct the Taylor approximation function around x0 to the nth degree.
5827
(See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
5834
<sect1 id="genius-gel-function-list-plotting">
5835
<title>Tracé de graphiques</title>
5838
<term><anchor id="gel-function-ExportPlot"/>ExportPlot</term>
5840
<synopsis>ExportPlot (file,type)</synopsis>
5841
<synopsis>ExportPlot (file)</synopsis>
5843
Export the contents of the plotting window to a file.
5844
The type is a string that specifies the file type to
5845
use, "png", "eps", or "ps". If the type is not
5846
specified, then it is taken to be the extension, in
5847
which case the extension must be ".png", ".eps", or ".ps".
5850
Note that files are overwritten without asking.
5853
On successful export, true is returned. Otherwise
5854
error is printed and exception is raised.
5858
<screen><prompt>genius></prompt> <userinput>ExportPlot("file.png")</userinput>
5859
<prompt>genius></prompt> <userinput>ExportPlot("/directory/file","eps")</userinput>
5866
<term><anchor id="gel-function-LinePlot"/>LinePlot</term>
5868
<synopsis>LinePlot (fonc1,fonc2,fonc3,...)</synopsis>
5869
<synopsis>LinePlot (func1,func2,func3,x1,x2)</synopsis>
5870
<synopsis>LinePlot (fonc1,fonc2,fonc3,x1,x2,y1,y2)</synopsis>
5871
<synopsis>LinePlot (func1,func2,func3,[x1,x2])</synopsis>
5872
<synopsis>LinePlot (func1,func2,func3,[x1,x2,y1,y2])</synopsis>
5874
Plot a function (or several functions) with a line.
5875
First (up to 10) arguments are functions, then optionally
5876
you can specify the limits of the plotting window as
5877
<varname>x1</varname>, <varname>x2</varname>,
5878
<varname>y1</varname>, <varname>y2</varname>. If limits are not
5879
specified, then the currently set limits apply
5880
(See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>)
5881
If the y limits are not specified, then the functions are computed and then the maxima and minima
5884
<para>Le paramètre <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> conditionne l'affichage de la légende.</para>
5885
<para>Exemples : <screen><prompt>genius></prompt> <userinput>LinePlot(sin,cos)</userinput>
5886
<prompt>genius></prompt> <userinput>LinePlot(`(x)=x^2,-1,1,0,1)</userinput>
5892
<term><anchor id="gel-function-LinePlotClear"/>LinePlotClear</term>
5894
<synopsis>LinePlotClear ()</synopsis>
5895
<para>Affiche la fenêtre d'affichage du tracé et efface les courbes déjà tracées.</para>
5900
<term><anchor id="gel-function-LinePlotDrawLine"/>LinePlotDrawLine</term>
5902
<synopsis>LinePlotDrawLine (x1,y1,x2,y2,...)</synopsis>
5903
<synopsis>LinePlotDrawLine (v,...)</synopsis>
5905
Draw a line from <varname>x1</varname>,<varname>y1</varname> to
5906
<varname>x2</varname>,<varname>y2</varname>.
5907
<varname>x1</varname>,<varname>y1</varname>,
5908
<varname>x2</varname>,<varname>y2</varname> can be replaced by an
5909
<varname>n</varname> by 2 matrix for a longer polyline.
5911
<para>Des paramètres supplémentaires peuvent être ajoutés pour spécifier la couleur de la ligne, des flèches et la zone de tracé. Vous pouvez faire cela en ajoutant une chaîne <userinput>"color"</userinput>, <userinput>"thickness"</userinput>, <userinput>"window"</userinput> ou <userinput>"arrow"</userinput> et ensuite, respectivement, la chaîne de couleur (en anglais), l'épaisseur sous la forme d'un entier, la fenêtre sous la forme d'un vecteur à 4 éléments et pour la flèche soit <userinput>"origin"</userinput>, <userinput>"end"</userinput>, <userinput>"both"</userinput> ou <userinput>"none"</userinput>. Pour <userinput>"window"</userinput>, vous pouvez indiquer <userinput>"fit"</userinput> plutôt qu'un vecteur et dans ce cas, l'intervalle x est défini de manière précise et l'intervalle y est défini avec une bordure de cinq pour cent autour de la ligne. Finalement, la légende peut être spécifiée en ajoutant <userinput>"legend"</userinput> et la chaîne contenant la légende.</para>
5912
<para>Exemples : <screen><prompt>genius></prompt> <userinput>LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)</userinput>
5913
<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,-1;-1,-1])</userinput>
5914
<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,1],"arrow","end")</userinput>
5915
<prompt>genius></prompt> <userinput>LinePlotDrawLine(EulersMethodFull(`(x,y)=y,0,3,100),"color","blue","legend","La solution")</userinput>
5921
<term><anchor id="gel-function-LinePlotParametric"/>LinePlotParametric</term>
5923
<synopsis>LinePlotParametric (xfonc,yfonc,...)</synopsis>
5924
<synopsis>LinePlotParametric (xfonc,yfonc,t1,t2,tinc)</synopsis>
5925
<synopsis>LinePlotParametric (xfonc,yfonc,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
5926
<synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,[x1,x2,y1,y2])</synopsis>
5927
<synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,"fit")</synopsis>
5928
<para>Trace la courbe d'une fonction paramétrique. En premier viennent les fonctions de <varname>x</varname> et <varname>y</varname> puis, en option, les limites de <varname>t</varname> sous la forme <userinput>t1,t2,tinc</userinput> puis, en option, les limites de la fenêtre de tracé sous la forme <userinput>x1,x2,y1,y2</userinput>.</para>
5930
If x and y limits are not
5931
specified, then the currently set limits apply
5932
(See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
5933
If instead the string "fit" is given for the x and y limits, then the limits are the maximum extent of
5936
<para>Le paramètre <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> conditionne l'affichage de la légende.</para>
5941
<term><anchor id="gel-function-LinePlotCParametric"/>LinePlotCParametric</term>
5943
<synopsis>LinePlotCParametric (fonc,...)</synopsis>
5944
<synopsis>LinePlotCParametric (fonc,t1,t2,tinc)</synopsis>
5945
<synopsis>LinePlotCParametric (fonc,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
5946
<para>Trace la courbe d'une fonction paramétrique à valeurs complexes. En premier vient la fonction qui renvoie <computeroutput>x+iy</computeroutput> puis, en option, les limites de <varname>t</varname> sous la forme <userinput>t1,t2,tinc</userinput> puis, en option, les limites de la fenêtre de tracé sous la forme <userinput>x1,x2,y1,y2</userinput>.</para>
5949
specified, then the currently set limits apply
5950
(See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
5951
If instead the string "fit" is given for the x and y limits, then the limits are the maximum extent of
5954
<para>Le paramètre <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> conditionne l'affichage de la légende.</para>
5959
<term><anchor id="gel-function-SlopefieldClearSolutions"/>SlopefieldClearSolutions</term>
5961
<synopsis>SlopefieldClearSolutions ()</synopsis>
5962
<para>Efface les solutions tracées par la fonction <link linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>.</para>
5967
<term><anchor id="gel-function-SlopefieldDrawSolution"/>SlopefieldDrawSolution</term>
5969
<synopsis>SlopefieldDrawSolution (x, y, dx)</synopsis>
5970
<para>Lorsqu'un tracé de champ de directions est actif, dessine une solution avec les conditions initiales spécifiées. La méthode standard de Runge-Kutta est utilisée avec l'incrément <varname>dx</varname>. Les solutions restent affichées sur le graphe jusqu'à ce qu'un tracé différent soit affiché ou jusqu'à ce que vous appeliez la fonction <link linkend="gel-function-SlopefieldClearSolutions"><function>SlopefieldClearSolutions</function></link>. Vous pouvez aussi utiliser l'interface graphique pour tracer des solutions et indiquer des conditions initiales spécifiques avec la souris.</para>
5975
<term><anchor id="gel-function-SlopefieldPlot"/>SlopefieldPlot</term>
5977
<synopsis>SlopefieldPlot (fonc)</synopsis>
5978
<synopsis>SlopefieldPlot (fonc,x1,x2,y1,y2)</synopsis>
5979
<para>Trace un champ de directions. La fonction <varname>fonc</varname> doit accepter deux nombres réels <varname>x</varname> et <varname>y</varname> ou seulement un nombre complexe. En option, vous pouvez indiquer les limites de la fenêtre de tracé comme <varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>. Si les limites ne sont pas indiquées alors les limites actuellement utilisées s'appliquent (consultez <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
5980
<para>Le paramètre <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> conditionne l'affichage de la légende.</para>
5981
<para>Exemples : <screen><prompt>genius></prompt> <userinput>Slopefield(`(x,y)=sin(x-y),-5,5,-5,5)</userinput>
5987
<term><anchor id="gel-function-SurfacePlot"/>SurfacePlot</term>
5989
<synopsis>SurfacePlot (fonc)</synopsis>
5990
<synopsis>SurfacePlot (fonc,x1,x2,y1,y2,z1,z2)</synopsis>
5991
<synopsis>SurfacePlot (func,x1,x2,y1,y2)</synopsis>
5992
<synopsis>SurfacePlot (func,[x1,x2,y1,y2,z1,z2])</synopsis>
5993
<synopsis>SurfacePlot (func,[x1,x2,y1,y2])</synopsis>
5994
<para>Trace une surface, dont la fonction prend comme arguments deux nombres ou bien un nombre complexe. En premier vient la fonction puis en option les limites sous la forme <varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>, <varname>z1</varname>, <varname>z2</varname>. Si les limites ne sont pas indiquées alors les limites actuellement utilisées s'appliquent (consultez <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Genius ne peut tracer qu'une seule surface à la fois.</para>
5996
If the z limits are not specified then the maxima and minima of the function are used.
5998
<para>Exemples : <screen><prompt>genius></prompt> <userinput>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</userinput>
5999
<prompt>genius></prompt> <userinput>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</userinput>
6000
<prompt>genius></prompt> <userinput>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</userinput>
6006
<term><anchor id="gel-function-SurfacePlotData"/>SurfacePlotData</term>
6008
<synopsis>SurfacePlotData (data)</synopsis>
6009
<synopsis>SurfacePlotData (data,label)</synopsis>
6010
<synopsis>SurfacePlotData (data,x1,x2,y1,y2,z1,z2)</synopsis>
6011
<synopsis>SurfacePlotData (data,label,x1,x2,y1,y2,z1,z2)</synopsis>
6012
<synopsis>SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])</synopsis>
6013
<synopsis>SurfacePlotData (data,label,[x1,x2,y1,y2,z1,z2])</synopsis>
6015
Plot a surface from data. The data is an n by 3 matrix whose
6016
rows are the x, y and z coordinates. The data can also be
6017
simply a vector whose length is a multiple of 3 and so
6018
contains the tripples of x, y, z. The data should contain at
6022
Optionally we can give the label and also optionally the
6023
limits. If limits are not given, they are computed from
6024
the data, <link linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>
6025
is not used, if you want to use it, pass it in explicitly.
6026
If label is not given then empty label is used.
6030
<screen><prompt>genius></prompt> <userinput>SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])</userinput>
6031
<prompt>genius></prompt> <userinput>SurfacePlotData(data,"My data")</userinput>
6032
<prompt>genius></prompt> <userinput>SurfacePlotData(data,-1,1,-1,1,0,10)</userinput>
6033
<prompt>genius></prompt> <userinput>SurfacePlotData(data,SurfacePlotWindow)</userinput>
6037
Here's an example of how to plot in polar coordinates,
6038
in particular how to plot the function
6039
<userinput>-r^2 * theta</userinput>:
6040
<screen><prompt>genius></prompt> <userinput>d:=null; for r=0 to 1 by 0.1 do for theta=0 to 2*pi by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];</userinput>
6041
<prompt>genius></prompt> <userinput>SurfacePlotData(d)</userinput>
6048
<term><anchor id="gel-function-SurfacePlotDataGrid"/>SurfacePlotDataGrid</term>
6050
<synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2])</synopsis>
6051
<synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])</synopsis>
6052
<synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2],label)</synopsis>
6053
<synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],label)</synopsis>
6055
Plot a surface from regular rectangular data.
6056
The data is given in a n by m matrix where the rows are the
6057
x coordinate and the columns are the y coordinate.
6058
The x coordinate is divided into equal n-1 subintervals
6059
and y coordinate is divided into equal m-1 subintervals.
6060
The limits <varname>x1</varname> and <varname>x2</varname>
6061
give the interval on the x-axis that we use, and
6062
the limits <varname>y1</varname> and <varname>y2</varname>
6063
give the interval on the y-axis that we use.
6064
If the limits <varname>z1</varname> and <varname>z2</varname>
6065
are not given they are computed from the data (to be
6066
the extreme values from the data).
6069
Optionally we can give the label, if label is not given then
6070
empty label is used.
6074
<screen><prompt>genius></prompt> <userinput>SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])</userinput>
6075
<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(data,[-1,1,-1,1],"My data")</userinput>
6076
<prompt>genius></prompt> <userinput>d:=null; for i=1 to 20 do for j=1 to 10 d@(i,j) = (0.1*i-1)^2-(0.1*j)^2;</userinput>
6077
<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(d,[-1,1,0,1],"half a saddle")</userinput>
6084
<term><anchor id="gel-function-VectorfieldClearSolutions"/>VectorfieldClearSolutions</term>
6086
<synopsis>VectorfieldClearSolutions ()</synopsis>
6087
<para>Efface les solutions dessinées par la fonction <link linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>.</para>
6092
<term><anchor id="gel-function-VectorfieldDrawSolution"/>VectorfieldDrawSolution</term>
6094
<synopsis>VectorfieldDrawSolution (x, y, dt, tlong)</synopsis>
6095
<para>Lorsqu'un tracé de champ de vecteurs est actif, dessine une solution avec les conditions initiales spécifiées. La méthode standard de Runge-Kutta est utilisée avec l'incrément <varname>dt</varname> sur un intervalle de temps <varname>tlong</varname>. Les solutions restent affichées sur le graphe jusqu'à ce qu'un tracé différent soit affiché ou jusqu'à ce que vous appeliez la fonction <link linkend="gel-function-SlopefieldClearSolutions"><function>VectorfieldClearSolutions</function></link>. Vous pouvez aussi utiliser l'interface graphique pour tracer des solutions et indiquer des conditions initiales spécifiques avec la souris.</para>
6100
<term><anchor id="gel-function-VectorfieldPlot"/>VectorfieldPlot</term>
6102
<synopsis>VectorfieldPlot (foncx, foncy)</synopsis>
6103
<synopsis>VectorfieldPlot (foncx, foncy, x1, x2, y1, y2)</synopsis>
6104
<para>Trace un champ de vecteurs à deux dimensions. La fonction <varname>funcx</varname> doit être la dérivée dx/dt du champ de vecteurs et la fonction <varname>funcy</varname> la dérivée dy/dt du champ de vecteurs. Les fonctions doivent accepter deux nombres réels <varname>x</varname> et <varname>y</varname> ou seulement un nombre complexe. Lorsque le paramètre <link linkend="gel-function-VectorfieldNormalized"><function>VectorfieldNormalized</function></link> est <constant>true</constant> (vrai) alors l'amplitude des vecteurs est normalisée. Seule la direction et non pas l'amplitude est tracée.</para>
6105
<para>Vous pouvez spécifier, en option, les limites de la fenêtre de tracé sous la forme <varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>, <varname>z1</varname>, <varname>z2</varname>. Si les limites ne sont pas indiquées alors les limites actuellement utilisées s'appliquent (consultez <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
6106
<para>Le paramètre <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> conditionne l'affichage de la légende.</para>
6107
<para>Exemples : <screen><prompt>genius></prompt> <userinput>VectorfieldPlot(`(x,y)=x^2-y, `(x,y)=y^2-x, -1, 1, -1, 1)</userinput>
6117
<!-- ============= GEL examples ============================= -->
6118
<chapter id="genius-gel-example-programs">
6119
<title>Exemple de programmes en GEL</title>
6121
<para>Voici une fonction qui calcule des factorielles : <programlisting><![CDATA[function f(x) = if x <= 1 then 1 else (f(x-1)*x)
6122
]]></programlisting></para>
6123
<para>Avec des indentations, cela devient : <programlisting><![CDATA[function f(x) = (
6129
]]></programlisting></para>
6130
<para>C'est un portage direct de la fonction factorielle de la page de manuel de <application>bc</application>. La syntaxe semble similaire à celle de <application>bc</application> mais différente par le fait que dans GEL, la dernière expression est celle qui est renvoyée. En utilisant la fonction <literal>return</literal> à la place, cela donnerait : <programlisting><![CDATA[function f(x) = (
6131
if (x <= 1) then return (1);
6134
]]></programlisting></para>
6136
<para>La façon, de loin la plus facile, de définir une fonction factorielle serait d'utiliser la boucle de produit de la manière suivante. Ce n'est pas seulement la plus courte et la plus rapide mais aussi probablement la version la plus lisible. <programlisting>function f(x) = prod k=1 to x do k
6137
</programlisting></para>
6139
<para>Voici un exemple plus conséquent qui redéfinit essentiellement la fonction interne <function>ref</function> pour calculer la matrice échelonnée en lignes d'une matrice. La fonction <function>ref</function> est intégrée et beaucoup plus rapide mais cet exemple démontre certaines des fonctionnalités plus complexes de GEL. <programlisting><![CDATA[# Calculate the row-echelon form of a matrix
6140
function MyOwnREF(m) = (
6141
if not IsMatrix(m) or not IsValueOnly(m) then
6142
(error("MyOwnREF: argument not a value only matrix");bailout);
6143
s := min(rows(m), columns(m));
6146
while d <= s and i <= columns(m) do (
6148
# This just makes the anchor element non-zero if at
6150
if m@(d,i) == 0 then (
6152
while j <= rows(m) do (
6153
if m@(j,i) == 0 then
6162
if m@(d,i) == 0 then
6165
# Here comes the actual zeroing of all but the anchor
6168
while j <= rows(m)) do (
6169
if m@(j,i) != 0 then (
6170
m@(j,) := m@(j,)-(m@(j,i)/m@(d,i))*m@(d,)
6174
m@(d,) := m@(d,) * (1/m@(d,i));
6180
]]></programlisting></para>
6184
<!-- ============= Customization ============================ -->
6185
<chapter id="genius-prefs">
6186
<title>Paramètres</title>
6188
<para>Pour configurer l'<application>Outil de maths Genius</application>, choisissez <menuchoice><guimenu>Paramètres</guimenu><guimenuitem>Préférences</guimenuitem></menuchoice>. Il y a plusieurs paramètres de base fournis par le calculateur en plus de ceux fournis par la bibliothèque standard. Ils contrôlent le comportement du calculateur.</para>
6191
<title>Modifications des paramètres avec GEL</title>
6192
<para>Beaucoup de paramètres dans Genius ne sont simplement que des variables globales qui peuvent être évaluées et auxquelles on peut attribuer des valeurs de la même manière que pour des variables normales. Consultez <xref linkend="genius-gel-variables"/> à propos de l'évaluation et <xref linkend="genius-gel-function-parameters"/> pour une liste des réglages qui peuvent être modifiés de cette façon.</para>
6193
<para>Par exemple, vous pouvez paramétrer le nombre maximum de chiffres pour l'affichage d'un résultat à 12 en saisissant : <programlisting>MaxDigits = 12
6194
</programlisting></para>
6197
<sect1 id="genius-prefs-output">
6198
<title>Sortie</title>
6202
<guilabel>Nombre maximum de chiffres à afficher</guilabel>
6205
<para>Le nombre maximum de chiffres dans un résultat (<function>MaxDigits</function>)</para>
6210
<guilabel>Résultats en nombres flottants</guilabel>
6213
<para>Si les résultats doivent être toujours affichés sous la forme de nombres flottants (<function>ResultsAsFloats</function>)</para>
6218
<guilabel>Nombres flottants en notation scientifique</guilabel>
6221
<para>Si les nombres flottants doivent être affichés en notation scientifique (<function>ScientificNotation</function>)</para>
6226
<guilabel>Toujours afficher les expressions complètes</guilabel>
6229
<para>Si l'expression complète doit être affichée pour les valeurs renvoyées non numériques (plus longues qu'une ligne) (<function>FullExpressions</function>)</para>
6235
<guilabel>Utiliser les fractions mixtes</guilabel>
6238
<para>Si les fractions doivent être affichées comme des fractions mixtes telles que « 1 1/3 » plutôt que « 4/3 ». (<function>MixedFractions</function>)</para>
6244
<guilabel>Afficher 0.0 lorsqu'un nombre flottant est inférieur à 10^-x (0=ne jamais arrondir)</guilabel>
6247
<para>Comment arrondir la sortie. Mais seulement lorsque d'autres nombres autour sont grands. Consultez la documentation du paramètre <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
6253
<guilabel>Arrondir les nombres uniquement si un autre nombre est plus grand que 10^-x</guilabel>
6256
<para>Quand arrondir la sortie. C'est configuré par le paramètre <function>OutputchopWhenexponent</function>. Consultez la documentation du paramètre <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponenthopwhenexponent</function></link>.</para>
6262
<guilabel>Se souvenir des paramètres de sortie d'une session à l'autre</guilabel>
6265
<para>Si les réglages concernant la sortie dans le cadre <guilabel>Options pour la sortie des nombres/expressions</guilabel> doivent être conservés pour la session suivante. Ne s'applique pas au cadre <guilabel>Options pour la sortie erreurs/information</guilabel>.</para>
6266
<para>Si ce n'est pas coché, les réglages précédemment enregistrés ou ceux par défaut sont utilisés à chaque lancement de Genius. Notez que les paramètres sont enregistrés à la fin de la session donc si vous souhaitez modifier la valeur par défaut, cochez cette case, redémarrez Genius puis décochez-la à nouveau.</para>
6272
<guilabel>Afficher les erreurs dans une boîte de dialogue</guilabel>
6275
<para>If set the errors will be displayed in a separate dialog, if
6276
unset the errors will be printed on the console.</para>
6282
<guilabel>Afficher les messages d'informations dans une boîte de dialogue</guilabel>
6285
<para>If set the information messages will be displayed in a separate
6286
dialog, if unset the information messages will be printed on the
6293
<guilabel>Nombre maximum d'erreurs à afficher</guilabel>
6296
<para>Le nombre maximum d'erreurs à afficher pour une évaluation (<function>MaxErrors</function>). Si vous paramétrez à 0 alors toutes les erreurs sont toujours renvoyées. Habituellement si certaines boucles provoquent beaucoup d'erreurs alors il est probable que vous ne serez pas capable de donner un sens à plus de quelques unes d'entre elles. Ainsi voir une longue liste d'erreurs n'apporte pas généralement grand chose.</para>
6301
<para>En plus de ces préférences, il existe d'autres préférences qui ne peuvent être modifiées qu'en les paramétrant dans l'espace de la console. Pour celles qui peuvent affecter la sortie, consultez <xref linkend="genius-gel-function-parameters"/>.</para>
6306
<function>IntegerOutputBase</function>
6309
<para>La base utilisée pour afficher les entiers.</para>
6315
<function>OutputStyle</function>
6318
<para>A string, can be <literal>"normal"</literal>,
6319
<literal>"latex"</literal>, <literal>"mathml"</literal> or
6320
<literal>"troff"</literal> and it will affect how matrices (and perhaps other
6321
stuff) is printed, useful for pasting into documents. Normal style is the
6322
default human readable printing style of <application>Genius Mathematics Tool</application>. The other styles are for
6323
typsetting in LaTeX, MathML (XML), or in Troff.</para>
6329
<sect1 id="genius-prefs-precision">
6330
<title>Précision</title>
6334
<guilabel>Précision des nombres en virgule flottante</guilabel>
6337
<para>La précision des nombres en virgule flottante en bits (<function>FloatPrecision</function>). Notez que lorsque vous modifiez ce paramètre, seules les nouvelles quantités calculées sont affectées. Les anciennes valeurs enregistrées dans des variables restent toujours avec la même précision et si vous voulez qu'elles soient plus précises, vous devez les recalculer. Les exceptions sont les constantes du système telles que <function>pi</function> ou <function>e</function>.</para>
6343
<guilabel>Se souvenir de la précision choisie d'une session à l'autre</guilabel>
6346
<para>Si le réglage de la précision doit être conservé pour la prochaine session. Si ce n'est pas coché, le paramétrage précédemment enregistré ou celui par défaut est utilisé à chaque lancement de Genius. Notez que les paramètres sont enregistrés à la fin de la session donc si vous souhaitez modifier la valeur par défaut, cochez cette case, redémarrez genius puis décochez-la à nouveau.</para>
6352
<sect1 id="genius-prefs-terminal">
6353
<title>Terminal</title>
6355
<para>Le terminal se réfère à la console dans la zone de travail.</para>
6360
<guilabel>Lignes d'historique</guilabel>
6363
<para>Nombre de lignes d'historique dans le terminal.</para>
6368
<guilabel>Police</guilabel>
6371
<para>La police à utiliser dans le terminal.</para>
6376
<guilabel>Noir sur blanc</guilabel>
6379
<para>Si vous utilisez du noir sur blanc dans le terminal.</para>
6384
<guilabel>Curseur clignotant</guilabel>
6387
<para>Si le curseur dans le terminal doit clignoter lorsque le terminal possède le focus. Cela peut être parfois ennuyant et génère du trafic inutile si vous utilisez Genius à distance.</para>
6393
<sect1 id="genius-prefs-memory">
6394
<title>Mémoire</title>
6398
<guilabel>Nombre maximum de nœuds à allouer</guilabel>
6401
<para>De manière interne, toutes les données sont placées dans des nœuds en mémoire. Ce paramètre fournit une limite sur le nombre maximum de nœuds à allouer pour les calculs. Cela évite le problème d'une saturation de mémoire si vous faites quelque chose par erreur qui utilise trop de mémoire, telle qu'un calcul récursif sans fin. Cela pourrait ralentir votre ordinateur et rendre difficile même l'interruption du programme.</para>
6402
<para>Une fois que la limite est atteinte, l'<application>Outil de maths Genius</application> vous demande si vous voulez interrompre le calcul ou si vous souhaitez continuer. Si vous continuez, aucune limite n'est appliquée et il est possible de saturer la mémoire de l'ordinateur. La limite s'applique à nouveau la prochaine fois que vous exécuterez un programme ou une expression dans la console indépendamment de votre réponse précédente.</para>
6403
<para>Régler la limite à zéro signifie qu'il n'y a aucune limite sur la quantité de mémoire utilisable par Genius.</para>
6412
<!-- ============= About ====================================== -->
6413
<chapter id="genius-about">
6414
<title>À propos de l'<application>Outil de maths Genius</application></title>
6416
<para>L'<application>Outil de maths Genius</application> a été écrit par Jiří (George) Lebl (<email>jirka@5z.com</email>). L'historique de l'<application>Outil de maths Genius</application> commence à la fin de l'année 1997. C'était la première calculatrice pour GNOME, mais il a grossi au point de devenir bien plus qu'une simple calculatrice de bureau. Pour trouver plus d'informations à propos de l'<application>Outil de maths Genius</application>, visitez la <ulink url="http://www.jirka.org/genius.html" type="http">page Web de Genius</ulink>.</para>
6417
<para>Pour rapporter une anomalie ou émettre une suggestion concernant cette application ou ce manuel, envoyez un courriel à l'auteur ou à la liste de discussion (voir site Web).</para>
6419
<para> This program is distributed under the terms of the GNU
6420
General Public license as published by the Free Software
6421
Foundation; either version 3 of the License, or (at your option)
6422
any later version. A copy of this license can be found at this
6423
<ulink url="ghelp:gpl" type="help">link</ulink>, or in the file
6424
COPYING included with the source code of this program. </para>
6426
<para>Jiří Lebl was during various parts of the development
6427
partially supported for the work by NSF grant DMS 0900885,
6428
the University of Illinois at Urbana-Champaign,
6429
the University of California at San Diego, and
6430
the University of Wisconsin-Madison. The software has
6431
been used for both teaching and research.</para>