| [Top] | [Table des matières] | [Index] | [ ? ] |
TRIP est un programme de manipulation algébrique orienté vers les calculs de méthodes de perturbations et plus particulièrement vers la mécanique celeste.
Auteurs :
Avec des contributions de E. Paviot, F. Thire, D. Acheroff, M. To, A. Ceyrac, G. Rouault, V. Kelsch.
Ce logiciel inclut une librairie développée par la fondation NetBSD et ses contributeurs.
Ce logiciel inclut les librairies LAPACK et 'SCSCP C Library'.
Ce logiciel est lié dynamiquement aux librairies LTDL, GMP, MPFR et MPC. Le code source de ces librairies peut être téléchargé depuis les sites internet indiqués dans le chapitre References (voir la section References).
TRIP version 1.1.18
Copyright ©TRIP 1988-2011 J.Laskar/ASD/IMCCE/CNRS
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Pour exécuter TRIP, il faut
Vous verrez à l'écran :
|
TRIP est prêt à recevoir vos ordres. TRIP dispose d'un interpréteur sensible aux minuscules et majuscules.
Pour calculer S=(X+Y)^2, il suffit de faire :
|
Les touches de curseur permettent de modifier la ligne courante ou de rappeler les commandes précédentes.
Pour quitter TRIP, il suffit de taper quit ou exit.
Les mots réservés du langage TRIP sont spécifiés dans les annexes. Ces mots se répartissent en trois catégories :
Au démarrage de TRIP ou lors de l'exécution des commandes reset ou @@ , celui-ci lit les fichiers suivants dans l'ordre indiqué :
'$TRIPDIR/etc/trip.ini' | où $TRIPDIR est le répertoire où est installé TRIP. |
'$HOME/.trip' | où $HOME est le répertoire racine de l'utilisateur. |
'trip.ini' | dans le répertoire courant. |
Ces fichiers peuvent contenir n'importe quelles instructions.
Recommendations :
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 2.1 expression | ||
| 2.2 identificateur |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Une expression peut faire intervenir tous les opérateurs définis sur les identificateurs, ainsi que des appels de fonctions ou de commandes.
Une expression doit se terminer par le caractère ; ou $ . Le ; entraine le calcul et l'impression du resultat, alors que le caractère $ n'effectue que le calcul.
Plusieurs instructions séparées par ; ou $ peuvent se trouver à la suite. Elle seront effectuées en séquence.
Un commentaire sur une ou plusieurs lignes est défini par /* .... */, comme dans le langage C. Un commentaire de fin de lignes est défini par les caractères // , comme dans le langage C++.
Exemple :
> s=1+t; /* calcule 1+t et affiche le resultat */
s(t) = 1 + 1*t
> s1=(1+x+y)^2$ /*calcule mais n'affiche pas le resultat. */
> s1; // affiche le contenu de s1
s1(x,y) =
1
+ 2*y
+ 1*y**2
+ 2*x
+ 2*x*y
+ 1*x**2
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Un identificateur doit commencer par une lettre et se composer de lettres (majuscules ou minuscules) et/ou de chiffres (09), ainsi que du caractere _ ou ' . Par défaut, un identificateur est global, c'est-à-dire qu'il est visible depuis n'importe quelle instruction. Un identificateur peut être local à une macro, c'est-à-dire qu'il est visible uniquement depuis cette macro et sera détruit à chaque fois que l'exécution de cette macro se terminera. Un mot réservé de TRIP ne peut pas être utilisé comme identificateur. Un identificateur peut être de type :
Exemple : > ch="file1"$ > s=1+x$ > dim t[1:2]; > z=1+2*i; z = (1+i*2) > bilan; ch CHAINE s SERIE t TAB x VAR |
| 2.2.1 Visibilite | ||
| 2.3 serie |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
private <identificateur> x ,...;
Cette commande indique que les identificateurs suivants seront locaux à une macro ou à une boucle (for, while, sum).
Les identificateurs locaux sont détruits à la fin de l'exécution d'une macro ou à la fin de chaque itération de la boucle (for, while, sum).
Si un identificateur local porte le même nom qu'un identificateur global, l'identificateur local sera alors utilisé automatiquement. Dans ce cas, on dit que l'identificateur local cache l'identifiateur global.
Exemple :
> macro least_ab[TX,TY,a,b] {
private S, SY, SXY, SXX, DEL; /* identificateurs locaux */
S=size(TX)$
SX=sum(TX)$
SY=sum(TY)$
SXY=sum(TX*TY)$
SXX=sum(TX*TX)$
DEL=S*SXX-SX*SX$
a = (S*SXY-SX*SY)/DEL$
b = (SXX*SY-SX*SXY)/DEL$
};
tx=1,10;
ty=3*tx;
%least_ab[tx,ty,[a],[b]];
bilan;
> tx Tableau de reels : nb reels =10
> ty Tableau de reels : nb reels =10
> > SX CONST
a CONST
b CONST
tx TABNUMREEL
ty TABNUMREEL
>
>
macro detval[T]
{
private T2; /* identificateurs locaux */
dim T2[1:3,1:3]$
T2[:,::]=0$
T2[1,1]=T**2$
T2[2,2]=1-T$
T2[3,3]=T$
return det(T2);
};
> %detval[5];
-500
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Une série est un polynôme de degré n (n étant un entier). Elle est donc fonction d'une ou plusieurs variables.
Exemple : > s=1+x; s(x) = 1 + 1*x > s2=(1+x+y); s2(x,y) = 1 + 1*y + 1*x > bilan; s SERIE s2 SERIE x VAR y VAR |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Une constante est un nombre entier, réel, complexe, rationnel ou un intervalle .
En mode numérique rationnel (_modenum = NUMRAT ou _modenum = NUMRATMP), la saisie de 0.5 crée un réel et non le rationnel 1/2.
Exemple :
>x = 2;
2
>y = 2.25;
9/4
>z = 1+2*i;
(1+i*2)
>bilan;
x CONST
y CONST
z CONST
> _modenum=NUMDBLINT;
_modenum = NUMDBLINT
> s = <1|2>;
s = [+1.00000000000000E+00,+2.00000000000000E+00]
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
C'est une suite de caractères entre " ". Elle est utilisée pour définir le _path, donner des commentaires, définir des noms de fichiers, etc...
Elles ne sont pas limitées en taille. Par contre, pour le _path, sa longueur est tronquée à 256 (valeur dépendant du système).
Pour produire un guillemet (") dans une chaine, il suffit de le doubler.
Exemple : >vi "toto"; > ch = "file" + "1"; ch = "file1" > sch = "../" + ch; sch = "../file1" > sch1 = sch + "." + str(12); sch1 = "../file1.12" > ch3="nomsuivide""fin"; ch3 = "nomsuivide"fin" |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<nom> = <réel> ;
Un nombre réel est toujours affiché ou saisi en base 10. Le symbole d, e, E ou D est l'opérateur d'exponentiation.
Exemple : > a=2.125E6; a = 2125000 > q=3D2; q = 300 > r=0.123554545; r = 0.123554545 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<nom> = <réel> + i * <réel> ;
Les nombres complexes sont reconnus. Il suffit de les écrire avec un i minuscule ou avec un I majuscule.
Exemple : > x=2+i*3; x = (2+i*3) > y=-5+4*i; y = (-5+i*4) |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
C'est une chaine de caractères . Cette chaine doit etre encadrée par des " " si la chaine contient les caractères espaces " [ ] { } ( ) ou plusieurs points. Un nom de fichier peut être le contenu d'un identificateur de type chaine de caractères.
Ces noms de fichiers sont toujours relatifs à la variable globale _path, excepté ceux construits à l'aide de la fonction file_fullname (voir la section file_fullname).
Exemple :
> read("fichier.1.dat",T);
> s="ell."+str(10)+".asc";
s = "ell.10.asc"
> read(s,T);
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
C'est un objet désignant un fichier ouvert en lecture ou en écriture.
Exemple :
> f = file_open("fichier.1.dat",read);
> file_close(f);
|
La description des fonctions, procédures et variables utilisent les types suivants :
<identificateur> | identificateur |
<entier> | nombre entier naturel ou une opération retournant un entier |
<réel> | nombre réel ou une opération retournant un réel |
<complexe> | nombre complexe ou une opération retournant un complexe |
<variable> | variable |
<constante> | une opération retournant un nombre entier, réel ou complexe |
<série> | série |
<opération> | une opération retournant une série ou un nombre (une constante) |
<tableau> | tableau de série ou de constantes |
<tableau de variables> | tableau de variables |
<tab. num.> | tableau numérique de réels ou de complexes |
<tab. réel> | tableau numérique de réels |
<tab. complexe> | tableau numérique de complexes |
<tableau de tab. réel> | tableau de tableaux numériques de réels |
<tableau de tab. complexe> | tableau de tableaux numériques de complexes |
<tableau de tab. num.> | tableau de tableaux numériques |
<(tableau de) tab. réel> | (tableau de) tableau numérique de réels |
<(tableau de) tab. num.> | (tableau de) tableau numérique |
<constante ou tab. num.> | constante ou tableau numérique de réels ou de complexes |
<réel ou tab. réel> | nombre réel ou tableau numérique de réels |
<nom fichier> | nom de fichier |
<fichier> | fichier |
<dimension d'un tableau> | deux entiers séparés par un : |
<liste_dimension> | liste de <dimension d'un tableau> séparée par une virgule |
<condition> | comparaison entre deux opérations |
<chaine> | une opération retournant une chaine de caractères |
<(tableau de) chaine> | une opération retournant un tableau de chaine de caractères ou une seule chaine de caractères |
<liste de variables> | liste de noms de variables ou tableau de variables |
<liste_parametres> | liste de paramètres d'une macro |
<corps> | liste d'expression trip |
<client scscp> | connexion vers un serveur SCSCP |
<objet distant> | objet stocké sur un serveur SCSCP distant |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
L'affichage de la valeur d'une variable globale est realisée en donnant le nom de la variable suivi de ; .
L'affichage de la valeur de l'ensemble des variables globales s'effectue avec la commande vartrip (voir la section vartrip).
Les variables globales réelles sont stockées sous la forme d'un réel double-précision.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_affc = {1, 2, 3, 4, 5, 6, 7, 8, 9};
Elle indique le format souhaité pour l'affichage des coefficients numériques dans les séries ou constantes.
Valeur par défaut = 4.
Exemple :
> _affc=1;
_affc = 1
> 1/3;
0.333333
> _affc=2;
_affc = 2
> 1/3;
0.33333333
> _affc=3;
_affc = 3
> 1/3;
0.3333333333
> _affc=4;
_affc = 4
> 1/3;
0.333333333333333
> _affc=5;
_affc = 5
> 1/3;
1/3
> _affc=6;
_affc = 6
> 1/3;
1/3
> _affc=7;
_affc = 7
> 1/3;
1/3
> _affc=8;
_affc = 8
> 1/3;
3.333333E-01
> _affc=9; _modenum=NUMDBLINT;
_affc = 9
_modenum = NUMDBLINT
> 1/3;
[+3.333333333333333E-1,+3.333333333333334E-1 ( 5.551115E-17)]
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_affdist = {0, 1, 2, 3, 4, 5, 6, 7};
indique le type d'affichage souhaité pour les séries
Valeur par défaut = 2.
_affvar.
_affvar.
Remarque : Si _affvar est vide, l'affichage de _affdist = 6, respectivement 7,
est équivalent à _affdist=1, respectivement 2.
Exemple : >_affdist = 2; >x = 1+y; x(y) = 1 + 1*y |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_comment {on,off};
Active ou désactive l'affichage des commentaires.
Valeur par défaut = off.
Exemple : > _comment; _comment OFF > /* série à deriver : /* s=1+x */ : */; > _comment on; > /* série à deriver : /* s=1+x */ : */; série à deriver : s=1+x : > _comment off; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_cpu = <entier> ;
Spécifie le nombre de processeurs utilisables pour les calculs suivants.
Il est impossible de spécifier un nombre supérieur au nombre de processeurs ou coeurs utilisables.
Valeur par défaut : nombre de processeurs ou coeurs disponibles sur la machine.
Exemple :
> _mode=POLP;
_mode = POLP
> _cpu=1;
_cpu = 1
> time_s; s=(1+x+y+z+t+u)^30$ time_t(usertime, realtime);
03.321s - ( 99.44% CPU)
> msg("the real time is %g\n", realtime);
the real time is 3.33976
> _cpu=4;
_cpu = 4
> time_s; s=(1+x+y+z+t+u)^30$ time_t(usertime, realtime);
03.339s - (322.89% CPU)
> msg("the real time is %g\n", realtime);
the real time is 1.03414
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_echo = {0, 1};
_echo {on,off};
Active ou désactive l'affichage de l'écho des commandes exécutées.
Valeur par défaut = off.
Exemple : >_echo = 1; >msg "exemple"; exemple cde>> msg "exemple"; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_endian = {little , big};
Indique l'ordre des octets (big-endian ou little-endian) dans les fichiers binaires.
Valeur par défaut = endianness de la machine.
Exemple :
> _endian=big;
_endian = big
> vnumR ieps;
> readbin(file1.dat,"%u",ieps);
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_graph = gnuplot;
_graph = grace;
Indique si les commandes plot, replot, plotps, plotf utiliseront les logiciels grace ou gnuplot (voir la section Graphiques) pour réaliser les graphiques.
Valeur par défaut = gnuplot.
Exemple :
> _graph = grace;
_graph = grace
> _graph = gnuplot;
_graph = gnuplot
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_hist {on,off};
Indique si le fichier ‘history.trip’ est ouvert ou non.
Si le fichier est ouvert, les commandes sont alors enregistrées dans ce fichier.
Valeur par défaut = on.
Exemple : >_hist; _hist = ON |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_history = <chaine> ;
Indique le répertoire où sera stocké le fichier ‘history.trip’.
Valeur par défaut = "".
Exemple :
> _history="/users/toto/";
_history = /users/toto/
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_info {on,off};
Active ou désactive l'affichage de messages d'informations.
Valeur par défaut = on.
Exemple :
> _modenum=NUMQUAD;
_modenum = NUMQUAD
> x1=0,2*pi,2*pi/59$
> x2=0,3,0.5$
> _info off;
_info off
> sl=interpol(LINEAR,x1,cos(x1),x2)$
> _info on;
_info on
> sl=interpol(LINEAR,x1,cos(x1),x2)$
Information : interpol effectue l'interpolation numerique en double-precision.
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_language = {fr, en };
Change la langue utilisee pour les messages.
valeur par défaut =
Exemple :
> _language = en ;
_language = en
> Exp(x, y);
TRIP[ 3 ] : This parameter must be an integer
Command :' Exp(x, y);'
^
> _language = fr;
_language = fr
> Exp(x, y);
TRIP[ 3 ] : Cet argument doit etre un entier
Commande :'Exp(x, y);'
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_mode = {POLY, POLP };
Indique la représentation utilisée pour le stockage séries et pendant les calculs sur les séries.
Ce mode peut être changé en cours de route.
Valeur par défaut = POLY.
Exemple :
> _mode=POLY;
_mode = POLY
> s1=(1+x)^100$
> s2=1+x^100$
> bilan mem;
Nom Memoire (octets) Nb de termes
-------------------- -------------------- --------------------
s1 4848 101
s2 96 2
-------------------- -------------------- --------------------
4944 103
Memoire physique utilisee = 7118848 octets
Memoire maximale utilisee = 2783817728 octets
> _mode=POLP;
_mode = POLP
> s1=(1+x)^100$
> s2=1+x^100$
> bilan mem;
Nom Memoire (octets) Nb de termes
-------------------- -------------------- --------------------
s1 3232 101
s2 3232 2
-------------------- -------------------- --------------------
6464 103
Memoire physique utilisee = 7208960 octets
Memoire maximale utilisee = 2784210944 octets
> _mode=POLY$ time_s; s1=(1+x)^100$ time_t;
00.240s - ( 47.74% CPU)
> _mode=POLP$ time_s; s1=(1+x)^100$ time_t;
00.013s - ( 40.57% CPU)
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_modenum = {NUMDBL, NUMRAT, NUMRATMP, NUMQUAD, NUMFPMP};
Indique le type choisi pour les coefficients numériques et des tableaux numériques.
Ce mode peut être changé en cours de route.
Valeur par défaut = NUMDBL.
Les coefficients sont codés sous les formes suivantes :
La valeur absolue du numérateur et du dénominateur est comprise entre 0 et 2**62 sur la plupart des machines. Si le numérateur ou le dénominateur devient trop grand, le rationnel est compris en réel double-précision.
Les nombres réels sont toujours stockés en double-précision. Par exemple, le coefficient "2.0" sera stocké sous la forme réel double-précision alors que le coefficient "2" sera stocké sous la forme d'un rationnel.
La valeur absolue du numérateur et du dénominateur ne sont pas limités.
Les nombres réels sont toujours stockés en double-précision. Par exemple, le coefficient "2.0" sera stocké sous la forme réel double-précision alors que le coefficient "2" sera stocké sous la forme d'un rationnel.
Ces coefficients numériques utilisent la librairie GMP. (type mpz_t ou mpq_t). Sur les systèmes d'exploitation 64 bits, les entiers inférieurs à 2^63-1 en valeur absolue utilisent directement les instructions du processeur au lieu de la librairie GMP.
Le nombre de chiffres significatifs est specifies par la variable globale _modenum_prec (voir la section _modenum_prec).
Ces coefficients numériques utilisent la librairie MPFR.
Pour les modes NUMRAT, NUMRATMP, les tableaux numériques contiennent toujours des réels ou de complexes double-précision.
Exemple :
> _affc=4;
_affc = 4
> _modenum=NUMDBL;
_modenum = NUMDBL
> s=1/11;
s = 0.0909090909090909
> _modenum=NUMRAT;
_modenum = NUMRAT
> s=1/11;
s = 1/11
> _modenum=NUMFPMP;
_modenum = NUMFPMP
> pi;
3.1415926535897932384626433832795028841971693993751058209749445924
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_modenum_prec = <entier> ;
Variable utilisée si _modenum = NUMFPMP (voir la section _modenum).
Elle indique le nombre de chiffres significatifs des nombres réels multi-precision.
Valeur par défaut = 64.
Exemple : > _modenum=NUMFPMP; _modenum = NUMFPMP > _modenum_prec= 20; _modenum_prec = 20 > pi; 3.14159265358979323846 > _modenum_prec= 40; _modenum_prec = 40 > pi; 3.1415926535897932384626433832795028841975 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_naf_dtour = <réel> ;
Variable utilisée par naf (voir la section Analyse en frequence).
Elle indique la "longueur d'un tour de cadran".
Valeur par défaut = 2*pi.
Exemple : > _naf_dtour=360; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_naf_icplx = {0, 1};
Variable utilisée par naf (voir la section Analyse en frequence).
Elle indique si la fonction est réelle ou complexe.
Valeur par défaut = 1.
Les valeurs possibles sont :
Exemple : > _naf_icplx=0; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_naf_iprt = {-1 , 0, 1, 2};
Variable utilisée par naf (voir la section Analyse en frequence).
Elle indique le niveau d'affichage pour naf et naftab. L'affichage des resultats intermédiaires sera stocké dans un fichier.
Valeur par défaut = -1.
Les valeurs possibles sont :
Exemple : > _naf_iprt = 2; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_naf_isec = {0, 1};
Variable utilisée par naf (voir la section Analyse en frequence).
Elle indique l'utilisation ou non de la méthode des sécantes.
Valeur par défaut = 1.
Les valeurs possibles sont :
Exemple : > _naf_isec=1; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_naf_iw = <entier> ;
Variable utilisée par naf (voir la section Analyse en frequence).
Elle indique la présence de fenêtre.
Valeur par défaut = 1.
Les valeurs possibles sont :
avec CE= 0.22199690808403971891E0
Exemple : > _naf_iw=-1; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_naf_nulin = <entier> ;
Variable utilisée par naf (voir la section naf).
Elle indique le nombre de lignes à ignorer en début du fichier de données.
Valeur par défaut = 1.
Exemple : > _naf_nulin=0; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_naf_tol = <réel> ;
Variable utilisée par naf (voir la section Analyse en frequence).
Elle indique la tolérance pour déterminer si deux fréquences sont identiques.
Valeur par défaut = 1E-10.
Exemple : > _naf_tol=1E-4; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_path = <chaine> ;
_path = "chemin du repertoire";
Indique le répertoire utilisé pour la sauvegarde ou le chargement de fichiers. Toutes les commandes ou fonctions TRIP sauvegardant ou lisant des fichiers utilisent ce radical. Ce chemin est notamment utilisé pour le chargement de programme trip (include), la création de fichier postscript (plotps) et le tracé de fichier (plotf).
Valeur par défaut = "" (le répertoire courant).
Remarque :
Exemple : _path = "/u/gram/trip/"; /* UNIX */ _path = "\u\gram\trip\"; /* WINDOWS */ |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
_time {on, off};
active ou désactive l'affichage du temps partiel après chaque commande exécutée.
Lors de la commande _time on, un appel implicite à time_s est effectué et au retour de la commande, le temps 0.00s est affiché.
Valeur par défaut = off.
Exemple :
> macro temps
{
s=(1+x+y+z)**20$
_time on;
s=(1+x+y+z)**20$
q=s$
_time off;
};
> %temps;
00.0s
08.10s
00.12s
>
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
i^2 = -1
Exemple : >z = x + y*i; z(x,y) = (0+i*1)*y+1*x |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Le symbole mathématique pi
Exemple : >z = pi; 3.14159265358979 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 4.1 crevar |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
crevar (<chaine ou nom> radical, <entier> indice1, <entier> indice2,...);
Elle crée et retourne une variable de nom radical+"_"+ indice1 + ... + "_" + indicen.
crevar (<chaine ou nom> radical);
Elle crée et retourne une variable de nom radical. Cette fonction permet de creer des variables avec nom non standard.
Exemple :
>dimvar t[1:3];
>t[1]:=crevar("t",1);
>t[3]:=crevar("tab",3,2,1);
>afftab(t);
t[1] = t_1 = 1*t_1
t[2] =
t[3] = tab_3_2_1 = 1*tab_3_2_1
> dimvar u[1:2];
> u[1]:=crevar("\bar{X}");
> u[1];
u[1] = \bar{X} = 1*\bar{X}
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 5.1 Operateurs | ||
| 5.2 Fonctions usuelles | ||
| 5.3 Derivation et integration | ||
| 5.4 Division euclidienne | ||
| 5.5 Selection | ||
| 5.6 Evaluation |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
TRIP effectue l'addition (ou le plus unaire), la multiplication, la soustraction (ou moins unaire) et la division entre les séries, variables, constantes ou expressions.
Pour additionner, multiplier, soustraire et diviser terme à terme des tableaux, il existe l'opérateur +, *, - et /.
Les opérateurs +, *, -, / s'appliquent aux tableaux numériques.
Le + ou - unaire s'applique à tous les types.
Remarque: La division par une série n'est pas supportée.
Il faut utiliser la fonction div pour une division euclidienne.
Exemple : > s=1+x-y*z+t/2; s(x,y,z,t) = 1 + 1/2*t - 1*y*z + 1*x > _modenum=NUMRATMP; _modenum = NUMRATMP > p=5/3; p = 5/3 > _modenum=NUMQUAD; _modenum = NUMQUAD > p=5/3; p = 1.6666666666666666666666666666666667 |
<série> **<réel>
Elle effectue l'élevation à la puissance.
Elle accepte des exposants à valeurs entières.
La puissance **-1 sur un tableau à 2 dimensions égales effectue l'inversion matricielle.
Remarque : Par contre, la puissance terme à terme ** n'existe pas pour les tableaux.
Exemple : > u=2**3; 8 > z=(1+i)**3; (-2+i*2) > s=(1+x+y)**2; s(y,x) = 1 + 2*x + 1*x**2 + 2*y + 2*y*x + 1*y**2 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| • size : sizeserie |
size(<série> s )
Elle retourne le nombre de termes de la série s.
Exemple :
> s=1+x*y+z*t-i*p;
s(x,y,z,t,p) = 1 + (-0-i*1)*p + 1*t*z + 1*y*x
> size(s);
4
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| • deriv | ||
| • integ |
deriv(<série> , <variable> )
Elle dérive la série par rapport à une variable .
Exemple :
> s=(1+x+y)**2;
s(x,y) = 1 + 2*y + 1*y**2 + 2*x + 2*x*y + 1*x**2
> deriv(s,x);
2 + 2*y + 2*x
|
integ(<série> , <variable> )
Elle intègre la série par rapport à une variable .
Exemple :
> s=(1+x+y)**2;
s(x,y) = 1 + 2*y + 1*y**2 + 2*x + 2*x*y + 1*x**2
> integ(s,x);
1*x + 2*x*y + 1*x*y**2 + 1*x**2 + 1*x**2*y + 1/3*x**3
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
div(<série> f, <série> g, <identificateur> q, <identificateur> r )
Elle calcule le quotient et le reste de la division de f par g tel que f=q\times g +r et degre(r)<degre(g). Le quotient est stocké dans q et le reste dans r.
Exemple :
> div(x^3+x+1, x^2+x+1, q,r);
> q;
q(x) =
- 1
+ 1*x
> r;
r(x) =
2
+ 1*x
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 5.5.1 coef_ext |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
coef_ext(<série> , (<variable> ,<entier> ),...)
Elle récupère le coefficient de la variable à la puissance désirée dans la série.
coef_ext(S,(X,n),(Y,m)) retourne le coefficient de X^n*Y^m dans la série S.
Exemple : > S= (1+x+y+z)**4 $ > coef_ext(S,(x,1),(y,2)); 12 + 12*z |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 5.6.1 coef_num | ||
| 5.6.2 evalnum |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
coef_num(<série> , (<variable> ,<constante> ),...)
Elle substitue rapidement dans une série une (ou des) variable(s) par une (ou des) constantes numériques.
Exemple :
> S= (1+x+y+z)**4 $
> coef_num(S,(x,0.1),(y,2));
923521/10000 + 29791/250*z + 2883/50*z**2 + 62/5*z**3 + 1*z**4
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
evalnum(<série> , {REAL/COMPLEX} , (<variable> ,<tab. num.> ),...)
Elle évalue la série en substituant les variables par leur valeur dans le tableau numérique associé.
La fonction retourne un tableau numérique de réels si REAL a été précisé
sinon un tableau numérique de complexes si COMPLEX a été précisé.
Les tableaux numériques doivent être de taille identique.
Exemple : > serie=sin(x+y)-2*y; serie(y,_EXy1,_EXx1) = (-0+i*1/2)*_EXy1**-1*_EXx1**-1 + (0-i*1/2)*_EXy1*_EXx1 - 2*y > TABX=0,pi,pi/6; TABX Tableau de reels : nb reels =7 > TABY=-pi,0,pi/6; TABY Tableau de reels : nb reels =7 > TABRES=evalnum(serie,REAL,(x,TABX),(y,TABY)); TABRES Tableau de reels : nb reels =7 > writes(TABRES); +6.283185307179586E+00 +4.369962352198550E+00 +3.322764801001953E+00 +3.141592653589793E+00 +2.960420506177634E+00 +1.913222954981037E+00 +1.224646799147353E-16 > writes(TABX); +0.000000000000000E+00 +5.235987755982988E-01 +1.047197551196598E+00 +1.570796326794897E+00 +2.094395102393195E+00 +2.617993877991494E+00 +3.141592653589793E+00 > TABRES=evalnum(serie,COMPLEX,(x,TABX),(y,TABY)); > writes(TABRES); +6.283185307179586E+00 +0.000000000000000E+00 +4.369962352198550E+00 +0.000000000000000E+00 +3.322764801001953E+00 -5.551115123125783E-17 +3.141592653589793E+00 +0.000000000000000E+00 +2.960420506177634E+00 +0.000000000000000E+00 +1.913222954981037E+00 +0.000000000000000E+00 +1.224646799147353E-16 +0.000000000000000E+00 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 6.1 Fonctions usuelles | ||
| 6.2 Entree/Sortie sur les reels |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
La plupart des routines sont décrites dans (voir la section Tableaux numeriques).
| 6.1.1 factoriel |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
fac( <entier> n);
Elle retourne n! (fonction factorielle).
Exemple : :
> fac(3);
6
> n=5;
n = 5
> fac(n+1);
720
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Ces routines assurent la lecture ou l'écriture séquentielle d'un fichier texte contenant uniquement des réels.
ecriture(<nom fichier> );
Cette fonction ouvre un fichier en écriture dans le répertoire spécifié par _path.
Si le fichier n'existe pas, il est crée automatiquement.
Exemple : :
> ecriture("fichier1.dat");
|
lecture(<nom fichier> );
Cette fonction ouvre un fichier en lecture dans le répertoire spécifié par _path.
Exemple : :
> lecture("fichier1.dat");
|
print(<réel> );
Cette fonction écrit dans le fichier ouvert en écriture(avec ecriture) un réel en double-précision.
Write a double-precision floating-point number in the file opened (with the command ecriture).
Exemple : :
> ecriture("fichier1.dat");
> print(atan(1)); /* on écrit pi/4 dans fichier1.dat */
|
read;
Cette fonction lit dans le fichier ouvert en lecture(avec lecture) et retourne un réel en double-précision.
Exemple : :
> ecriture("fichier1.dat");
> print(atan(1));
> close;
> lecture("fichier1.dat");
> s=read;
s = 0.785398163397448
> close;
|
close;
Cette fonction ferme le fichier de réels s'il est ouvert (en écriture ou en lecture).
Exemple : :
> ecriture("fichier1.dat");
> print(atan(1));
> close;
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
La déclaration de chaine de caractères est implicite. Elle est automatiquement effectuée lors d'une affectation. Pour produire un guillemet (") dans une chaine, il suffit de le doubler.
<nom> = <chaine> ;
Exemple : /* L'exemple suivant declare les chaines ch et ch2. */ > ch="file"; ch = "file" > ch2=ch+".txt"; ch2 = "file.txt" |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<nom> = <chaine> + <chaine> ;
L'opérateur + concatène deux chaines de caractères. La longueur des chaines n'est pas limitée.
Exemple : > ch = "file" + "1"; ch = "file1" > sch = "../" + ch; sch = "../file1" > sch1 = sch + "." + str(12); sch1 = "../file1.12" |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<chaine> * <entier>
<entier> * <chaine>
L'opérateur * répète, le nombre de fois spécifié par l'entier, la chaine de caractères. L'entier doit être positif ou nul. Si l'entier est 0, la chaîne retournée est vide.
Exemple : > s=" %g"; s = " %g" > format=4*s+"\n"; format = " %g %g %g %g\n" > t=1,10$ > writes(format, t,t**2, t**3, t**4); |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<chaine> == <chaine>
L'opérateur == retourne vrai si les chaines de caractères sont identiques sinon elle retourne faux.
Exemple :
> s="monchemin";
s = "monchemin"
> if (s=="monchemin") then { msg "true"; } else { msg "false"; };
true
|
<chaine> != <chaine>
L'opérateur != retourne faux si les chaines de caractères sont identiques sinon elle retourne vrai.
Exemple :
> s="monchemin";
s = "monchemin"
> if (s=="MON") then { msg "true"; } else { msg "false"; };
false
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
str( <entier> );
str( <réel> );
str( <chaine> format, <réel> );
Elle convertit un entier ou un réel en chaine de caractères. Si format est spécifié, alors l'entier ou le réel est convertit suivant celui-ci. Le format est similaire à celui-ci de la fonction printf du langage C.
Les indicateurs de conversion sont
Les modificateurs de longueur ne sont pas acceptées. Par exemple, le format "%lg" est refusé.
En mode numérique NUMRAT ou NUMRATMP, les rationnels sont écrits sous la forme "numérateur/dénominateur" si aucun format n'est spécifié.
Exemple :
> ch= str(1235);
ch = "1235"
> ch=str(int(2*pi));
ch = "6"
> s=str(2E3);
s = "2000"
> s=str("%.4g",pi);
s = "3.142"
> _modenum=NUMRATMP;
_modenum = NUMRATMP
> s=str("%d", 3/2);
s = "3/2"
> s=str("%g", 3/2);
s = "1.5"
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
msg(<chaine> textformat, <réel> x, ... );
Elle génère une chaine contenant le texte formaté accompagné de constantes réelles.
Le formatage est identique à celui de de la commande printf du langage C (voir la section Conversion d'entier ou de reel en chaines, pour les formats acceptés). Le format doit être une chaine et peut être sur plusieurs lignes.
Pour écrire un guillemet, il faut le doubler.
Exemple :
> ch = msg("pi=%g pi=%.8E",pi,pi);
ch = "pi=3.14159 pi=3.14159265E+00"
> _modenum=NUMRATMP;
_modenum = NUMRATMP
> s=msg("%d %g", 1/11, 1/11);
s = "1/11 0.0909091"
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
size( <chaine> );
Elle retourne la longueur de la chaine, c'est-à-dire le nombre de caractères.
Exemple : > ch = "1235"; ch = "1235" > size(ch); 4 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Il existe trois sortes de tableaux dans TRIP :
Les matrices sont des tableaux de séries et de constantes. Ce chapitre ne discute pas des tableaux numériques.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
dim <nom> [ <liste_dimension> ], ...;
Elle déclare un ou plusieurs tableaux de séries en spécifiant le nombre de dimension.
Chaque dimension est séparée par une virgule. Une dimension est composée de deux entiers qui indiquent l'indice du premier et du dernier élément de cette dimension.
Ce type de tableaux peut contenir des séries, des constantes, des troncatures, des chaines de caractères, ... mais pas de variables.
Exemple : /*Ici, on déclare un tableau tl à deux dimensions de séries ou de constantes*/ > dim tl [1:22,-2:6]; /* on déclare 3 tableaux t1, t2 , t3 avec des dimensions différentes */ > dim t1[1:4], t2[5:6], t3[-1:3]; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<nom> = [<série> ,... : <série> , ...];
Cette commande crée et initialise un tableau de séries avec les séries ou constantes fournies.
Les : indiquent une nouvelle ligne et les , séparent les colonnes. Il doit y avoir le même nombre de colonne pour chaque ligne.
Exemple :
/*declare un tableau de series a 2 dimensions contenant des series*/
> tab=[1,2+2*x:(1+x)**2,(2+2*x)**2];
tab [1:2, 1:2] nb elements = 4
> stat(tab);
Tableau de series
tab [ 1:2 , 1:2 ]
...
/*declare un tableau de series a 2 dimensions contenant des constantes*/
> tab2=[1,2,3:4,5,6];
tab2 [1:2, 1:3] nb elements = 6
|
dimvar <nom> [ <liste_dimension> ], ...;
Elle déclare un ou plusieurs tableaux de variables en spécifiant le nombre de dimension.
Chaque dimension est séparée par une virgule. Une dimension est composée de deux entiers qui indiquent l'indice du premier et du dernier élément de cette dimension.
Ce type de tableaux ne peut contenir que des variables.
Pour affecter une variable existante à un tableau de variables, on remplace le symbole = par := .
Exemple : /*Ici, on declare un tableau t2 de variables a une dimension */ >dimvar t2[1:5]; /* Maintenant, si on fait:*/ >t2[1,0] := x; > deriv(S,t[1,0]); /* on aura la derivee de S par rapport a x. */ /* on declare 2 tableaux de variables tv1 et tv2 */ > dimvar tv1[1:2], tv2[1:3]; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
tabvar( <tableau de variables> );
Elle génère automatiquement les variables dans le tableau spécifié en utilisant comme nom des variables, le nom du tableau et leur indice.
Avant d'utiliser tabvar, il faut créer un tableau de variables à l'aide de dimvar.
Exemple : > dimvar t[0:3]; > tabvar(t); > afftab(t); t[0] = t_0 = 1*t_0 t[1] = t_1 = 1*t_1 t[2] = t_2 = 1*t_2 t[3] = t_3 = 1*t_3 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<nom> = <tableau> ;
Elle affecte le tableau (opérations entre des tableaux) au nom de l'identificateur fourni.
<tableau> [<entier> , ...] = <opération> ;
Elle affecte à un élément du tableau l'opération. Cette opération peut être une série, une constante, un tableau numérique, une troncature mais pas un tableau.
<tableau> [ <entier> binf : <entier> bsup : <entier> pas ,...]= <operation> ;
<tableau> [ <entier> binf : <entier> bsup ,...]= <operation> ;
Elle affecte une opération à une partie de tableau. Si cette opération est une série, une constante, un tableau numérique, une troncature alors cette opération est copiée pour chaque élément du tableau. Si cette opération est un tableau, alors chaque élément de celui-ci est affecté dans l'élément correspondant. Dans ce cas, elle vérifie que le nombre d'éléments et de dimensions est cohérent.
Si la borne inférieure est omise, alors sa valeur est 1. Si la borne supérieure est omise, alors sa valeur est la taille du tableau. Si le pas est omis, alors sa valeur est 1.
Remarque : toutes les combinaisons d'omissions sont permises.
Exemple : > dim t[1:4,7:25]; > t[1,7]=1+x; t[1,7] = 1 + 1*x > r=t; r [1:4, 7:25] nb elements = 76 > dim t[1:4,7:25]; > dim t2[1:4]; > t2[:]=5; > t[:,8]=t2; > t[:,::2]=1+x; |
<tableau> [...] := <variable> ;
Elle affecte une variable à un élément du tableau de variables.
Exemple :
> dimvar X[1:4];
> X[1]:=crevar(e,1,1);
> X[1];
X[1] = e_1_1 = 1*e_1_1
> deriv(1+2*e_1_1,X[1]);
2
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
size(<tableau> );
size(<tableau> ,<entier> );
Elle retourne le nombre d'éléments du tableau contenu dans la première dimension ou dans la dimension spécifiée par l'entier.
Si la dimension spécifiée n'existe pas dans le tableau, alors la fonction retourne -1.
Exemple :
> dim t[1:4,7:25];
> size(t,2);
19
> size(t);
4
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
afftab(<tableau> );
Elle affiche le contenu du tableau de séries ou de variables.
Exemple :
> dim t[1:4];
> t[1]=1+x$
> t[2]=2*i$
> t[3]=({(x,y),2})$
> afftab(t);
t[1] = 1 + 1*x
t[2] = (0+i*2)
t[3] = ( { (x,y), 2 } )
t[4] =
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<tableau> [<entier> ,...];
Elle retourne l'élément ayant ces indices.
<tab. num.> [ <entier> binf : <entier> bsup : <entier> pas,.. ];
<tab. num.> [ <entier> binf : <entier> bsup, .. ];
Elle retourne un tableau contenant uniquement les éléments situés entre les bornes inférieures et supérieures avec le pas spécifié.
Si la borne inférieure est omise, alors sa valeur est la borne inférieure de la dimension correspondante. Si la borne supérieure est omise, alors sa valeur est borne supérieure de la dimension correspondante. Si le pas est omis, alors sa valeur est 1.
Remarque : toutes les combinaisons d'omissions sont permises.
Exemple : > dim t[1:4]; > t[1]=1+x$ > s=t[1]; s(x) = 1 + 1*x > t1=t[3:]; t1 [3:4] nb elements = 2 > dim t[1:4,5:10]; > v2=t[:,6:]; v2 [1:4, 6:10] nb elements = 20 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
La plupart des fonctions usuelles sont décrites dans (voir la section Tableaux numeriques). Les fonctions suivantes peuvent être appliquées aux tableaux de séries (comme sur les séries) pour éviter les boucles for :
| 8.8.1 Produit matriciel | ||
| 8.8.2 Determinant | ||
| 8.8.3 Inverse | ||
| 8.8.4 Valeurs propres | ||
| 8.8.5 Vecteurs propres | ||
| 8.8.6 Arithmetique |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<tableau> &* <tableau>
Elle calcule le produit matriciel de deux tableaux à 1 ou 2 dimensions.
Si le tableau a une seule dimension, alors il est considéré comme un vecteur-colonne.
Remarque: le nombre de colonnes du premier tableau doit être égal au nombre de lignes du second tableau.
Exemple : > t=[x,y:x-y,x+y]; > t2=[x+y,x-y:x,y]; > r=t&*t2; > afftab(r); r[1,1] = 2*y*x + 1*x**2 r[1,2] = 1*y**2 - 1*y*x + 1*x**2 r[2,1] = -1*y**2 + 1*y*x + 2*x**2 r[2,2] = 2*y**2 - 1*y*x + 1*x**2 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
det( <tableau> )
Elle calcule le déterminant d'un tableau à 2 dimensions (matrice carrée).
Remarque: lors de calculs en double-precision, la librairie Lapack est utilisée. Un algorithme LU est utilisée dans tous les modes numeriques.
Exemple :
> t=[9,0,7
:1,2,3
:4,5,6];
t [1:3, 1:3] nb elements = 9
> det(t);
-48
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<tableau> **-1
Elle calcule l'inverse d'un tableau à 2 dimensions (matrice carrée).
Remarque : lors de calculs en double-precision, la librairie Lapack est utilisée. Un algorithme LU est utilisée dans tous les cas.
Exemple : > t=[9,0,7:1,2,3:4,5,6]; t [1:3, 1:3] nb elements = 9 > r=t**-1; r [1:3, 1:3] nb elements = 9 > afftab(r); r[1,1] = 1/16 r[1,2] = -35/48 r[1,3] = 7/24 r[2,1] = -1/8 r[2,2] = -13/24 r[2,3] = 5/12 r[3,1] = 1/16 r[3,2] = 15/16 r[3,3] = -3/8 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
eigenvalues(<tableau> )
Elle calcule les valeurs propres d'un tableau à 2 dimensions (matrice carrée) en utilisant un algorithme QR ( librairie lapack).
Exemple : > t=[9,0,7:1,2,3:4,5,6]; t [1:3, 1:3] nb elements = 9 > l=eigenvalues(t); l [1:3] nb elements = 3 > afftab(l); l[1] = 13.7691504189573 l[2] = 4.08436203480944 l[3] = -0.853512453766754 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
eigenvectors(<tableau> MAT, <tableau> TVECT, <tableau> TVAL)
eigenvectors(<tableau> MAT, <tableau> TVECT)
Elle calcule les vecteurs propres d'un tableau MAT à 2 dimensions (matrice carrée). Elle stocke les vecteurs propres dans le tableau TVECT et les valeurs propres dans le tableau TVAL.
Elle utilise un algorithme QR ( librairie lapack).
Chaque colonne de TVECT correspond à un vecteur propre. Chaque vecteur est normalisé.
Exemple : > t=[9,0,7:1,2,3:4,5,6]; t [1:3, 1:3] nb elements = 9 > eigenvectors(t,vectp,valp); > afftab(vectp); vectp[1,1] = -0.808169038149443 vectp[1,2] = -0.75057699194462 vectp[1,3] = -0.484663855953733 vectp[2,1] = -0.209021306608322 vectp[2,2] = 0.398522441432627 vectp[2,3] = -0.547409412438461 vectp[3,1] = -0.550611386696964 vectp[3,2] = 0.527080679628786 vectp[3,3] = 0.682234477218675 > afftab(valp); valp[1] = 13.7691504189573 valp[2] = 4.08436203480944 valp[3] = -0.853512453766754 > /* 1er vecteur */ p=vectp[:,1]; p [1:3] nb elements = 3 > afftab(p); p[1] = -0.808169038149443 p[2] = -0.209021306608322 p[3] = -0.550611386696964 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Les tableaux doivent avoir le même nombre de dimensions et le même nombre d'éléments par dimension.
<tableau> + <tableau>
Elle retourne l'addition terme à terme de deux tableaux de séries.
<tableau> + <série>
<série> + <tableau>
Elle retourne la somme d'une série et de chaque élément du tableau de séries.
<tableau> * <tableau>
Elle retourne le produit terme à terme de deux tableaux de séries.
<tableau> * <série>
<série> * <tableau>
Elle retourne le produit terme à terme d'une série et d'un tableau de séries.
<tableau> - <tableau>
Elle retourne la soustraction terme à terme de deux tableaux de séries.
<tableau> - <série>
<série> - <tableau>
Elle retourne la diffŽrence entre une série et chaque élément du tableau de séries.
<tableau> / <tableau>
Elle retourne la division terme à terme de deux tableaux de séries.
<tableau> / <série>
<série> / <tableau>
Elle retourne la division entre une série et chaque élément du tableau de séries.
Exemple : > t2=[x+y,x-y:x,y]; t2 [1:2, 1:2] nb elements = 4 > t=[x,y:x-y,x+y]; t [1:2, 1:2] nb elements = 4 > r=t*t2*i-t*x; r [1:2, 1:2] nb elements = 4 > afftab(r); r[1,1] = (0+i*1)*x*y + (-1+i*1)*x**2 r[1,2] = (-0-i*1)*y**2 + (-1+i*1)*x*y r[2,1] = (1-i*1)*x*y + (-1+i*1)*x**2 r[2,2] = (0+i*1)*y**2 + (-1+i*1)*x*y - 1*x**2 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Pour la conversion en tableaux numériques, (voir la section Conversion).
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Les données numériques, stockées dans ces tableaux, sont toujours des réels ou complexes double-précision, quadruple-précision ou multiprecision suivant le mode numérique courant.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| • vnumR | ||
| • vnumC |
La déclaration explicite de tableau numérique est nécessaire uniquement avant l'utilisation de la commande read , readbin (voir la section Entree/Sortie) et resize .
Elle est aussi nécessaire pour les tableaux de tableaux numériques.
vnumR <nom> , ... ;
vnumR <nom> [ <dimension d'un tableau> ] , ... ;
Elle déclare un tableau de réels ou un tableau de tableau numérique de réels.
La dimension permet de spécifier le nombre d'éléments du tableau de tableaux de réels.
La taille des tableaux de réels est dynamique. Apres cette déclaration, les tableaux de réels sont vides.
Pour spécifier leur taille, il faut utiliser la commande resize.
Exemple : > vnumR T; > vnumR TAB[1:10]; > vnumR A, C, T[1:10]; |
vnumC <nom> , ... ;
vnumC <nom> [ <dimension d'un tableau> ] , ... ;
Elle déclare un tableau de complexes ou un tableau de tableau numérique de complexes.
La dimension permet de spécifier le nombre d'éléments du tableau de tableaux de complexes.
La taille des tableaux de complexes est dynamique. Apres cette déclaration, les tableaux de complexes sont vides.
Pour spécifier leur taille, il faut utiliser la commande resize.
Exemple : > vnumC T; > vnumC TABZ[2:10]; > vnumC A, C, T[1:10]; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<nom> = <réel> binf , <réel> bsup , <réel> step ;
Elle déclare un tableau de réels tel que les éléments soient initialisés par une boucle (de binf à bsup avec un pas bstep):
for (j=1, valeur=binf) to valeur<=bsup step (j=j+1, valeur=valeur+bstep) <nom> [j]=valeur
Le pas bstep est optionnel; par défaut, sa valeur est 1.
Exemple : > tab=-pi, 6, pi/100; tab Tableau de reels : nb reels =291 > writes([::30],tab); -3.141592653589793E+00 -2.199114857512855E+00 -1.256637061435917E+00 -3.141592653589789E-01 +6.283185307179591E-01 +1.570796326794897E+00 +2.513274122871835E+00 +3.455751918948773E+00 +4.398229715025711E+00 +5.340707511102648E+00 > t=0,10; t Tableau de reels : nb reels =11 > writes(t); +0.000000000000000E+00 +1.000000000000000E+00 +2.000000000000000E+00 +3.000000000000000E+00 +4.000000000000000E+00 +5.000000000000000E+00 +6.000000000000000E+00 +7.000000000000000E+00 +8.000000000000000E+00 +9.000000000000000E+00 +1.000000000000000E+01 > |
<nom> = vnumR [ <réel> ou <tab. réel> ou <tableau de tab. réel> , ... : <réel> ,... ] ;
Elle déclare et initialise un tableau de réels ou un tableau de tableau numérique de réels avec les réels ou les tableaux de réels fournis.
Les caractères : séparent les lignes et les caractères , séparent les colonnes.
Il doit y avoir le même nombre de lignes pour chaque colonne.
Exemple : > /*declare un tableau de 3 tableaux de 2 reels */ tab3=vnumR[1,2,3:4,5,6]; tab3 [1:3] nb elements = 3 > writes(tab3); +1.000000000000000E+00 +2.000000000000000E+00 +3.000000000000000E+00 +4.000000000000000E+00 +5.000000000000000E+00 +6.000000000000000E+00 > t=7,8; t Tableau de reels : nb reels =2 > tab4=vnumR[t,tab3]; tab4 [1:4] nb elements = 4 /*declare un tableau de 5 reels */ > t2=vnumR[1:2:4:8:9]; t2 Tableau de reels : nb reels =5 > writes(t2); +1.000000000000000E+00 +2.000000000000000E+00 +4.000000000000000E+00 +8.000000000000000E+00 +9.000000000000000E+00 |
<nom> = vnumC [ <complexe> ou <tab. complexe> ou <tableau de tab. complexe> , ... : <complexe> ,... ] ;
Elle déclare et initialise un tableau de complexes ou un tableau de tableau numérique de complexes avec les complexes, des tableaux numériques de complexes fournis.
Les : séparent les lignes et les , séparent les colonnes.
Il doit y avoir le même nombre de lignes pour chaque colonne.
Exemple :
/*declare un tableau de 4 complexes*/
> tab3=vnumC[1:1+i:2+2*i:3+3*i];
tab3 Tableau de complexes : nb complexes =4
> writes(tab3);
+1.000000000000000E+00 +0.000000000000000E+00
+1.000000000000000E+00 +1.000000000000000E+00
+2.000000000000000E+00 +2.000000000000000E+00
+3.000000000000000E+00 +3.000000000000000E+00
> vnumC ti;
> resize(ti,5,3-5*i);
> tab4=vnumC[tab3 : 5+7*i : ti];
tab4 Tableau de complexes : nb complexes =10
/*declare un tableau de 2 tableaux de 2 complexes*/
> z4=vnumC[5,2+i:4,9+3*i];
z4 [1:2] nb elements = 2
> writes("%g %g %g %g\n",z4[1],z4[2]);
5 0 2 1
4 0 9 3
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
writes([ <entier> : <entier> : <entier> ], <chaine> , <(tableau de) tab. num.> , ...);
writes( <chaine> , <(tableau de) tab. num.> , ...);
writes( <(tableau de) tab. num.> , ...);
équivaut à
writes( { [binf:{bsup}:{step}], } {format,} <(tableau de) tab. num.> ,...).
Elle écrit à l'ecran, les tableaux numériques ou les tableaux de tableaux numériques sous la forme de colonnes.
Le format est optionnel. Ce format est un format au standard C (cf. printf) et est encadré par des guillemets ("). Pour faire un guillemet, il faut le doubler :
Par exemple : si le format C est " %g \"titi\" %g", il faut écrire, " %g\""titi\"" %g"
Un tableau de complexes occupent deux colonnes (la 1ère pour la partie réelle, la 2ème pour la partie complexe).
Exemple :
Ecriture de tous les éléments de T et de X.
La première colonne correspondra à T.
La deuxième colonne correspondra à la partie réelle de X.
La troisième colonne correspondra à la partie imaginaire de X.
...
> stat(X);
Tableau numérique X de 6 complexes.
taille en octets du tableau: 96
> stat(T);
Tableau numérique T de 6 réels.
taille en octets du tableau: 48
> writes(T,X);
+9.999993149794888E-02 +1.000000000456180E-01 +1.095970178673141E-06
-2.000000944035095E-01 +9.999999960679056E-03 +1.312007532388499E-07
+3.000000832689856E-01 +1.000000314882390E-03 -1.403292661135361E-08
-4.000000970924361E-01 +9.999995669530993E-05 +1.695880029074994E-09
+4.999999805039361E-01 +1.000003117384769E-05 +3.216502329016007E-11
-5.999999830866213E-01 +9.999979187109419E-07 -1.796078221829677E-12
>
Ecriture du 2 au 4 elements de T et de X
avec un format "%.1g\t(%.5g+i*%.5E)\n".
> writes([2:4],"%.1g\t(%.5g+i*%.5E)\n",T,X);
-0.2 (0.01+i*1.31201e-07)
0.3 (0.001+i*-1.40329e-08)
-0.4 (0.0001+i*1.69588e-09)
Ecriture du 1 au 5 elements de T et de X avec un pas de 2 sans format.
> writes([1:5:2],T,X);
+9.999993149794888E-02 +1.000000000456180E-01 +1.095970178673141E-06
+3.000000832689856E-01 +1.000000314882390E-03 -1.403292661135361E-08
+4.999999805039361E-01 +1.000003117384769E-05 +3.216502329016007E-11
Ecriture des elements de T et de X avec un pas de 5 sans format.
> writes([::5],T,X);
+9.999993149794888E-02 +1.000000000456180E-01 +1.095970178673141E-06
-5.999999830866213E-01 +9.999979187109419E-07 -1.796078221829677E-12
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
size( <tab. num.> )
Elle retourne le nombre d'éléments du tableau numérique.
Exemple :
> t=1,10;
t Tableau de reels : nb reels =10
> size(t);
10
> p=-pi,pi,pi/400;
p Tableau de reels : nb reels =800
> size(p);
800
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
resize(<(tableau de) tab. num.> , <entier> );
resize(<(tableau de) tab. num.> , <entier> , <constante> );
Elle change la taille d'un tableau numérique ou d'un tableau de tableaux numériques.
Tous les éléments sont initialisés à 0 si aucune constante n'est fournie, sinon les éléments sont initialisés avec la constante fournie.
Exemple : > vnumR t; > resize(t,3); > vnumR t2; > resize(t2,3,5); > writes(t,t2); +0.000000000000000E+00 +5.000000000000000E+00 +0.000000000000000E+00 +5.000000000000000E+00 +0.000000000000000E+00 +5.000000000000000E+00 > vnumC t[1:3]; > resize(t[2],2,1-5*i); > writes(t[2]); +1.000000000000000E+00 -5.000000000000000E+00 +1.000000000000000E+00 -5.000000000000000E+00 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| • select | ||
| • operateurs d'extraction |
select ( <condition> , <tab. num.> );
Elle retourne un tableau numérique contenant uniquement les éléments du tableau numérique quand la condition est vraie.
La condition et le tableau numérique doivent avoir le même nombre d'éléments.
Exemple : /*retourne les éléments qui sont multiples de 3*/ > t=1,10; t Tableau de reels : nb reels =10 > r=select((t mod 3)==0, t); r Tableau de reels : nb reels =3 > writes(r); +3.000000000000000E+00 +6.000000000000000E+00 +9.000000000000000E+00 |
<tab. num.> [ <tab. réel> ];
Elle retourne un tableau numérique contenant uniquement les éléments situés aux indices contenus dans le tableau de réels.
Remarque : le tableau de réels doit toujours être un identificateur et non le resultat d'une opération.
Exemple :
> r=vnumR[1:5:7:9];
> t=20,30;
> b=t[r];
b Tableau de reels : nb reels =4
> writes("%g\n",b);
20
24
26
28
|
<tab. num.> [ <entier> binf : <entier> bsup : <entier> pas ];
<tab. num.> [ <entier> binf : <entier> bsup ];
Elle retourne un tableau numérique contenant uniquement les éléments situés entre les bornes inférieures et supérieures avec le pas spécifié.
Si la borne inférieure est omise, alors sa valeur est 1. Si la borne supérieure est omise, alors sa valeur est la taille du tableau. Si le pas est omis, alors sa valeur est 1.
Remarque : toutes les combinaisons d'omissions sont permises.
Exemple :
> t=1,10;
t Tableau de reels : nb reels =10
> r=t[::2];
r Tableau de reels : nb reels =5
> v=t[7:9];
v Tableau de reels : nb reels =3
> y=t[5:10:2];
y Tableau de reels : nb reels =3
> writes("%g %g\n",v,y);
7 5
8 7
9 9
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 9.7.1 read | ||
| 9.7.2 readappend | ||
| 9.7.3 write | ||
| 9.7.4 readbin | ||
| 9.7.5 writebin |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
read(<nom fichier> ,[ <entier> : <entier> : <entier> ],
,... ,
(<(tableau de) tab. num.>, <entier> ), ...
(<(tableau de) tab. num.>, <entier> , <entier> ), ...);
équivaut à
read(fichier.dat, [binf:bsup:step], T, (T1,n1), (T3,n2,n3));
read(fichier.dat, T, (T1,n1), (T3,n2,n3));
Elle lit dans un fichier ascii les colonnes specifiées et les stocke dans les tableaux numériques.
Si le fichier contient les expressions NAN ou NANQ, ceux-ci sont interprétés comme des "Not A Number".
Si le fichier contient les expressions INF, Inf ou Infinity, ceux-ci sont interprétés comme des infinis.
Exemple :
Lecture dans le fichier tessin.out de la ligne 2 à ligne 100
avec un pas de 3.
Le tableau T contiendra la première colonne,
la partie réelle de X contiendra la deuxième colonne,
la partie imaginaire de X contiendra la troisième colonne,
TAB[1] contiendra la 4eme colonne,
TAB[2] contiendra la 5eme colonne,
TAB[3] contiendra la 6eme colonne.
> vnumR T;
vnumC X;
vnumR TAB[1:3];
read(tessin.out,[2:100:3],T,X,TAB);
stat(T);
stat(X);
stat(TAB);
T nb elements reels =0
>
X nb elements complexes =0
>
TAB [1:3] nb elements = 3
> > Tableau numerique T de 33 reels.
taille en octets du tableau: 264
> Tableau numerique X de 33 complexes.
taille en octets du tableau: 528
> Tableau de series
TAB [ 1:3 ]
liste des elements du tableau :
TAB [ 1 ] =
Tableau numerique de 33 reels.
taille en octets du tableau: 264
TAB [ 2 ] =
Tableau numerique de 33 reels.
taille en octets du tableau: 264
TAB [ 3 ] =
Tableau numerique de 33 reels.
taille en octets du tableau: 264
>
Lecture dans le fichier tessin.out de la ligne 2 a ligne 100.
Le tableau T contiendra la premiere colonne,
la partie reelle de X contiendra la 4eme colonne,
la partie imaginaire de X sera nulle,
TAB[3] contiendra la 5eme colonne.
> read(tessin.out,[2:100],T,(X,4),(TAB[3],5));
Lecture dans le fichier tessin.out de l'ensemble des lignes.
Le tableau T contiendra la 2eme colonne,
la partie reelle de X contiendra la 3eme colonne,
la partie imaginaire de X contiendra la 4eme colonne,
TAB[3] contiendra la 5eme colonne.
> read(tessin.out,(T,2),(X,3,4),(TAB[3],5));
Lecture dans le fichier tessin.out a partir de la ligne 1000.
Le tableau T contiendra la 2eme colonne,
la partie reelle de X contiendra la 3eme colonne,
la partie imaginaire de X contiendra la 4eme colonne,
TAB[3] contiendra la 5eme colonne.
> read(tessin.out,[1000:],(T,2),(X,3,4),(TAB[3],5));
Lecture dans le fichier tessin.out avec un pas de 50 lignes.
Le tableau T contiendra la 2eme colonne,
la partie reelle de X contiendra la 3eme colonne,
la partie imaginaire de X contiendra la 4eme colonne,
TAB[3] contiendra la 5eme colonne.
> read(tessin.out,[::50],(T,2),(X,3,4),TAB[3]);
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
readappend(<nom fichier> ,[ <entier> : <entier> : <entier> ],
,... ,
(<(tableau de) tab. num.>, <entier> ), ...
(<(tableau de) tab. num.>, <entier> , <entier> ), ...);
équivaut à
readappend(fichier.dat, [binf:bsup:step], T, (T1,n1), (T3,n2,n3));
readappend(fichier.dat, T, (T1,n1), (T3,n2,n3));
Cette fonction est identique à la fonction read (voir la section read)
mais elle stocke les données lues à la fin des vecteurs numériques en agrandissant automatiquement ceux-ci au lieu d'écraser leur contenu.
Exemple : > t1=1,5; t1 Tableau de reels double-precision : nb reels =5 > write(temp001, t1); > write(temp002, t1**2); > vnumR w; > readappend(temp001,w); > readappend(temp002,w); > writes(w); +1.0000000000000000E+00 +2.0000000000000000E+00 +3.0000000000000000E+00 +4.0000000000000000E+00 +5.0000000000000000E+00 +1.0000000000000000E+00 +4.0000000000000000E+00 +9.0000000000000000E+00 +1.6000000000000000E+01 +2.5000000000000000E+01 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
write( <nom fichier> , [ <entier> : <entier> : <entier> ], <chaine> , <(tableau de) tab. num.> , ...);
write( <nom fichier> , <chaine> , <(tableau de) tab. num.> , ...);
write( <nom fichier> , <(tableau de) tab. num.> , ...);
équivaut à
write( fichier.dat, [binf:bsup:step], "format", T, T1, T2).
write( fichier.dat, "format", T, T1, T2).
write( fichier.dat, T, T1, T2).
write( fichier.dat, [binf:bsup:step], T, T1, T2).
Elle écrit dans le fichier les tableaux numériques ou les tableaux de tableaux numériques sous la forme de colonnes.
Le format est optionnel. Ce format est un format au standard C (cf. printf) et est encadre par des guillemets ("). Pour faire un guillemet, il faut le doubler :
Par exemple : si le format C est " %g \"titi\" %E", il faut écrire, " %g \""titi\"" %E"
Un tableau de complexes occupent deux colonnes (la 1ère pour la partie réelle, la 2ème pour la partie complexe).
Exemple :
Ecriture de tous les elements de T et de X dans le fichier tx.out.
La pemiere colonne correspondra a T.
la deuxieme colonne correspondra a la partie reelle de X.
la troisieme colonne correspondra a la partie imaginaire de X.
> vnumR T;
vnumC X;
...
stat(T);
stat(X);
> Tableau numerique T de 33 reels.
taille en octets du tableau: 264
> Tableau numerique X de 33 complexes.
taille en octets du tableau: 528
> write(tx.out,T,X);
>
Ecriture de 10 au 20 éléments de T et de X dans le fichier tx.out avec
un format "%g\t(%8.4E+i*%e)\n".
La pemiere colonne correspondra à T.
la deuxième colonne correspondra à la partie réelle de X.
la troisieme colonne correspondra à la partie imaginaire de X.
> write(tx.out,[10:20],"%g\t(%8.4E+i*%e)\n",T,X);
Ecriture de 1 au 20 éléments de T et de X avec un pas de 2 dans le
fichier tx.out sans format.
La pemiere colonne correspondra à T.
la deuxième colonne correspondra à la partie réelle de X.
la troisieme colonne correspondra à la partie imaginaire de X.
> write(tx.out,[1:20:2],T,X);
Ecriture des éléments de T et de X avec un pas de 5 dans le fichier
tx.out sans format.
La pemiere colonne correspondra à T.
la deuxième colonne correspondra à la partie réelle de X.
la troisieme colonne correspondra à la partie imaginaire de X.
> write(tx.out,[::5],T,X);
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
readbin(<nom fichier> ,[ <entier> : <entier> : <entier> ], <chaine> , <(tableau de) tab. réel> , ...);
readbin(<nom fichier> , <chaine> , <(tableau de) tab. réel> , ...);
équivaut à
readbin(fichier.dat, [binf:bsup:step], format, T, T2, T3);
readbin(fichier.dat, format, T, T2, T3);
Elle lit dans un fichier binaire les données dont le format est spécifié et les stocke dans les tableaux numériques.
Les formats acceptés pour définir un enregistrement sont :
Il doit y avoir autant de formats que de tableaux numériques. Si le tableau fourni est un tableau de tableau de réels, alors il doit y avoir autant de formats que d'éléments du tableau.
Les données sont préalablement converties si la variable globale _endian (voir la section _endian) est différente de la valeur par défaut.
Exemple : Lecture dans le fichier binaire test1.dat d'entiers signés sur 4 octets et stockés dans le tableau de réels T1. vnumR T1; readbin(test1.dat,"%4d",T1); Lecture dans le fichier binaire test1.dat des 30 premiers entiers signés sur 4 octets et stockés dans le tableau de réels T1. vnumR T1; readbin(test1.dat,[:30],"%4d",T1); Lecture dans le fichier binaire test2.dat dont chaque enregistrement est composé de 2 réels et stockés dans le tableau de réels T1 et T2. vnumR T1,T2; readbin(test2.dat,[:30],"%g%g",T1,T2); Lecture dans le fichier binaire test3.dat dont chaque enregistrement est composé de 4 réels et stockés dans le tableau T3. vnumR T3[1:4]; readbin(test3.dat,"%g%g%g%g",T3); est équivalent à readbin(test3.dat,"%g%g%g%g",T3[1],T3[2],T3[3],T3[4]); |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
writebin(<nom fichier> ,[ <entier> : <entier> : <entier> ], <chaine> , <(tableau de) tab. réel> , ...);
writebin(<nom fichier> , <chaine> , <(tableau de) tab. réel> , ...);
équivaut à
writebin(fichier.dat, [binf:bsup:step], format, T, T2, T3);
writebin(fichier.dat, format, T, T2, T3);
Elle ecrit les tableaux numériques dans un fichier binaire avec le format est spécifié.
Les formats acceptés pour définir un enregistrement sont :
Il doit y avoir autant de formats que de tableaux numériques. Si le tableau fourni est un tableau de tableau de réels, alors il doit y avoir autant de formats que d'éléments du tableau.
Si les tableaux numériques ont des longueurs différentes, les données manquantes sont complétés par des 0.
Les données sont préalablement converties si la variable globale _endian (voir la section _endian) est différente de la valeur par défaut.
Exemple : Ecriture du tableau de réels T1 dans le fichier binaire test1.dat sosu la forme d'entiers signés sur 4 octets. vnumR T1; T1=1,10; writebin(test1.dat,"%4d",T1); Ecriture des 30 premiers éléments du tableau de réels T1 dans le fichier binaire test1.dat sous la forme d'entiers signés sur 4 octets. vnumR T1; T1=1,100; writebin(test1.dat,[:30],"%4d",T1); Ecriture des 30 premiers éléments du tableau de réels T1 et de T2 dans le fichier binaire test2.dat dont chaque enregistrement est composé de 2 réels. vnumR T1,T2; T1=1,100; T2=-100,-1; writebin(test2.dat,[:30],"%g%g",T1,T2); Ecriture des tableaux de réels de T3 dans le fichier binaire test3.dat dont chaque enregistrement est composé de 4 réels. vnumR T3[1:4]; T3[:]=1,10; writebin(test3.dat,"%g%g%g%g",T3); est équivalent à writebin(test3.dat,"%g%g%g%g",T3[1],T3[2],T3[3],T3[4]); |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 9.8.1 file_open | ||
| 9.8.2 file_close | ||
| 9.8.3 file_write | ||
| 9.8.4 file_read | ||
| 9.8.5 file_readappend | ||
| 9.8.6 file_writemsg |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
file_open(<nom fichier> , read);
file_open(<nom fichier> , write);
Elle ouvre un fichier en lecture seule ou en écriture seule selon le second paramètre. Elle retourne un identificateur de type fichier.
Exemple :
> f=file_open("sim2007.dat",read);
f = fichier "sim2007.dat" ouvert en lecture
> vnumR t;
> file_read(f,t);
> file_close(f);
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
file_close(<fichier> );
Elle ferme un fichier précédemment ouvert avec la fonction file_open.
Exemple :
> f=file_open("sim2007.dat",read);
f = fichier "sim2007.dat" ouvert en lecture
> vnumR t;
> file_read(f,t);
> file_close(f);
> stat(f);
fichier f = "sim2007.dat" ferme
Aucune erreur en lecture/ecriture
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
file_write( <fichier> , [ <entier> : <entier> : <entier> ], <chaine> , <(tableau de) tab. num.> , ...);
file_write( <fichier> , <chaine> , <(tableau de) tab. num.> , ...);
file_write( <fichier> , <(tableau de) tab. num.> , ...);
équivaut à
file_write( fichier, [binf:bsup:step], "format", T, T1, T2).
file_write( fichier, "format", T, T1, T2).
file_write( fichier, T, T1, T2).
file_write( fichier, [binf:bsup:step], T, T1, T2).
Cette fonction est similaire à la fonction write (voir la section write) mais elle accepte un identificateur de type fichier au lieu d'un nom de fichier.
Elle écrit les données dans le fichier à partir de la position courante.
Exemple : > f=file_open(sim2007.dat, write); f = fichier "sim2007.dat" ouvert en ecriture > t1=1,10; t1 Tableau de reels double-precision : nb reels =10 > t2=-t1; t2 Tableau de reels double-precision : nb reels =10 > file_write(f,t1); > file_write(f,t2); > file_close(f); |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
file_read(<fichier> ,[ <entier> : <entier> : <entier> ],
,... ,
(<(tableau de) tab. num.>, <entier> ), ...
(<(tableau de) tab. num.>, <entier> , <entier> ), ...);
équivaut à
file_read(fichier, [binf:bsup:step], T, (T1,n1), (T3,n2,n3));
file_read(fichier, T, (T1,n1), (T3,n2,n3));
Cette fonction est similaire à la fonction read (voir la section read) mais elle accepte un identificateur de type fichier au lieu d'un nom de fichier.
Elle lit les données depuis le fichier à partir de la position courante.
Exemple : > f=file_open(sim2007.dat, read); f = fichier "sim2007.dat" ouvert en lecture > vnumR t; > file_read(f,[:5],t); > vnumR t2; > file_read(f,t2); > writes(t); +1.0000000000000000E+00 +2.0000000000000000E+00 +3.0000000000000000E+00 +4.0000000000000000E+00 +5.0000000000000000E+00 > writes(t2); +6.0000000000000000E+00 +7.0000000000000000E+00 +8.0000000000000000E+00 +9.0000000000000000E+00 +1.0000000000000000E+01 -1.0000000000000000E+00 -2.0000000000000000E+00 -3.0000000000000000E+00 -4.0000000000000000E+00 -5.0000000000000000E+00 -6.0000000000000000E+00 -7.0000000000000000E+00 -8.0000000000000000E+00 -9.0000000000000000E+00 -1.0000000000000000E+01 > file_close(f); |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
file_readappend(<fichier> ,[ <entier> : <entier> : <entier> ],
,... ,
(<(tableau de) tab. num.>, <entier> ), ...
(<(tableau de) tab. num.>, <entier> , <entier> ), ...);
équivaut à
file_readappend(fichier, [binf:bsup:step], T, (T1,n1), (T3,n2,n3));
file_readappend(fichier, T, (T1,n1), (T3,n2,n3));
Cette fonction est similaire à la fonction readappend (voir la section readappend) mais elle accepte un identificateur de type fichier au lieu d'un nom de fichier.
Elle lit les données depuis le fichier à partir de la position courante.
Exemple : > f=file_open(sim2007.dat, read); f = fichier "sim2007.dat" ouvert en lecture > vnumR t; > file_readappend(f,[:5],t); > file_readappend(f,[10:15],t); > writes(t); +1.0000000000000000E+00 +2.0000000000000000E+00 +3.0000000000000000E+00 +4.0000000000000000E+00 +5.0000000000000000E+00 -5.0000000000000000E+00 -6.0000000000000000E+00 -7.0000000000000000E+00 -8.0000000000000000E+00 -9.0000000000000000E+00 -1.0000000000000000E+01 > file_close(f); |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
file_writemsg(<fichier> , <chaine> textformat);
file_writemsg(<fichier> , <chaine> textformat, <réel> x, ... );
Elle écrit dans le fichier le texte formaté et accompagné ou non de constantes réelles.
Les constantes réelles sont formatées. Le formatage est identique à celui de de la commande printf du langage C (voir la section Conversion d'entier ou de reel en chaines, pour les formats acceptés). Le texte doit être une chaine ou un texte entre guillemets. Le texte peut être sur plusieurs lignes.
Pour écrire un guillemet, il faut le doubler.
Exemple :
> f=file_open("temp001", write);
f = fichier "temp001" ouvert en ecriture
> x=4;
x = 4
> file_writemsg(f," resultat=%g\n", x);
> file_writemsg(f," termine\n");
> file_close(f);
> !"cat temp001";
resultat=4
termine
> f=file_open("data1.txt",write);
f = fichier "data1.txt" ouvert en ecriture
> file_writemsg(f,"%d\n",3/2);
> file_writemsg(f,"%4.2E\n",3/2);
> file_close(f);
> !"cat data1.txt";
3/2
1.50E+00
>
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 9.9.1 minimum et maximum | ||
| 9.9.2 somme et produit | ||
| 9.9.3 tris | ||
| 9.9.4 transposevnum | ||
| 9.9.5 fonctions mathematiques |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| • imin | ||
| • imax | ||
| • MIN : MINterme | ||
| • MAX : MAXterme | ||
| • min : minelt | ||
| • max : maxelt |
imin( <tab. réel> )
Elle retourne l'indice du minimum d'un tableau de réels. Si plusieurs éléments ont la valeur minimale, alors cette fonction retourne l'indice du permier élément. Si le tableau est vide, alors la fonction retourne 0.
Exemple :
> t=-5,5;
> imin(t);
1
|
imax( <tab. réel> )
Elle retourne l'indice du maximum d'un tableau de réels. Si plusieurs éléments ont la valeur maximale, alors cette fonction retourne l'indice du permier élément. Si le tableau est vide, alors la fonction retourne 0.
Exemple :
> t=-5,5;
> imax(t);
10
|
MIN( <tab. réel> , ...)
Elle retourne un tableau de réels tel que ses éléments soient le minimum terme à terme de chaque tableau de réels.
Les tableaux de réels doivent avoir la même taille.
Pour un tableau de tableaux numériques, l'opération s'effectue sur chaque él'ement du tableau.
Exemple : > t=0,pi,pi/6$ > a=MIN(cos(t),sin(t))$ > c=MAX(t,cos(t),sin(t))$ > writes(a,c)$ +0.0000000000000000E+00 +1.0000000000000000E+00 +4.9999999999999994E-01 +8.6602540378443871E-01 +5.0000000000000011E-01 +1.0471975511965976E+00 +6.1232339957367660E-17 +1.5707963267948966E+00 -4.9999999999999978E-01 +2.0943951023931953E+00 -8.6602540378443849E-01 +2.6179938779914940E+00 -1.0000000000000000E+00 +3.1415926535897931E+00 > vnumR cs[1:2]$ > cs[1]=cos(t)$ > cs[2]=sin(t)$ > b=MIN(cs)$ > d=MAX(t,cs)$ > writes(b,d); +0.0000000000000000E+00 +1.0000000000000000E+00 +4.9999999999999994E-01 +8.6602540378443871E-01 +5.0000000000000011E-01 +1.0471975511965976E+00 +6.1232339957367660E-17 +1.5707963267948966E+00 -4.9999999999999978E-01 +2.0943951023931953E+00 -8.6602540378443849E-01 +2.6179938779914940E+00 -1.0000000000000000E+00 +3.1415926535897931E+00 |
MAX( <tab. réel> , ...)
Elle retourne un tableau de réels tel que ses éléments soient le maximum terme à terme de chaque tableau de réels.
Les tableaux de réels doivent avoir la même taille.
Pour un tableau de tableaux numériques, l'opération s'effectue sur chaque él'ement du tableau.
Exemple : > t=0,pi,pi/6$ > a=MIN(cos(t),sin(t))$ > c=MAX(t,cos(t),sin(t))$ > writes(a,c)$ +0.0000000000000000E+00 +1.0000000000000000E+00 +4.9999999999999994E-01 +8.6602540378443871E-01 +5.0000000000000011E-01 +1.0471975511965976E+00 +6.1232339957367660E-17 +1.5707963267948966E+00 -4.9999999999999978E-01 +2.0943951023931953E+00 -8.6602540378443849E-01 +2.6179938779914940E+00 -1.0000000000000000E+00 +3.1415926535897931E+00 > vnumR cs[1:2]$ > cs[1]=cos(t)$ > cs[2]=sin(t)$ > b=MIN(cs)$ > d=MAX(t,cs)$ > writes(b,d); +0.0000000000000000E+00 +1.0000000000000000E+00 +4.9999999999999994E-01 +8.6602540378443871E-01 +5.0000000000000011E-01 +1.0471975511965976E+00 +6.1232339957367660E-17 +1.5707963267948966E+00 -4.9999999999999978E-01 +2.0943951023931953E+00 -8.6602540378443849E-01 +2.6179938779914940E+00 -1.0000000000000000E+00 +3.1415926535897931E+00 |
min( <réel ou tab. réel> , ...);
Elle retourne le minimum des valeurs fournies qui peuvent être des tableaux de réels ou des constantes réelles.
Exemple :
>min(1.5,2.5);
3/2
>x=1.5;
>y=2.5;
>min(x,y);
3/2
> t=-10,10;
> p=abs(t);
> min(-5,t,p,20);
-10
|
max( <réel ou tab. réel> , ...);
Elle retourne le maximum des valeurs fournies qui peuvent être des tableaux de réels ou des constantes réelles.
Exemple :
>max(1.5,2.5);
5/2
>x=1.5;
>y=2.5;
>max(x,y);
5/2
> t=-10,10;
> p=abs(t);
> max(p,t,8);
10
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| • sum | ||
| • prod | ||
| • accum |
sum( <tab. num.> )
Elle retourne la somme des éléments d'un tableau numérique.
Exemple :
> r=-10,10;
> sum(r);
0
> p=0,100;
> sum(p);
5050
> sum(abs(r)+i*p);
(110+i*5050)
|
prod( <tab. num.> )
Elle retourne le produit des éléments d'un tableau numérique.
Exemple :
> p=1,10;
p Tableau de reels : nb reels =10
> prod(p);
3628800
> c=p+2*i*p;
c Tableau de complexes : nb complexes =10
> prod(c);
(860025600-i*11307340800)
|
accum( <tab. num.> )
Elle retourne la somme partielle des éléments d'un tableau numérique :
Y=accum(X) alors Y[N] = sum(X[1:N])
Exemple : > tx=1,10; tx Tableau de reels : nb reels =10 > ty=accum(tx); ty Tableau de reels : nb reels =10 > writes(accum(tx)); +1.000000000000000E+00 +3.000000000000000E+00 +6.000000000000000E+00 +1.000000000000000E+01 +1.500000000000000E+01 +2.100000000000000E+01 +2.800000000000000E+01 +3.600000000000000E+01 +4.500000000000000E+01 +5.500000000000000E+01 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| • reversevnum | ||
| • sort |
reversevnum (<tab. num.> )
Elle inverse l'ordre des éléments d'un tableau numérique.
Exemple : > p=1,10; p Tableau de reels : nb reels =10 > writes(p, reversevnum(p)); +1.000000000000000E+00 +1.000000000000000E+01 +2.000000000000000E+00 +9.000000000000000E+00 +3.000000000000000E+00 +8.000000000000000E+00 +4.000000000000000E+00 +7.000000000000000E+00 +5.000000000000000E+00 +6.000000000000000E+00 +6.000000000000000E+00 +5.000000000000000E+00 +7.000000000000000E+00 +4.000000000000000E+00 +8.000000000000000E+00 +3.000000000000000E+00 +9.000000000000000E+00 +2.000000000000000E+00 +1.000000000000000E+01 +1.000000000000000E+00 |
sort ( <tab. réel> )
Elle effectue le tri ascendant des éléments du tableau de réels.
sort ( <tab. réel> , <(tableau de) tab. num.> , ...);
Elle effectue le tri des éléments des (tableaux de) tableaux numériques en fonction du tri ascendant du premier tableau de réels.
Remarque : Si on effectue l'appel ‘sort(TX,TY,TZ);’, les tableaux TY et TZ sont triés mais pas le tableau TX.
Exemple : > p=vnumR[5:2:-3:7:1:6]; p Tableau de reels : nb reels =6 > sort(p); > writes(p); -3.000000000000000E+00 +1.000000000000000E+00 +2.000000000000000E+00 +5.000000000000000E+00 +6.000000000000000E+00 +7.000000000000000E+00 > T=vnumC[1+i:2+2*i:3+3*i:4+4*i:5+5*i:7+7*i]; T Tableau de complexes : nb complexes =6 > vnumR TAB[1:2]; > TAB[1]=abs(T); > TAB[2]=-real(T); > sort(-p,T,TAB); |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
transposevnum ( <tableau de tab. num.> )
Elle retourne la transposée d'un tableau de tableaux numériques.
Le tableau doit avoir une seule dimension et les tableaux numériques de celui-ci ont une taille identique.
Exemple :
> t=1,5;
t Tableau de reels : nb reels =5
> vnumR TSRC[1:2];
> TSRC[1]=t;
> TSRC[2]=reversevnum(t);
> writes("%g %g\n",TSRC);
1 5
2 4
3 3
4 2
5 1
> TRES=transposevnum(TSRC);
TRES [1:5] nb elements = 5
> writes("%g %g %g %g %g\n",TRES);
1 2 3 4 5
5 4 3 2 1
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
abs( <constante ou tab. num.> )
Elle retourne la valeur absolue d'une constante si la valeur fournie est une constante.
Elle retourne un tableau de réels contenant la valeur absolue de chaque élément si la valeur fournie est un tableau numérique.
Exemple :
> abs(-2.3);
2.3
> x = 2.3;
> abs(x);
2.3
> t=-pi,pi,pi/100;
> at=abs(t);
at Tableau de reels : nb reels =200
> abs(1+i);
1.4142135623731
|
arg( <constante ou tab. num.> )
Elle retourne l'argument d'une constante si la valeur fournie est une constante.
Elle retourne un tableau de réels contenant l'argument de chaque élément si la valeur fournie est un tableau numérique.
Exemple :
> arg(i);
1.5707963267949
> arg(1+i);
0.785398163397448
> t=0,pi,pi/6;
t Tableau de reels : nb reels =7
> writes(arg(exp(i*t)));
+0.000000000000000E+00
+5.235987755982987E-01
+1.047197551196598E+00
+1.570796326794897E+00
+2.094395102393195E+00
+2.617993877991494E+00
+3.141592653589793E+00
|
real( <constante ou tab. num.> )
Elle retourne la partie réelle d'une constante si la valeur fournie est une constante.
Elle retourne un tableau de réels contenant la partie réelle de chaque élément si la valeur fournie est un tableau numérique.
Exemple :
> real(i);
0
> real(2+3*i);
2
> t=0,pi,pi/6;
t Tableau de reels : nb reels =7
> writes(real(exp(i*t)));
+1.000000000000000E+00
+8.660254037844387E-01
+5.000000000000000E-01
-0.000000000000000E+00
-4.999999999999998E-01
-8.660254037844385E-01
-1.000000000000000E+00
> real(4);
4
|
imag( <constante ou tab. num.> )
Elle retourne la partie imaginaire d'une constante si la valeur fournie est une constante.
Elle retourne un tableau de réels contenant la partie imaginaire de chaque élément si la valeur fournie est un tableau numérique.
Exemple :
> imag(i);
1
> imag(2+3*i);
3
> t=0,pi,pi/6;
> writes(real(exp(i*t)));
+1.000000000000000E+00
+8.660254037844387E-01
+5.000000000000000E-01
-0.000000000000000E+00
-4.999999999999998E-01
-8.660254037844385E-01
-1.000000000000000E+00
> imag(4);
0
|
conj( <constante ou tab. num.> )
Elle retourne le conjugué d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant le conjugué de chaque élément si la valeur fournie est un tableau numérique.
Exemple :
> conj(1+i);
(1-i*1)
> conj(3);
3
> z=vnumC[1+i:3-5*i:i];
z Tableau de complexes : nb complexes =3
> writes(conj(z));
+1.000000000000000E+00 -1.000000000000000E+00
+3.000000000000000E+00 +5.000000000000000E+00
+0.000000000000000E+00 -1.000000000000000E+00
|
erf( <réel ou tab. réel> )
Elle retourne la fonction d'erreur d'une constante si la valeur fournie est un réel.
Elle retourne un tableau numérique contenant la fonction d'erreur de chaque élément si la valeur fournie est un tableau numérique de réels.
La fonction d'erreur est définie par : erf(x) = 2/sqrt(pi) * intégral de 0 à x de exp(-t*t) dt
Exemple :
> erf(1);
0.842700792949715
> erf(0.5);
0.520499877813047
> t=-2,2;
t Tableau de reels : nb reels =5
> r=erf(t);
r Tableau de reels : nb reels =5
> writes(t,r);
-2.0000000000000000E+00 -9.9532226501895271E-01
-1.0000000000000000E+00 -8.4270079294971478E-01
+0.0000000000000000E+00 +0.0000000000000000E+00
+1.0000000000000000E+00 +8.4270079294971478E-01
+2.0000000000000000E+00 +9.9532226501895271E-01
|
erfc( <réel ou tab. réel> )
Elle retourne le complémentaire de la fonction d'erreur d'une constante si la valeur fournie est un réel.
Elle retourne un tableau numérique contenant le complémentaire de la fonction d'erreur de chaque élément si la valeur fournie est un tableau numérique de réels.
Le complémntaire de la fonction d'erreur est définie par : erfc(x) = 1 - (2/sqrt(pi) * intégrale de 0 à x de exp(-t*t) dt)
Exemple :
> erf(1);
0.842700792949715
> erf(0.5);
0.520499877813047
> t=-2,2;
t Tableau de reels : nb reels =5
> r=erf(t);
r Tableau de reels : nb reels =5
> writes(t,r);
-2.0000000000000000E+00 -9.9532226501895271E-01
-1.0000000000000000E+00 -8.4270079294971478E-01
+0.0000000000000000E+00 +0.0000000000000000E+00
+1.0000000000000000E+00 +8.4270079294971478E-01
+2.0000000000000000E+00 +9.9532226501895271E-01
|
exp( <constante ou tab. num.> )
Elle retourne l'exponentiel d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant l'exponentiel de chaque élément si la valeur fournie est un tableau numérique.
Exemple :
> exp(1.2);
3.32011692273655
> x = 1.2;
> exp(x);
3.32011692273655
> exp(2*i);
(-0.416146836547142+i*0.909297426825682)
> t=-2,2;
t Tableau de reels : nb reels =5
> r=exp(t);
r Tableau de reels : nb reels =5
> writes(t,r);
-2.000000000000000E+00 +1.353352832366127E-01
-1.000000000000000E+00 +3.678794411714423E-01
+0.000000000000000E+00 +1.000000000000000E+00
+1.000000000000000E+00 +2.718281828459045E+00
+2.000000000000000E+00 +7.389056098930650E+00
|
sqrt( <constante ou tab. num.> )
Elle retourne la racine carrée d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant la racine carrée de chaque élément si la valeur fournie est un tableau numérique.
Exemple : > x = 4; > sqrt(x); 2 > sqrt(1+i); (1.09868411346781+i*0.455089860562227) > t=0,5; t Tableau de reels : nb reels =6 > ts=sqrt(t); ts Tableau de reels : nb reels =6 > writes(t,ts); +0.000000000000000E+00 +0.000000000000000E+00 +1.000000000000000E+00 +1.000000000000000E+00 +2.000000000000000E+00 +1.414213562373095E+00 +3.000000000000000E+00 +1.732050807568877E+00 +4.000000000000000E+00 +2.000000000000000E+00 +5.000000000000000E+00 +2.236067977499790E+00 |
cos( <constante ou tab. num.> )
Elle retourne le cosinus d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant le cosinus de chaque élément si la valeur fournie est un tableau numérique.
Exemple : > cos(0.12); 0.992808635853866 > x=0; x = 0 > cos(x); >t=-pi,pi,pi/100; > at=cos(t); > cos(1+i); (0.833730025131149-i*0.988897705762865) |
sin( <constante ou tab. num.> )
Elle retourne le sinus d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant le sinus de chaque élément si la valeur fournie est un tableau numérique.
Exemple : > sin(0.12); 0.119712207288912 > x = 0.12; > sin(x); 0.119712207288912 > t=-pi,pi,pi/100; > s=sin(t); > sin(4*i); (0+i*27.2899171971277) |
tan( <constante ou tab. num.> )
Elle retourne la tangente d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant la tangente de chaque élément si la valeur fournie est un tableau numérique.
Exemple : > x = 1.2; > tan(x); 2.57215162212632 > t=-pi,pi,pi/100; > at=tan(t); > tan(-1+i); (-0.271752585319512+i*95227/87854) |
acos( <réel ou tab. réel> )
Elle retourne l'arc cosinus d'un réel si la valeur fournie est un réel.
Elle retourne un tableau de réels contenant l'arc cosinus de chaque élément si la valeur fournie est un tableau de réels.
Exemple : > acos(0.12); 1.4505064440011 > x = 0.12; > acos(x); 1.4505064440011 > t=-pi,pi,pi/100; > at=acos(t); |
asin( <réel ou tab. réel> )
Elle retourne l'arc sinus d'un réel si la valeur fournie est un réel.
Elle retourne un tableau de réels contenant l'arc sinus de chaque élément si la valeur fournie est un tableau de réels.
Exemple : > asin(0.12); 0.120289882394788 > x = 0.12; > asin(x); 0.120289882394788 > t=-pi,pi,pi/100; > at=asin(t); |
atan( <réel ou tab. réel> )
Elle retourne l'arc tangente d'un réel si la valeur fournie est un réel.
Elle retourne un tableau de réels contenant l'arc tangente de chaque élément si la valeur fournie est un tableau de réels.
Exemple : > atan(2); 1.10714871779409 > x = 2; > atan(x); 1.10714871779409 > t=-pi,pi,pi/100; > at=atan(t); |
cosh( <constante ou tab. num.> )
Elle retourne le cosinus hyperbolique d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant le cosinus hyperbolique de chaque élément si la valeur fournie est un tableau numérique.
Exemple : > cosh(0.12); 1.0072086414827 > x = 0.12; > cosh(x); 1.0072086414827 > t=-pi,pi,pi/100; > at=cosh(t); > cosh(1+i); (0.833730025131149+i*0.988897705762865) |
sinh( <constante ou tab. num.> )
Elle retourne le sinus hyperbolique d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant le sinus hyperbolique de chaque élément si la valeur fournie est un tableau numérique.
Exemple : > sinh(1.2); 1.50946135541217 > x = 1.2; > sinh(x); 1.50946135541217 > t=-pi,pi,pi/100; > s=sinh(t); > sinh(-1+3*i); (1.16344036370325+i*0.217759551622152) |
tanh( <constante ou tab. num.> )
Elle retourne la tangente hyperbolique d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant la tangente hyperbolique de chaque élément si la valeur fournie est un tableau numérique.
Exemple : > x = 1.2; > tanh(x); 0.833654607012155 > tanh(1+i); (95227/87854+i*0.271752585319512) > t=0,10; t Tableau de reels : nb reels =11 > tanh(t); |
acosh( <constante ou tab. num.> )
Elle retourne l'arc cosinus hyperbolique d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant l'arc cosinus hyperbolique de chaque élément si la valeur fournie est un tableau numérique.
Exemple :
> acosh(1.2);
0.6223625037147786
> t=1,2,0.1;
t Tableau de reels double-precision : nb reels =11
> acosh(t);
Tableau de reels double-precision : nb reels =11
|
asinh( <constante ou tab. num.> )
Elle retourne l'arc sinus hyperbolique d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant l'arc sinus hyperbolique de chaque élément si la valeur fournie est un tableau numérique.
Exemple :
> asinh(1.2);
1.015973134179692
> t=1,2,0.1;
t Tableau de reels double-precision : nb reels =11
> asinh(t);
Tableau de reels double-precision : nb reels =11
|
asinh( <constante ou tab. num.> )
Elle retourne l'arc tangente hyperbolique d'une constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant l'arc tangente hyperbolique de chaque élément si la valeur fournie est un tableau numérique.
Exemple :
> atanh(0.2);
0.2027325540540822
> t=0,1,0.1;
t Tableau de reels double-precision : nb reels =11
> atanh(t);
Tableau de reels double-precision : nb reels =11
|
atan2( <réel ou tab. réel> , <réel ou tab. réel> )
Elle retourne l'arc tangente du premier terme divisé par le deuxième terme en tenant compte du signe des arguments.
Cette notation équivaut à réaliser atan(<constante ou tab. réel> / <constante ou tab. réel>).
Exemple : > y = 11.5; > x = 14; > atan2(y,x); 0.68767125603875 |
mod( <réel ou tab. réel> , <réel ou tab. réel> )
<réel ou tab. réel> mod <réel ou tab. réel>
Elle retourne le modulo du premier terme divisé par le deuxième terme. Le résultat a le même signe que le premier argument.
Exemple : > mod(4,2); 0 > x=4$ > y=2$ > mod(x,y); 0 > t=21,30; > r=1,10; > f=mod(t,r); > g=mod(t,3); |
int( <réel ou tab. réel> )
Elle retourne la partie entiere du réel si la valeur fournie est un réel.
Elle retourne un tableau de réels contenant la partie entiere de chaque élément si la valeur fournie est un tableau de réels.
Exemple : >x=1.23; >int(x); 1 > t=-pi,pi,pi/100; > at=int(t); |
log( <constante ou tab. num.> )
Elle retourne le logarithme népérien de la constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant le logarithme népérien de chaque élément si la valeur fournie est un tableau numérique.
Exemple : > log(3); 1.09861228866811 > x = 3; > log(x); 1.09861228866811 > r=1,10; > at=log(r); > log(2+i); (0.80471895621705+i*0.463647609000806) |
log10( <constante ou tab. num.> )
Elle retourne le logarithme décimal (ou à base 10) de la constante si la valeur fournie est une constante.
Elle retourne un tableau numérique contenant le logarithme décimal de chaque élément si la valeur fournie est un tableau numérique.
Exemple : > log(3); 1.09861228866811 > x = 3; > log(x); 1.09861228866811 > r=1,10; > at=log(r); > log(2+i); (0.80471895621705+i*0.463647609000806) |
nint( <réel ou tab. réel> )
Elle retourne l'entier le plus proche du réel si la valeur fournie est un réel.
Elle retourne un tableau de réels contenant l'entier le plus proche de chaque élément si la valeur fournie est un tableau de réels.
Exemple :
> x=1.23;
x = 1.23
> nint(x);
1
> nint(1.78);
2
> t=-1,1,0.1;
t Tableau de reels : nb reels =21
> nint(t);
|
sign( <réel ou tab. réel> )
Elle retourne le signe du réel si la valeur fournie est un réel
Elle retourne un tableau de réels contenant le signe de chaque élément si la valeur fournie est un tableau de réels.
Elle est définie suivant la règle :
Exemple :
> sign(3);
1
> sign(-3);
-1
> sign(0);
0
> t=-3,3;
t Tableau de reels : nb reels =7
> writes(t,sign(t));
-3.0000000000000000E+00 -1.0000000000000000E+00
-2.0000000000000000E+00 -1.0000000000000000E+00
-1.0000000000000000E+00 -1.0000000000000000E+00
+0.0000000000000000E+00 +0.0000000000000000E+00
+1.0000000000000000E+00 +1.0000000000000000E+00
+2.0000000000000000E+00 +1.0000000000000000E+00
+3.0000000000000000E+00 +1.0000000000000000E+00
|
histogram(<tab. réel> TY, <tab. réel> TX)
Elle retourne l'histogramme de TY à partir des intervalles fournis dans TX :
TZ=histogram(TY,TX) : TZ[N] contient le nombre d'éléments de TY tel que TX[N]<=TY[j]<TX[N+1].
Pour le dernier intervalle de TX, la relation est : TX[N]<=TY[j]<=TX[N+1]
Exemple :
> TY=vnumR[0:1:4:5:6:9:10:11:-1:-2:-5]$
> TX=-3,9,2$
> writes("%g\n",TX);
-3
-1
1
3
5
7
9
> TZ=histogram(TY,TX)$
> writes("%g\n",TZ);
1
2
1
1
2
1
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
?(<condition>)
Elle retourne un tableau numérique de 0 ou de 1. Pour tous éléments de la condition : si la condition à l'indice j est vraie, alors <nom> [j]=1 sinon <nom> [j]=0
?(<condition>): <constante ou tab. num.> tabvrai : <constante ou tab. num.> tabfaux
Elle retourne un tableau numérique. Pour tous éléments de la condition : si la condition à l'indice j est vraie, alors <nom> [j]=tabvrai[j] sinon <nom> [j]=tabfaux[j]
Les tableaux doivent être de même taille.
Exemple : > t=0,5; t Tableau de reels : nb reels =6 > r=5-t; r Tableau de reels : nb reels =6 > q=?(t<=r); q Tableau de reels : nb reels =6 > writes(q); +1.000000000000000E+00 +1.000000000000000E+00 +1.000000000000000E+00 +0.000000000000000E+00 +0.000000000000000E+00 +0.000000000000000E+00 > l= ?(t<=r):i:5; l Tableau de complexes : nb complexes =6 > writes(l); +0.000000000000000E+00 +1.000000000000000E+00 +0.000000000000000E+00 +1.000000000000000E+00 +0.000000000000000E+00 +1.000000000000000E+00 +5.000000000000000E+00 +0.000000000000000E+00 +5.000000000000000E+00 +0.000000000000000E+00 +5.000000000000000E+00 +0.000000000000000E+00 > m = ?(t>2):r:t; m Tableau de reels : nb reels =6 > writes(m); +0.000000000000000E+00 +1.000000000000000E+00 +2.000000000000000E+00 +2.000000000000000E+00 +1.000000000000000E+00 +0.000000000000000E+00 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| • dimtovnumR | ||
| • dimtovnumC | ||
| • vnumtodim |
dimtovnumR( <tableau> )
Elle retourne un tableau numérique de réels à partir d'un tableau de séries.
Le tableau de séries doit contenir uniquement des nombres réels. Le tableau doit avoir une seule dimension.
Exemple : > dim ts[1:3]; > ts[1]=1$ > ts[2]=4$ > ts[3]=6$ > tr=dimtovnumR(ts)$ > writes(tr); +1.000000000000000E+00 +4.000000000000000E+00 +6.000000000000000E+00 > ltr=log(dimtovnumR(ts)); ltr Tableau de reels : nb reels =3 |
dimtovnumC( <tableau> )
Elle retourne un tableau numérique de complexes à partir d'un tableau de séries.
Le tableau de séries doit contenir uniquement des nombres complexes. Le tableau doit avoir une seule dimension.
Exemple : > dim ts[1:3]; > ts[1]=1+i$ > ts[2]=3*i$ > ts[3]=-5+i$ > tc=dimtovnumC(ts)$ > writes(tc); +1.000000000000000E+00 +1.000000000000000E+00 +0.000000000000000E+00 +3.000000000000000E+00 -5.000000000000000E+00 +1.000000000000000E+00 > ltc=exp(dimtovnumC(ts)); ltc Tableau de complexes : nb complexes =3 |
vnumtodim( <(tableau de) tab. num.> )
Elle retourne un tableau de séries (de constantes) à partir d'un (tableau de) tableau numérique.
Exemple : > tr=1,4; tr Tableau de reels : nb reels =4 > tsr=vnumtodim(tr); tsr [1:4] nb elements = 4 > afftab(tsr); tsr[1] = 1 tsr[2] = 2 tsr[3] = 3 tsr[4] = 4 > vnumC tc[1:2]; > tc[1]=i*tr$ > tc[2]=tr+i*tr**2$ > tsc=vnumtodim(tc); tsc [1:4, 1:2] nb elements = 8 > afftab(tsc); tsc[1,1] = (0+i*1) tsc[1,2] = (1+i*1) tsc[2,1] = (0+i*2) tsc[2,2] = (2+i*4) tsc[3,1] = (0+i*3) tsc[3,2] = (3+i*9) tsc[4,1] = (0+i*4) tsc[4,2] = (4+i*16) |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Les versions requises de gnuplot par TRIP sont :
Les versions requises de grace par TRIP sont :
Les commandes plot, replot, plotf, plotps, plotps_end et plotreset utilisent grace ou gnuplot suivant la valeur de la variable globale _graph (voir la section _graph).
| 10.1 plot | ||
| 10.2 replot | ||
| 10.3 plotf | ||
| 10.4 plotps | ||
| 10.5 plotps_end | ||
| 10.6 plotreset | ||
| 10.7 gnuplot | ||
| 10.8 grace |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
plot(<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY);
plot(<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) chaine> options);
Elle exécute gnuplot ou grace et trace le contenu du tableau numérique TY en fonction de TX.
La chaine ou le tableau de chaines options est directement passée à gnuplot ou à grace en argument de la commande plot.
Si la chaine options doit contenir des guillemets, il faut les doubler.
Remarque : Des fichiers temporaires sont crées mais détruits à la fin de la session.
plot(<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ);
plot(<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ, <(tableau de) chaine> options);
Elle exécute gnuplot ou grace et trace en 3D le contenu du tableau TZ en fonction de TY et de TX.
plot(<chaine> cmd, <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY);
plot(<chaine> cmd, <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) chaine> options);
Elle exécute gnuplot ou grace si nécessaire. Elle envoie à gnuplot ou à grace la commande cmd puis trace le contenu du tableau TY en fonction de TX.
plot(<chaine> cmd, <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ);
plot(<chaine> cmd, <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ, <(tableau de) chaine> options);
Elle exécute gnuplot ou grace si nécessaire. Elle envoie à gnuplot ou à grace la commande cmd puis trace en 3D le contenu du tableau TZ en fonction de TY et de TX.
plot( (<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY), ... );
plot( (<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) chaine> options), ...);
Elle exécute gnuplot ou grace et superpose les courbes de chaque couplet de tableaux en tra
plot( (<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ), ...);
plot( (<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ, <(tableau de) chaine> options), ...);
Elle exécute gnuplot ou grace et superpose les courbes de chaque triplet de tableaux en tra
plot(<chaine> cmd, ( <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY), ...);
plot(<chaine> cmd, ( <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) chaine> options), ...);
Elle exécute gnuplot ou grace si nécessaire. Elle envoie à gnuplot ou à grace la commande cmd puis trace le contenu de chaque couplet des tableaux TY en fonction de TX.
plot(<chaine> cmd, ( <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ), ...);
plot(<chaine> cmd, ( <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ, <(tableau de) chaine> options), ...);
Elle exécute gnuplot ou grace si nécessaire. Elle envoie à gnuplot ou à grace la commande cmd puis trace en 3D le contenu de chaque triplet des tableaux TZ en fonction de TY et de TX.
Exemple :
Tracer cos(x) pour x=-pi à pi avec un pas de pi/100.
> x=-pi,pi,pi/100;
x Tableau de reels : nb reels =200
> y=cos(x);
y Tableau de reels : nb reels =200
> plot(x,y);
> plot(x,y,cos(x));
> plot(x,y,"notitle w points pt 5");
> plot(x,y,"title ""x,cos(x)"" ");
> t=1,10;
t Tableau de reels : nb reels =10
> plot("set xrange[2:5]",t,log(t));
> t=0,pi,pi/100;
> vnumR ta[1:3];
> ta[1]=cos(t);
> ta[2]=sin(t);
> ta[3]=cosh(t);
> dim nom[1:3];
> nom[1]="title 'cos' w l";
> nom[2]="title 'sin' w l";
> nom[3]="title 'cosh' w l";
> plot((t,ta,nom));
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
replot(<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY);
replot(<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) chaine> options);
replot(<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ);
replot(<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ, <(tableau de) chaine> options);
replot(<chaine> cmd, <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY);
replot(<chaine> cmd, <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) chaine> options);
replot(<chaine> cmd, <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ);
replot(<chaine> cmd, <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ, <(tableau de) chaine> options);
replot( (<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY), ... );
replot( (<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) chaine> options), ...);
replot( (<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ), ...);
replot( (<(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ, <(tableau de) chaine> options), ...);
replot(<chaine> cmd, ( <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY), ...);
replot(<chaine> cmd, ( <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) chaine> options), ...);
replot(<chaine> cmd, ( <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ), ...);
replot(<chaine> cmd, ( <(tableau de) tab. réel> TX, <(tableau de) tab. réel> TY, <(tableau de) tab. réel> TZ, <(tableau de) chaine> options), ...);
Cette commande est similaire à la commande plot mais elle superpose les nouvelles courbes aux anciens tracés.
Elle utilise les mêmes arguments que la commande plot (voir la section plot).
replot;
Elle exécute gnuplot ou grace et envoie un ordre pour retracer les graphiques.
Exemple : Tracer cos(x) et sin(x) pour x=-pi à pi avec un pas de pi/100 dans la même fenêtre. > x=-pi,pi,pi/100; x Tableau de reels : nb reels =200 > y=cos(x); y Tableau de reels : nb reels =200 > y1=sin(x); y1 Tableau de reels : nb reels =200 > plot(x,y); > replot(x,y1); > plot(x,y,y1); > replot(x,y,sin(2.*x)); > replot(x,sin(x),"notitle"); > replot(x,y,"w points pt 5"); |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
plotf(<nom fichier> filename, <entier> ncolTX, <entier> ncolTY);
Elle exécute gnuplot ou grace et trace le contenu de la colonne ncolTY en fonction de ncolTX du fichier filename.
plotf(<nom fichier> filename, <entier> ncolTX, <entier> ncolTY, <entier> ncolTZ);
Elle exécute gnuplot ou grace et trace le contenu de la colonne ncolTZ en fonction de ncolTY et de ncolTX du fichier filename.
Les lignes à ignorer par gnuplot doivent commencer par un #.
Exemple : Afficher la troisieme colonne en fonction de la première colonne du fichier tab.out > plotf(tab.out,1,3); Afficher la troisieme colonne en fonction de la première et deuxième colonne du fichier tab.out > plotf(tab.out,1,2,3); |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
plotps <nom fichier> ;
Elle exécute gnuplot ou grace et met le terminal de gnuplot ou de grace en postscript.
Les tracés seront alors stockés dans le fichier postscript spécifié.
Le fichier sera dans le répertoire indiqué par _path.
Pour fermer le fichier postscript, il faut exécuter la comande plotps_end.
Exemple : Tracer cos(x) pour x=-pi à pi avec un pas de pi/100 et le stocker dans le fichier res.ps. > x=-pi,pi,pi/100; x nb elements réels =200 > y=cos(x); y nb elements réels =200 > plotps res.ps; > plot(x,y); > plotps_end; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
plotps_end;
Le fichier créé par plotps est fermé.
Pour gnuplot, elle met le terminal à sa valeur par défaut.
Remarque :
Exemple : Tracer cos(x) pour x=-pi à pi avec un pas de pi/100 et le stocker dans le fichier res.ps. > x=-pi,pi,pi/100; x nb elements réels =200 > y=cos(x); y nb elements réels =200 > plotps res.ps; > plot(x,y); > plotps_end; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
plotreset;
Elle envoie un ordre de réinitialisation à gnuplot ou grace.
Dans le cas de gnuplot, elle envoie uniquement la commande reset.
Dans le cas de grace, elle envoie la commande new suivi de redraw.
Exemple :
> _graph=grace;
_graph = grace
> t=0,10;
t Tableau de reels : nb reels =11
> plot(t,t);
> plotreset;
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
gnuplot;
<commande gnuplot>
<commande gnuplot>@<chaine> @<commande gnuplot>
%<commande trip> \
<commande trip>
end;
TRIP accepte des commandes gnuplot et les transmet à gnuplot (ligne par ligne). Gnuplot est exécuté s'il n'est pas en mémoire. Le prompt devient ‘gnuplot>’ lorsqu'il est possible de saisir des commandes gnuplot.
Lorsque le premier caractère est un %, alors le reste de la ligne est une ou plusieurs commandes trip. Cette commande trip peut se poursuivre sur plusieurs lignes, le dernier caractère doit être un \ pour indiquer que la commande se prolonge sur la ligne suivante.
Il est possible d'envoyer à gnuplot une chaine déclarée dans trip en encadrant son nom par le caractère @ .
Exemple : > gnuplot; gnuplot> plot 'tftf' using 1:3 gnuplot> set xrange[1:10] gnuplot> replot gnuplot> end$ > > > gnuplot; gnuplot> set terminal macintosh singlewin Terminal type set to 'macintosh' Options are 'nogx singlewin novertical' gnuplot> %plot(t,log(t),"notitle"); gnuplot> %replot(t,exp(t),"notitle \ w points pt 5"); gnuplot> set terminal macintosh multiwin Terminal type set to 'macintosh' Options are 'nogx multiwin novertical' > ch="title 'sinus'"; ch = "title 'sinus'" > gnuplot; gnuplot> plot sin(x) @ch@ gnuplot> end; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
grace;
<commande grace>
<commande grace>@<chaine> @<commande grace>
%<commande trip> \
<commande trip>
end;
TRIP accepte des comandes grace et les transmet à grace (ligne par ligne). Grace est exécuté s'il n'est pas en mémoire. Le prompt devient ‘grace>’ lorsqu'il est possible de saisir des commandes grace.
Lorsque le premier caractère est un %, alors le reste de la ligne est une ou plusieurs commandes trip. Cette commande trip peut se poursuivre sur plusieurs lignes, le dernier caractère doit être un \ pour indiquer que la commande se prolonge sur la ligne suivante.
Il est possible d'envoyer à grace une chaine déclarée dans trip en encadrant son nom par le symbole @ .
Exemple : > grace; grace> grace> with g0 grace> read block "/USER/toto" grace> block xy "1:2" grace> read block "/USER/toto" grace> block xy "1:3" grace> redraw grace> title "2courbes" grace> %t=1,10; t Tableau de reels : nb reels =10 grace> %msg "deux lignes\ fin deligne"; deux lignesfin deligne grace> end; > > |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
TRIP offre différents outils de communications :
| 11.1 Maple | ||
| 11.2 Communications avec les autres systemes de calcul formel | ||
| 11.3 Librairie dynamique |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
TRIP communique avec d'autres logiciels de calculs formels sur le même ordinateur. Ceux-ci doivent être capable d'importer et d'exporter leurs calculs sous le format MathML 2.0.
Actuellement, TRIP communique avec Maple(1) sur tous les systèmes d'exploitation acceptant Maple.
La version requise de maple par TRIP est 7 ou ultérieur.
| 11.1.1 maple_put | ||
| 11.1.2 maple_get | ||
| 11.1.3 maple |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
maple_put( <identificateur> id);
Elle envoie l'identificateur à la session maple. Si celui-ci n'est pas exécuté, il est démarré.
Exemple :
> s=1+x;
s(x) = 1 + 1*x
> maple_put(s);
> maple;
maple>
maple> s;
x + 1
maple> end;
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
maple_get( <identificateur> id);
Elle récupère la valeur de l'identificateur depuis la session maple.
Exemple :
> maple;
maple>
maple> s:=1+y;
s := 1 + y
maple> end;
> maple_get(s);
> s;
1 + 1*y
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
maple;
<commande maple>
%<commande trip> \
<commande trip>
end;
TRIP accepte des comandes maple et les transmet à maple (ligne par ligne). maple est exécuté s'il n'est pas en mémoire. Le prompt devient ‘maple>’ lorsqu'il est possible de saisir des commandes maple.
Lorsque le premier caractère est un %, alors le reste de la ligne est une ou plusieurs commandes trip. Cette commande trip peut se poursuivre sur plusieurs lignes, le dernier caractère doit être un \ pour indiquer que la commande se prolonge sur la ligne suivante.
L'envoi et la récupération d'objets (séries, vecteurs, ...) s'effectue avec les fonctions maple_get et maple_put.
Exemple :
> maple;
maple>
maple> s:=gcd((x+1)*(x-1),(x-1));
s := x - 1
maple> %maple_get(s);
maple> %s;
s(x) = -1 + 1*x
maple> end;
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
TRIP communique avec d'autres logiciels de calculs formels sur le même ordinateur ou distant. Ceux-ci doivent être compatible avec le protocole SCSCP "Symbolic Computation Software Composability Protocol" version 1.3 (http://www.symbolic-computation.org/). Il supporte notamment les symboles OpenMath définis dans les dictionnaires scscp1 (http://www.win.tue.nl/SCIEnce/cds/scscp1.html) et scscp2 (http://www.win.tue.nl/SCIEnce/cds/scscp2.html). La liste des dictionaires OpenMath supportés par TRIP est donnée en annexe (voir la section Dictionnaires OpenMath).
Plusieurs connexions peuvent être ouverte en même temps. TRIP peut fonctionner en mode client ou serveur.
Avant d'utiliser ce module de communications, vous devez exécuter dans la session trip la commande suivante. Elle définit et exécute un large ensemble de macros contenant la définition de symboles OpenMath.
|
| 11.2.1 serveur SCSCP | ||
| 11.2.2 client SCSCP |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Le démarrage du serveur SCSCP de TRIP s'effectue en utilisant les instructions suivantes dans une session TRIP :
|
La valeur de la variable du port peut être changée. La valeur par défaut est 26133 pour les serveurs SCSCP.
Les variables globales de TRIP, telle que _modenum, peut ainsi être modifiées avant de démarrer le serveur SCSCP.
Le fichier libscscpserver.t exporte un certain nombre de symboles des dictionnaires OpenMath.
De nouveaux symboles peuvent être exportées pour ajouter des fonctionnalités au serveur SCSCP ou du client SCSCP.
Pour cela, il faut utiliser la fonction scscp_map_macroassymbolcd qui est défini dans le fichier libscscpserver.t.
scscp_map_macroassymbolcd(<chaine> macroname, <chaine> cdname, <chaine> symbolname );
Elle associe au symbole symbolname du dictionnaire cdname à la macro macroname. Lorsque ce symbole sera rencontré par le serveur SCSCP ou le client SCSCP dns un message echangé, alors la macro sera exécutée.
Exemple :
include libscscpserver.t;
_modenum=NUMRATMP;
macro myscscp_evalmul[P1, P2, value]
{
t=value,value;
q=evalnum(P1*P2,REAL, (x,t));
return q[1];
};
scscp_map_macroassymbolcd("myscscp_evalmul",
"SCSCP_transient_1","scscp_muleval");
%scscp_runserver[26133];
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
TRIP peut communiquer avec d'autres logiciels de calculs formels fournissant un serveur SCSCP.
| 11.2.2.1 scscp_connect | ||
| 11.2.2.2 scscp_close | ||
| 11.2.2.3 scscp_put | ||
| 11.2.2.4 scscp_get | ||
| 11.2.2.5 scscp_delete | ||
| 11.2.2.6 scscp_execute |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
scscp_connect(<chaine> computername, <entier> port );
Elle se connecte au calcul formel distant sur le port de la machine spécifiée. Cette fonction retourne un objet gérant cette connexion et à fournir aux autre fonctions.
Exemple :
> include libscscpserver.t;
Loading the SCSCP client/server library...
Registering the OpenMath CD...
> port=26133;
port = 26133
> sc=scscp_connect("localhost", port);
sc = client SCSCP connecte au serveur SCSCP localhost
> scscp_close(sc);
> stat(sc);
client SCSCP sc : deconnecte
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
scscp_close(<client scscp> sc );
Elle ferme la connexion au calcul formel distant spécifié par sc.
Exemple :
> include libscscpserver.t;
Loading the SCSCP client/server library...
Registering the OpenMath CD...
> port=26133;
port = 26133
> sc=scscp_connect("localhost", port);
sc = client SCSCP connecte au serveur SCSCP localhost
> scscp_close(sc);
> stat(sc);
client SCSCP sc : deconnecte
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
scscp_put( <client scscp> sc, <opération> x );
scscp_put( <client scscp> sc, <opération> x, <chaine> storeoption );
Elle envoie l'identificateur x au calcul formel distant spécifié par le client scscp sc,précédemment ouvert avec scscp_connect.
Cette fonction retourne un objet distant.
Si storeoption n'est pas spécifié, alors sa valeur est "persistent".
Les valeurs possibles de storeoption sont :
Exemple :
> include libscscpserver.t;
Loading the SCSCP client/server library...
Registering the OpenMath CD...
> port=26133;
port = 26133
> sc=scscp_connect("localhost", port);
sc = client SCSCP connecte au serveur SCSCP localhost
> r=1+x;
r(x) =
1
+ 1*x
> remoter=scscp_put(sc, r);
remoter = objet distant "TempOID1@localhost:26133"
> scscp_close(sc);
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
scscp_get( <objet distant> remoteobjectid );
Elle récupère la valeur de l'identificateur remoteobjectid situé sur le système de calcul formel distant précédemment stocké par scscp_put.
Exemple :
> include libscscpserver.t;
Loading the SCSCP client/server library...
Registering the OpenMath CD...
> port=26133;
port = 26133
> sc=scscp_connect("localhost", port);
sc = client SCSCP connecte au serveur SCSCP localhost
> s=(1+x+y)**2;
s(x,y) =
1
+ 2*y
+ 1*y**2
+ 2*x
+ 2*x*y
+ 1*x**2
> remoteS = scscp_put(sc, s);
remoteS = objet distant "TempOID1@localhost:26133"
> q=scscp_get(remoteS);
q(x,y) =
1
+ 2*y
+ 1*y**2
+ 2*x
+ 2*x*y
+ 1*x**2
> scscp_close(sc);
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
scscp_delete( <objet distant> remoteobjectid );
Elle détruit la valeur de l'identificateur remoteobjectid situé sur le système de calcul formel distant précédemment stocké par scscp_put.
Exemple :
> include libscscpserver.t;
Loading the SCSCP client/server library...
Registering the OpenMath CD...
> port=26133;
port = 26133
> sc=scscp_connect("localhost", port);
sc = client SCSCP connecte au serveur SCSCP localhost
> s=(1+x+y)**2;
s(x,y) =
1
+ 2*y
+ 1*y**2
+ 2*x
+ 2*x*y
+ 1*x**2
> remoteS = scscp_put(sc, s);
remoteS = objet distant "TempOID1@localhost:26133"
> delete(remoteS);
> scscp_close(sc);
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
scscp_execute( <client scscp> sc, <chaine> returnoption , <chaine> CDname , <chaine> remotecommand , <opération> , ... );
Elle exécute la commande remotecommand sur le calcul formel distant spécifié par sc. Les arguments de la fonction sont spécifiées après la commande.
Les valeurs possibles de returnoption sont :
Exemple :
> include libscscpserver.t;
Loading the SCSCP client/server library...
Registering the OpenMath CD...
> port=26133;
port = 26133
> sc=scscp_connect("localhost", port);
sc = client SCSCP connecte au serveur SCSCP localhost
> q = scscp_execute(sc,"return", "SCSCP_transcient_1", "SCSCP_MUL", 1+7*x,2+3*x);
q(x) =
2
+ 17*x
+ 21*x**2
> qr = scscp_execute(sc,"cookie", "SCSCP_transcient_1", "SCSCP_MUL", 1+7*x,2+3*x);
qr = objet distant "TempOID6@localhost:26133"
> scscp_close(sc);
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
TRIP peut charger une librairie dynamique et exécuter les fonctions de celle-ci. Les librairies dynamiques ont pour extension .so, .dll, .dylib suivant les systèmes d'exploitation. Cependant, il doit connaitre les synopsis des fonctions à exécuter pour convertir correctement les arguments.
| 11.3.1 extern_function | ||
| 11.3.2 extern_lib | ||
| 11.3.3 extern_type | ||
| 11.3.4 extern_display |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
extern_function( <nom fichier> filelib, <chaine> declfunc);
extern_function( <nom fichier> filelib, <chaine> declfunc, <chaine> declinout);
Elle charge la librairie dynamique filelib en ajoutant l'extension spécifique au système d'exploitation et vérifie la présence de la fonction dans cette librairie. L'appel à la fonction se fait ensuite comme une fonction standard de trip.
Elle vérifie la validité du synopsis de la fonction spécifiée par declfunc. Ce synopsis doit être écrit en langage C. Cette fonction peut très bien codé dans un autre langage (fortran, ...).
Si une librairie dynamique dépend d'autres librairies dynamiques, il faut appeler auparavant la commande extern_lib pour chacune de ses librairies.
Par défaut, tous les arguments sont en entrée seule. Pour indiquer que des arguments sont en entré-sortie, il faut le spécifier dans la chaine declinout. Elle doit contenir autant d'élément que la fonction. Chaque élément est s'eparé par une virgule. Un élément peut avoir les valeurs suivantes :
Pour les paramètres en sortie, il faut fournir un identificateur pour récupérer la valeur lors de l'appel.
Remarque : Les fonctions ne doivent pas contenir des structures ou des types dérivés.
Exemple :
> extern_function("libm", "double j0(double);");
> r = j0(0.5);
r = 0.9384698072408129
|
Exemple :
/* Appel de sa propre librairie libtest1 contenant test1.c */
> !"cat test1.c";
#include <math.h>
double mylog1p(double x)
{
return log1p(x);
}
void mylog1parray(double tabdst[], double tabsrc[], int n)
{
int i;
for(i=0; i<n; i++) tabdst[i]=log1p(tabsrc[i]);
}
>
> extern_function(libtest1,"double mylog1p(double x);");
> mylog1p(10);
2.39789527279837
> log(11);
2.39789527279837
> extern_function(libtest1,
"void mylog1parray(double tabdst[], double tabsrc[], int n);",
"inout,in,in");
> t=1,10;
t Tableau de reels : nb reels =10
> vnumR res; resize(res,10);
> mylog1parray(res,t,10);
> writes(t,res);
+1.0000000000000000E+00 +6.9314718055994529E-01
+2.0000000000000000E+00 +1.0986122886681098E+00
+3.0000000000000000E+00 +1.3862943611198906E+00
+4.0000000000000000E+00 +1.6094379124341003E+00
+5.0000000000000000E+00 +1.7917594692280550E+00
+6.0000000000000000E+00 +1.9459101490553132E+00
+7.0000000000000000E+00 +2.0794415416798357E+00
+8.0000000000000000E+00 +2.1972245773362196E+00
+9.0000000000000000E+00 +2.3025850929940459E+00
+1.0000000000000000E+01 +2.3978952727983707E+00
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
extern_lib( <nom fichier> filelib);
Elle charge la librairie dynamique filelib en ajoutant l'extension spécifique (.dll, .so, .dylib) au système d'exploitation. Cette fonction est utilisée pour charger des librairies qui sont utilisées par d'autres librairies.
Exemple :
> extern_lib("libm");
> extern_function("libm", "double j0(double);");
> r = j0(0.5);
r = 0.9384698072408129
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
extern_lib( <chaine> type);
Elle déclare le type externe type. Les fonctions externes pourront utiliser ou retourner des pointeur des objets de ce type.
Exemple :
> extern_type("t_calcephbin");
> extern_function("libcalceph",
"t_calcephbin* calceph_open(const char *filename);");
> eph = calceph_open("inpop06c_m100_p100_littleendian.dat");
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
extern_display;
Elle affiche la liste des types et fonctions externes préalablement déclarées par extern_function ou extern_type.
Exemple :
> extern_function("libm", "double j0(double);");
> extern_function("libm", "double j1(double);");
> extern_display;
Liste des fonctions externes :
j1
j0
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 12.1 Declaration | ||
| 12.2 Execution | ||
| • return | ||
| 12.3 Liste des macros | ||
| 12.4 Affichage du code | ||
| 12.5 Effacement | ||
| 12.6 Comment redefinir une macro ? | ||
| 12.7 Comment sauver une macro ? |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
macro <nom> [ <liste_parametres> ] { <corps> };
macro <nom> { <corps> };
MACRO <nom> [ <liste_parametres> ] { <corps> };
MACRO <nom> { <corps> };
Elle déclare une macro avec 0 ou plusieurs paramètres et un corps de code trip.
La liste des paramètres est séparée par une virgule. Les paramètres sont des noms. Il n'y a aucune limitation en nombre de paramètres. Les macros admettent la récursivite mais il existe une limite (souvent 70 fois).
Le dernier paramètre peut être ... qui indique que la macro peut recevoir un ou plusieurs arguments optionnels lors de son appel.
L'acc`es à chacun de ces arguments optionnels se fait par le mot clé macro_optargs[].
Pour accécder a l'argument optionnel d'indice j, il suffit d'écrire : macro_optargs[j].
Pour connaitre le nombre d'aguments optionnels fournis, il faut utiliser la fonction size(macro_optargs).
La macro peut retourner une valeur en utilisant return.
Une macro peut être arrêter immédiatement en utilisant la commande stop (voir la section stop).
La macro peut définir des identificateurs locaux, Voir la section Visibilite.
Remarque : Les paramètres sont des identificateurs. Ceci n'est pas autorisé: ‘> macro c[n,t[n]]{....};’
L'exemple suivant presente l'écriture d'une macro a qui affecte à r l'addition de x et de y. x et y sont passés en argument. La macro b affiche le contenu du répertoire courant.
Exemple :
> macro a [x,y]
{r = x+y;};
> macro b { ! "ls";};
> macro macvar[x,y,...]
{
s=x+y;
l = size(macro_optargs);
msg("number of optional argument %g\n", l);
for j=1 to l { msg("The optional argument %g :", j); macro_optargs[j]; };
};
> %macvar[P1,P2];
s(P1,P2) =
1*P2
+ 1*P1
l = 0
number of optional argument 0
> %macvar[P1,P2,"arg1", 3,5, 7];
s(P1,P2) =
1*P2
+ 1*P1
l = 4
number of optional argument 4
The optional argument 1 :macro_optargs[1] = "arg1"
The optional argument 2 :macro_optargs[2] = 3
The optional argument 3 :macro_optargs[3] = 5
The optional argument 4 :macro_optargs[4] = 7
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
% <nom> [ <liste_parametres> ];
% <nom> ;
Elle exécute une macro. La liste des paramètres est une liste de paramètres séparés par des virgules.
Ces paramètres peuvent être des identificateurs, des séries (resultat de calcul), des chaines, des tableaux ou des vecteurs numeriques.
Le passage des paramètres s'effectue par valeur ou par référence.
Le passage par valeur est possible uniquement pour le resultat de calcul, de chaine et de tableaux numériques, de tableaux.
Le passage par référence est possible pour tout identificateur ou élément de tableau. Pour cela, il faut l'encadrer par des crochets supplémentaires []. Dans ce cas, l'identificateur peut être modifié pendant l'exécution de la macro.
Elle retourne une valeur si la commande return a été exécutée dans le corps de cette macro.
Une macro peut être arrêter immédiatement en utilisant la commande stop (voir la section stop).
On veut exécuter notre macro a et b:
Exemple :
> %a[1,5+3*6];
/*ou si S = x + y*/
> %a[S,5];
>%b;
>%c[[t],[u[5]],1+x];
Usage des chaines de caractères:
> macro nomfichier[name,j] {msg name + str(j);};
> %nomfichier["file_",2];
file_2
> ch="file_1.2.";
ch = "file_1.2."
> %nomfichier[ch,3];
file_1.2.3
>
|
Remarque : Il faut noter que les paramètres (x,y,...) gardent leur valeur propre. Pour passer une expression, il ne faut pas l'encardrer par des [].
Exemple :
- Si x vaut z et que l'on applique la macro a, une fois la macro
exécutée, x vaudra z. Alors que si x n'est pas défini, sa valeur
sera celle qu'il avait à la fin de l'exécution de la macro.
Exemple :
Si on veut ajouter à 'S' la variable 'x':
> %a[S,[x]];
et on aura r(x,y) = 1*y + 2*x
- Déclaration d'une matrice. L'identificateur R1 n'existe pas.
/*creation d'une matrice */
>macro matrix_create[_nom, _nbligne, _nbcol]
{
dim _nom[0:_nbligne, 0: _nbcol];
for iligne=1 to _nbligne {
for icol=1 to _nbcol {_nom[iligne,icol]=0$};};
/*met le nb de ligne en 0,0 et met le nb de col en 0,1 */
_nom[0, 0]=_nbligne$
_nom[0, 1]=_nbcol$
};
>%matrix_create[[R1],n,3];
Le tableau sera alors crée et initialise.
En sortie de la macro, _nom, _nbligne, _nbcol n'existeront plus.
|
return (<opération> );
return <opération> ;
Retourne le resultat d'une opération lorsque la macro est exécutée.
Exemple :
>macro a {x=1+y;};
>b=%a;
1 + 1*y
TRIP[1]:return absent dans la macro.
maintenant si on fait:
>macro a {x=1+y; return(x);};
>b=%a;
1 + 1*y
b(y) = 1 + 1*y
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
@;
Affiche la liste des macros en mémoire
Exemple : > @; Voici le nom des macros que je connais: a [x ,y ] b |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
affmac <macro>;
Affiche le corps (code trip) de la macro.
Exemple : > affmac b; mon nom est : b !"ls"; |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| • effmac | ||
| • effmacros |
effmac <macro>;
Efface une macro.
Exemple :
> macro a[x] { return (x*2);};
> @;
Voici le nom des macros que je connais :
a [ x]
> effmac a;
> @;
je ne connais aucune macro
|
effmacros;
Efface toutes les macros en mémoire.
Exemple :
> macro a[x] { return (x*2);};
> macro b {!"ls";};
> @;
Voici le nom des macros que je connais :
a [ x]
b []
> effmacros;
> @;
je ne connais aucune macro
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
On procède comme si on écrivait une nouvelle macro en utilisant la commande
macro.
Exemple :
> macro a [n] {n;};
> @;
Voici le nom des macros que je connais:
a [n ]
> affmac a;
mon nom est : a
n;
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Pour sauver sur disque des macros, la meilleure façon, pour l'instant, est d'utiliser un editeur de textes du type vi, emacs, nedit. Les fichiers contenant du code trip doivent si possible se terminer par .t .
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 13.1 boucles | ||
| 13.2 condition |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 13.1.1 while | ||
| 13.1.2 for | ||
| 13.1.3 sum | ||
| 13.1.4 stop |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
while (<condition> ) do { <corps> };
Elle exécute le corps tant que la condition est vraie.
La boucle while permet d'être plus souple que la boucle for dans le fait que l'on peut en sortir quand on veut.
Une boucle while peut être arrêter immédiatement en utilisant la commande stop.
Pour la description de la condition, Voir la section condition.
La boucle peut contenir des identificateurs locauxqui seront détruits à la fin de chaque itération, Voir la section Visibilite.
Exemple :
On veut afficher tous les nombres de 1 à n:
> p=1$
> while(p<=5) do {p;p=p+1$};
p = 1
p = 2
p = 3
p = 4
p = 5
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
for <nom> = <réel> to <réel> { <corps> };
for <nom> = <réel> to <réel> step <réel> { <corps> };
Elle exécute la boucle "pour jusqu'à" (identique au boucle for du pascal ou du C ou fortran).
L'argument après step est le pas de la boucle.
Une boucle for peut être arrêter immédiatement en utilisant la commande stop.
La boucle peut contenir des identificateurs locaux qui seront détruits à la fin de chaque itération, Voir la section Visibilite. Remarque :
Exemple :
>for p = 1 to 5 step(2) {p;};
1
3
5
>for p = 5 to -1 step(-2) {p;};
5
3
1
-1
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
sum <nom> = <réel> to <réel> { <corps> };
sum <nom> = <réel> to <réel> step <réel> { <corps> };
Elle exécute la boucle "somme jusqu'à". Elle remplace la boucle for du type "s=0$ for j=1 to n { s=s+...$}".
La valeur retournée par la commande return est utilisée pour la somme.
L'argument après step est le pas de la boucle.
Une boucle sum peut être arrêter immédiatement en utilisant la commande stop.
La boucle peut contenir des identificateurs locaux qui seront détruits à la fin de chaque itération, Voir la section Visibilite.
Remarque :
Exemple :
> s=sum j=1 to 5 { return j; };
s = 15
> s=sum j=1 to 10 step 2 {
a=3*j$
if (mod(j,2)==0) then { return a; } else { return -a; };
};
s = -75
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
stop;
Cette commande arrête l'exécution d'une boucle for, while ou d'une macro.
Remarque : si stop se situe en dehors d'une boucle for, while ou d'une macro, un message d'avertissement est affiché mais l'exécution continue.
Exemple :
for p = 1 to 5 { if (p>3) then {stop;} fi; p;};
1
2
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 13.2.1 if | ||
| 13.2.2 operateur de comparaison | ||
| 13.2.3 switch |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
if (<condition>) then { <corps> };
if (<condition>) then { <corps> } else { <corps> };
if (<condition>) then { <corps> } fi; (obsolete statement)
TRIP exécute le premier corps de programme si la condition est vraie. Le second corps est exécuté si celui-ci est présent et la condition est fausse.
Exemple :
> if (n == 2) then {msg "VRAI";} else {msg"FAUX";};
FAUX
> n=2;
2
> if (( n >= 0) && (n < 3)) then {msg "VRAI";} else
{msg "FAUX";};
VRAI
|
Remarque : Il faut faire attention à ce que tous les identificateurs soient initialisées avant de faire un test. Car sinon, il identifie le parametre n à une variable, et le résultat du test est donc FAUX.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
<opération> != <opération>
Ce test retourne vrai si les deux opérations sont différentes.
Remarque : ce test se fait aussi sur les polynômes.
<tab. réel> != <tab. réel>
Ce test peut s'utiliser avec l'opérateur ?:: (voir la section Conditions) ou la commande select (voir la section Extraction). Il retourne un tableau numérique de 0 et 1.
Il compare terme à terme les éléments des deux tableaux. Les tableaux de réels doivent être de même taille.
Exemple :
>if(n != 2) then {} else {};
Condition entre deux tableaux
> t = 0,10;
> r = 10,0,-1;
> q = ?(t!=r);
> q = ?(t!=5);
|
<opération> == <opération>
Ce test retourne vrai si les deux opérations sont égales.
Remarque : ce test se fait aussi sur les polynômes.
<tab. réel> == <tab. réel>
Ce test peut s'utiliser avec l'opérateur ?:: (voir la section Conditions) ou la commande select (voir la section Extraction). Il retourne un tableau numérique de 0 et 1.
Il compare terme à terme les éléments des deux tableaux. Les tableaux de réels doivent être de même taille.
Exemple :
>if(n == 2) then {} else {};
Condition entre deux tableaux
> t = 0,10;
> r = 10,0,-1;
> q = ?(t==r);
> q = ?(t==5);
|
<réel> < <réel>
Ce test retourne vrai si le premier réel est sctritement inférieur au second réel.
<tab. réel> < <tab. réel>
Ce test peut s'utiliser avec l'opérateur ?:: (voir la section Conditions) ou la commande select (voir la section Extraction). Il retourne un tableau numérique de 0 et 1.
Il compare terme à terme les éléments des deux tableaux. Les tableaux de réels doivent être de même taille.
Exemple :
>n=3$
>if(n < 2) then {} else {};
Condition entre deux tableaux
> t = 0,10;
> r = 10,0,-1;
> q = ?(t<r);
> q = ?(t<5);
|
<réel> > <réel>
Ce test retourne vrai si le premier réel est strictement supérieur au second réel.
<tab. réel> > <tab. réel>
Ce test peut s'utiliser avec l'opérateur ?:: (voir la section Conditions) ou la commande select (voir la section Extraction). Il retourne un tableau numérique de 0 et 1.
Il compare terme à terme les éléments des deux tableaux. Les tableaux de réels doivent être de même taille.
Exemple :
>n=3$
>if(n > 2) then {} else {};
Condition entre deux tableaux
> t = 0,10;
> r = 10,0,-1;
> q = ?(t>r);
> q = ?(t>5);
|
<réel> <= <réel>
Ce test retourne vrai si le premier réel est inférieur ou égal au second réel.
<tab. réel> <= <tab. réel>
Ce test peut s'utiliser avec l'opérateur ?:: (voir la section Conditions) ou la commande select (voir la section Extraction). Il retourne un tableau numérique de 0 et 1.
Il compare terme à terme les éléments des deux tableaux. Les tableaux de réels doivent être de même taille.
Exemple :
>n=3$
>if(n <= 2) then {} else {};
Condition entre deux tableaux
> t = 0,10;
> r = 10,0,-1;
> q = ?(t<=r);
> q = ?(t<=5);
|
<réel> >= <réel>
Ce test retourne vrai si le premier réel est supérieur ou égal au second réel.
<tab. réel> >= <tab. réel>
Ce test peut s'utiliser avec l'opérateur ?:: (voir la section Conditions) ou la commande select (voir la section Extraction). Il retourne un tableau numérique de 0 et 1.
Il compare terme à terme les éléments des deux tableaux. Les tableaux de réels doivent être de même taille.
Exemple :
>n=3$
>if(n >= 2) then {} else {};
Condition entre deux tableaux
> t = 0,10;
> r = 10,0,-1;
> q = ?(t>=r);
> q = ?(t>=5);
|
(<condition>) && ( <condition> )
Ce test retourne vrai si les deux conditions sont vraies.
Il s'applique au tableau numérique lors de l'utilisation de l'opérateur ?:: (voir la section Conditions) ou la commande select (voir la section Extraction). Les tableaux numériques doivent être de même taille.
Exemple :
>if ((x==2)&&(y==3)) then {} else {};
Exemple sur des tableaux numériques
> t=0,10;
t Tableau de reels : nb reels =11
> r=10,0,-1;
r Tableau de reels : nb reels =11
> q=?((t>r) && (t!=5));
q Tableau de reels : nb reels =11
|
(<condition>) || ( <condition>)
Ce test retourne vrai si l'une des deux conditions est vraie.
Il s'applique au tableau numérique lors de l'utilisation de l'opérateur ?:: (voir la section Conditions) ou la commande select (voir la section Extraction). Les tableaux numériques doivent être de même taille.
Exemple :
>if ((x==2)||(y==3)) then {} else {};
Exemple sur des tableaux numériques
> t=0,10;
t Tableau de reels : nb reels =11
> r=10,0,-1;
r Tableau de reels : nb reels =11
> q=?((t>r) || (t!=5));
q Tableau de reels : nb reels =11
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
switch ( <opération> expr )
{
case <opération> : { <corps> };
case <opération> , ..., <opération> : { <corps> };
else { <corps> }
};
L'instruction switch permet de faire plusieurs tests de valeurs sur le contenu d'une même opération.
expr peut être une chaine, une série, ou une constante numérique. La valeur de expr est testée successivement avec chacune des valeurs des case avec l'opérateur ==.
Lorsque l'expression testée est égale à une des valeurs suivant un case,
la liste d'instructions qui suit celui-ci est exécutée. Le mot-clé else précède la liste d'instructions qui sera exécutée
si l'expression n'est jamais égale à une des valeurs. L'expression else { <corps> }; est optionnel et n'a pas de point-virgule après son corps.
Exemple :
n=0;
z=0;
j=5;
switch( j )
{
case -1 : { n=n+1; };
case 0,1 : { z=z+1; };
case "mystring" : { msg "j is a string"; };
else { msg "j is invalid"; }
};
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 14.1 Analyse en frequence | ||
| 14.2 Transformee de Fourier | ||
| 14.3 Transformee de Fourier Inverse | ||
| 14.4 Integration numerique | ||
| 14.5 Integral | ||
| 14.6 Iteration numerique | Iteration. | |
| 14.7 Interpolation |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| 14.1.1 naf | ||
| 14.1.2 naftab | ||
| 14.1.3 freqa | ||
| 14.1.4 freqareson | ||
| 14.1.5 sertrig |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
naf(KTABS, fichiersource, fichierresultat, XH, T0, NTERM, CX, CY);
avec :
Elle effectue l'analyse en fréquence des données du fichier source et stocke les fréquences dans fichierresultat.sol. Elle utilise KTABS+1 données.
KTABS est arrondi à la plus proche valeur inférieure telle que KTABS = 6n avec n entier naturel positif.
Les paramètres utilisés sont stockés dans fichierresultat.par.
Les resultats intermédiaires sont stockés dans fichierresultat.prt si _naf_iprt>=0.
Elle emploie les variables globales _naf_nulin, _naf_iprt, _naf_isec, _naf_iw, _naf_dtour, _naf_icplx.
Le fichier fichierresultat.sol contient:
Exemple :
Le fichier "tessin.out" contient des données
sur 32996 lignes avec une ligne d'entete.
tels que la colonne 2 contient la partie réelle des données.
la colonne 3 contient la partie imaginaire des données.
la première ligne du fichier est à ignorer.
Le temps initial est 0 et le pas est de 0.01.
Nous recherchons 10 frequences.
Le fichier resultat à pour nom "tesnaf".
> _naf_nulin=1;
> naf(32996,tessin.out, tesnaf, 0.01, 0, 10, 2, 3);
Le premier argument de naf n'est pas multiple de 6.
Le premier argument de naf devient 32994.
Les frequences trouvees sont sauves dans le fichier :tesnaf.sol
Les paramètres employees sont sauves dans le fichier :tesnaf.par
Le fichier tesnaf.par contient :
NOMFPAR = tesnaf.par
NOMFOUT =
NOMFDAT = tessin.out
NOMFSOL = tesnaf.sol
DTOUR = 6. 83185307179586E+00
T0 = 0.000000000000000E+00
XH = 1.000000000000000E-02
KTABS = 32994
DNEPS = 1.000000000000000E+100
NTERM = 10
ICPLX = 1
IW = 1
ISEC = 1
NULIN = 1
ICX = 2
ICY = 3
IPRNAF = -1
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
naftab(TX, TY, A, F, KTABS, XH, T0, NTERM);
naftab(TX, TY, A, F, KTABS, XH, T0, NTERM, TRESX, TRESY);
naftab(TX, TY, A, F, KTABS, XH, T0, NTERM, TRESX, TRESY, (FMIN1, FMAX1, NTERM1),...);
avec :
Elle effectue l'analyse en fréquence des données du tableau (TX+i*TY) et stocke les fréquences dans F et les amplitudes complexes dans A.
KTABS est arrondi à la plus proche valeur inférieure telle que KTABS = 6n+1 avec n entier naturel positif.
Elle emploie les variables globales _naf_isec, _naf_iw, _naf_dtour, _naf_icplx
.
elle recherche une approximation de TX+iTY sous la forme somme de l=0 à size(F) { A[l]*exp(i*F[l]*t) }
Dans ce cas, A est un vecteur numérique de complexes ( <tab. complexe> ).
Les triplets (FMINx, FMAXx, NTERMx) définissent une fenêtre. Seules les fréquences dans ces fenêtres sont recherchées.
Exemple :
Le fichier "tessin.out" contient des données
sur 32998 lignes avec une ligne d'entete.
tels que la colonne 2 contient la partie réelle des données.
la colonne 3 contient la partie imaginaire des données.
Le temps initial est 0 et le pas est de 0.01.
Nous recherchons 10 frequences.
> vnumR X,Y,F;
vnumC A;
read(tessin2.out, [1:32000],(X,2),(Y,3));
naftab(X,Y,A,F,32000,0.01, 0, 10);
B=abs(A);
Le premier argument de naf n'est pas multiple de 6.
Le premier argument de naf devient 31998.
CORRECTION DE IFR = 1 AMPLITUDE = 8.72192e-07
B Tableau de reels : nb reels =6
> writes(F,B,A);
+9.999993149794888E-02 +1.000000E-01 +1.000E-01 +1.095970178673141E-06
-2.000000944035095E-01 +9.999999E-03 +9.999E-03 +1.312007532388499E-07
+3.000000832689856E-01 +1.000000E-03 +1.000E-03 -1.403292661135361E-08
-4.000000970924361E-01 +9.999995E-05 +9.999E-05 +1.695880029074994E-09
+4.999999805039361E-01 +1.000003E-05 +1.000E-05 +3.216502329016007E-11
-5.999999830866213E-01 +9.999979E-07 +9.999E-07 -1.796078221829677E-12
>
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
freqa(TFREQ, TFREQREF, TABCOMBI, TINDIC, ORDREMAX, EPSILON, TFREQRESIDU)
avec :
Elle recherche pour chaque fréquence du tableau TFREQ une combinaison entière des fréquences fondamentales contenues dans TFREQREF avec une précision EPSILON et un ordre maximal de recherche ORDREMAX. Pour chaque fréquence de TFREQ, la recherche s'arrête dès qu'une combinaison est trouvée. La recherche s'effectue par ordre total croissant.
Si la combinaison est trouveé, alors
Si la combinaison n'est pas trouvée, alors
En sortie, TABCOMBI est un tableau de size(TFREQREF) tableaux de size(TFREQ) entiers,
TINDIC est un tableau de size(TFREQ) entiers (0/1),
<=
TFREQRESIDU est un tableau de size(TFREQ) réels.
En sortie, tous les éléments de TABCOMBI vérifient
1<=sum(abs(TABCOMBI[i][]))<=ORDREMAX.
Exemple : > freqfond=1,5; > freqfond[1]=3.1354; > freqfond[2]=5.452; > freqfond[3]=7.888; > freqfond[4]=11.111; > freqfond[5]=19.777; > freq=1,5; > freq=freq*freqfond[1]+freq*freqfond[2]+freq*freqfond[3]+ > freq*freqfond[4]+freq*freqfond[5]; > freqa(freq,freqfond,tabcomb, tabind,20,1E-6, freqres); > %writesfreqa[[freq],[freqfond],[tabcomb],[tabind] , [freqres]]; > freqfond[1] = 15677/5000 > freqfond[2] = 1363/250 > freqfond[3] = 986/125 > freqfond[4] = 11111/1000 > freqfond[5] = 19777/1000 Frequence Frequence residuelle combinaison ------------------------------------------------------------------- 4.736340000000000E+01 +0.000000000000000E+00 1 1 1 1 1 9.472680000000000E+01 +0.000000000000000E+00 2 2 2 2 2 1.420902000000000E+02 +0.000000000000000E+00 3 3 3 3 3 1.894536000000000E+02 +0.000000000000000E+00 4 4 4 4 4 2.368170000000000E+02 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
freqareson(FREQ, TFREQREF, TABCOMBI, ORDREMAX, EPSILON, TFREQRESIDU)
avec :
Elle recherche pour la fréquence FREQ toutes les combinaisons entières des fréquences fondamentales contenues dans TFREQREF avec une précision EPSILON et un ordre maximal de recherche ORDREMAX.
En sortie, pour chaque combinaison trouveé,
En sortie, TABCOMBI est un tableau de size(TFREQREF) tableaux d'entiers,
En sortie, tous les éléments de TABCOMBI vérifient
sum(abs(TABCOMBI[i][]))<=ORDREMAX.
Exemple :
>vnumR freqfond;
>resize(freqfond,5);
>freqfond[1]=3.1354;
>freqfond[2]=5.452;
>freqfond[3]=2*freqfond[3];
>freqfond[4]=11.111;
>freqfond[5]=19.777;
>freq=2*freqfond[1]+freqfond[2]-freqfond[3]+freqfond[4]-freqfond[5];
>freqareson(freq,freqfond,tabcomb, 8,1E-6, freqres);
>writes("%+-g\t%+-g\t%+-g\t%+-g\t%+-g\n",tabcomb);
+2 -1 +0 +1 -1
+2 +1 -1 +1 -1
+2 -3 +1 +1 -1
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
sertrig(<tab. complexes> TAMP, <tab. réel> TFREQ, <variable> VAR)
sertrig(<tab. complexes> TAMP, <tab. réel> TFREQ, <variable> VAR, <réel> FACT )
avec :
Les tableaux TAMP et TFREQ doivent être de même taille.
Elle réalise la somme de : pour chaque élément j des tableaux : TAMP[j]*exp(i*TFREQ[j]*VARIABLE) ou pour chaque élément j des tableaux : TAMP[j]*exp(i*2*pi*TFREQ[j]*VARIABLE/FACT)
La partie exp(i*...) est représentée sous la forme d'une variable angulaire où l'argument est la fréquence et la phase est nulle. L'amplitude sera le coefficient de cette variable. Ces variables angulaires ont pour radical _Ex. Il y aura autant de variables angulaires créées qu'il y a de fréquences. La série contiendra autant de termes qu'il y a d'élément dans les tableaux.
Exemple : Le F contient les frequences et le tableau A contient les amplitudes. > writes(F,A); +9.999993149794888E-02 +1.000000000456180E-01 +1.095970178673141E-06 -2.000000944035095E-01 +9.999999960679056E-03 +1.312007532388499E-07 +3.000000832689856E-01 +1.000000314882390E-03 -1.403292661135361E-08 -4.000000970924361E-01 +9.999995669530993E-05 +1.695880029074994E-09 +4.999999805039361E-01 +1.000003117384769E-05 +3.216502329016007E-11 -5.999999830866213E-01 +9.999979187109419E-07 -1.796078221829677E-12 > s=sertrig(A,F,t); s(_EXt1,_EXt2,_EXt3,_EXt4,_EXt5,_EXt6) = (9.99997918710942E-07-i*1.79607822182968E-12)*_EXt6 + (1.00000311738477E-05+i*3.21650232901601E-11)*_EXt5 + (9.99999566953099E-05+i*1.69588002907499E-09)*_EXt4 + (0.00100000031488239-i*1.40329266113536E-08)*_EXt3 + (0.00999999996067906+i*1.3120075323885E-07)*_EXt2 + (0.100000000045618+i*1.09597017867314E-06)*_EXt1 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
fft (TX, TY, TAMP, TFREQ, XH, T0, DTOUR, IW)
avec :
Elle effectue la transformée de fourier rapide de TX+i*TY et stocke les amplitudes et fréquences déterminées dans les tableaux TAMP et TFREQ.
Elle ne retient que les "N" permiers éléments de TX et TY tel que "N" soit la plus grande puissance de 2 contenue dans la taille du tableau TX.
Remarque: TX et TY doivent avoir la même taille.
Exemple : >vnumC z; vnumR freq; xin=vnumR[7.:5.:6.:9.]; yin=vnumR[0:0:0:0]; fft(xin,yin,z,freq,1,0,pi,0); writes(z,freq); > -2.500000000000000E-01 +0.000000000000000E+00 -1.570796326794897E+00 +2.499999999999993E-01 -1.000000000000000E+00 -7.853981633974483E-01 +6.750000000000000E+00 +0.000000000000000E+00 +0.000000000000000E+00 +2.500000000000007E-01 +1.000000000000000E+00 +7.853981633974483E-01 -2.500000000000000E-01 +0.000000000000000E+00 +1.570796326794897E+00 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
ifft (TAMP, TX, TY, XH, T0)
avec :
Elle effectue la transformée de fourier rapide inverse de TAMP et stocke le résultat dans TX+i*TY.
TAMP doit etre un tableau à 2**N+1 éléments. En sortie, TX et TY ont 2**N éléments.
Exemple : >vnumC z; vnumR freq; xin=vnumR[7.:5.:6.:9.]; yin=vnumR[0:0:0:0]; fft(xin,yin,z,freq,1,0,pi,0); ifft(z,xout,yout,1,0); writes(xout,yout); > +7.000000000000000E+00 +0.000000000000000E+00 +5.000000000000000E+00 +0.000000000000000E+00 +6.000000000000000E+00 +0.000000000000000E+00 +9.000000000000000E+00 +0.000000000000000E+00 |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
integnum( T0, TF, PAS, PREC, DOPRIMAX, PASDOPRI, FICHIER,
{ REAL ,(VAR1, SER1, VI1),...},
{ COMPLEX ,(VAR2, SER2, VI2),...});
avec :
Elle effectue l'intégration numérique des séries stockées dans les listes avec les valeurs initiales et stocke le résultat dans le fichier de résultat.
Les équations sont des triplets de la variable derivée, de la série et de la valeur initiale.
Exemple :
Nous souhaitons integrer le système : { dx/dt = -y , dy/dt= x }
avec les valeurs initiales x=1 et y=0
entre 0 et 2*pi avec un pas de pi/10 et une précision de 1E-12.
Le pas de dopri sera pi/20 et le pas mximum de dopri sera pi/10.
Les resultats seront stockes dans le fichier icossin.out
La solution est : x = cos(t) et y = sin(t)
>integnum(0,2*pi, pi/10, 1E-12, pi/10, pi/20,
icossin.out, REAL, (x, -y, 1),(y,x, 0));
Le fichier icossin.out contient :
time x y
+0.000000000000000E+00 +1.000000000000000E+00 +0.000000000000000E+00
+3.141592653589793E-01 +9.510565162951542E-01 +3.090169943749471E-01
+6.283185307179586E-01 +8.090169943749489E-01 +5.877852522924729E-01
+9.424777960769379E-01 +5.877852522924752E-01 +8.090169943749478E-01
+1.256637061435917E+00 +3.090169943749500E-01 +9.510565162951550E-01
+1.570796326794897E+00 +2.567125951231441E-15 +1.000000000000003E+00
+1.884955592153876E+00 -3.090169943749455E-01 +9.510565162951576E-01
+2.199114857512855E+00 -5.877852522924724E-01 +8.090169943749527E-01
+2.513274122871834E+00 -8.090169943749485E-01 +5.877852522924791E-01
+2.827433388230814E+00 -9.510565162951568E-01 +3.090169943749536E-01
+3.141592653589793E+00 -1.000000000000005E+00 +5.403107187863445E-15
+3.455751918948772E+00 -9.510565162951610E-01 -3.090169943749436E-01
+3.769911184307752E+00 -8.090169943749564E-01 -5.877852522924716E-01
+4.084070449666731E+00 -5.877852522924830E-01 -8.090169943749488E-01
+4.398229715025710E+00 -3.090169943749571E-01 -9.510565162951583E-01
+4.712388980384690E+00 -8.301722685091165E-15 -1.000000000000008E+00
+5.026548245743669E+00 +3.090169943749417E-01 -9.510565162951644E-01
+5.340707511102648E+00 +5.877852522924709E-01 -8.090169943749602E-01
+5.654866776461628E+00 +8.090169943749494E-01 -5.877852522924867E-01
+5.969026041820607E+00 +9.510565162951601E-01 -3.090169943749604E-01
+6.283185307179586E+00 +1.000000000000011E+00 -1.085302505620242E-14
|
Exemple :
Nous souhaitons integrer le système :
{ dz/dt = 1 , dZ/dt= Z+i*z*Z } avec Z=expi(z,1,0)
avec les valeurs initiales x=1 et y=0
entre 0 et 2*pi avec un pas de pi/10 et une précision de 1E-12.
Le pas de dopri sera pi/20 et le pas mximum de dopri sera pi/10.
Les resultats seront stockes dans le fichier icossin.out
La solution est : z=t et Z=t*exp(i*t)
> Z=expi(z,1,0);
1*Z
> integnum(0,2*pi, pi/10, 1E-12, pi/10, pi/20, spirale,
REAL,(z, 1,0),COMPLEX,(Z,Z+i*z*Z,0));
>
Le fichier spirale contient :
time z Re(Z) Im(Z)
+0.000000000000000E+00 +0.000000000000000E+00 +0.000000000000000E+00 +0.0...
+3.141592653589793E-01 +3.141592653589793E-01 +2.987832164741556E-01 +9.7...
+6.283185307179586E-01 +6.283185307179585E-01 +5.083203692315260E-01 +3.6...
+9.424777960769379E-01 +9.424777960769378E-01 +5.539745491471372E-01 +7.6...
+1.256637061435917E+00 +1.256637061435917E+00 +3.883222077450937E-01 +1.1...
+1.570796326794897E+00 +1.570796326794896E+00 +6.887946983297801E-16 +1.5...
+1.884955592153876E+00 +1.884955592153876E+00 -5.824833116176390E-01 +1.7...
+2.199114857512855E+00 +2.199114857512855E+00 -1.292607281343319E+00 +1.7...
+2.513274122871834E+00 +2.513274122871834E+00 -2.033281476926103E+00 +1.4...
+2.827433388230814E+00 +2.827433388230813E+00 -2.689048948267399E+00 +8.7...
+3.141592653589793E+00 +3.141592653589793E+00 -3.141592653589793E+00 +1.5...
+3.455751918948772E+00 +3.455751918948772E+00 -3.286615381215711E+00 -1.0...
+3.769911184307752E+00 +3.769911184307751E+00 -3.049922215389156E+00 -2.2...
+4.084070449666731E+00 +4.084070449666730E+00 -2.400556379637595E+00 -3.3...
+4.398229715025710E+00 +4.398229715025709E+00 -1.359127727107829E+00 -4.1...
+4.712388980384690E+00 +4.712388980384689E+00 -3.135465452360846E-15 -4.7...
+5.026548245743669E+00 +5.026548245743668E+00 +1.553288830980370E+00 -4.7...
+5.340707511102648E+00 +5.340707511102647E+00 +3.139189111833773E+00 -4.3...
+5.654866776461628E+00 +5.654866776461627E+00 +4.574883323083731E+00 -3.3...
+5.969026041820607E+00 +5.969026041820606E+00 +5.676881113008954E+00 -1.8...
+6.283185307179586E+00 +6.283185307179585E+00 +6.283185307179584E+00 -3.5...
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
integral(<tab. num.> TY, <réel> XH, <entier> ORDRE, <identificateur> N)
avec :
Elle calcule et retourne l'intégrale, en utilisant la formule de Newton-Cotes, d'ordre ORDRE, du tableau numérique TY dont les éléments sont espacés de XH.
Elle retourne dans N l'indice du dernier élément utilisé pour calculer l'intégrale. La valeur de N est donnée par : N=int((size(TY)-1)/ORDRE)*ORDRE+1
Pour les formules de Newton-Cotes, voir le livre "Introduction to Numerical Analysis", chapitre integration, de Stoer et Burlisch.
Exemple :
> t=0,10000;
t Tableau de reels : nb reels =10001
> t=t*pi/10000;
> X=-cos(t)+1;
> for j=1 to 6 { s=integral(sin(t),pi/10000,j,N); delta=s-X[N];};
s = 1.99999998355066
delta = -1.64493392240672E-08
s = 1.99999999999999
delta = -7.54951656745106E-15
s = 1.99999995065198
delta = 5.55111512312578E-15
s = 2
delta = -4.44089209850063E-16
s = 2
delta = 8.88178419700125E-16
s = 1.99999921043176
delta = 5.77315972805081E-15
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
iternum( nbiteration, passortie, fichierresultat ,
REAL ,( variable1, serie1, valeurinitiale1),...},
COMPLEX ,( variable2, serie2, valeurinitiale2),...});
avec :
Elle effectue nbiteration iterations sur les équations spécifiées dans les listes. Elle écrit dans le fichier de résultat tous les passortie itérations.
Les équations sont des triplets de la variable itérée, de la série et de sa valeur initiale.
La valeur initiale peut être un nombre complexe ou réel.
Exemple :
> iternum(10,1,sortie.txt,REAL,(un,un+2,3));
Le fichier "sortie.txt" contient :
time un
+0.000000000000000E+00 +3.000000000000000E+00
1 +5.000000000000000E+00
2 +7.000000000000000E+00
3 +9.000000000000000E+00
4 +1.100000000000000E+01
5 +1.300000000000000E+01
6 +1.500000000000000E+01
7 +1.700000000000000E+01
8 +1.900000000000000E+01
9 +2.100000000000000E+01
10 +2.300000000000000E+01
> iternum(5,1,sortie.txt,REAL,(vn,un-1,3),(un,vn+un,2));
Le fichier "sortie2.txt" contient :
time vn un
+0.000000000000000E+00 +3.000000000000000E+00 +2.000000000000000E+00
1 +1.000000000000000E+00 +5.000000000000000E+00
2 +4.000000000000000E+00 +6.000000000000000E+00
3 +5.000000000000000E+00 +1.000000000000000E+01
4 +9.000000000000000E+00 +1.500000000000000E+01
5 +1.400000000000000E+01 +2.400000000000000E+01
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
interpol(LINEAR , TX, DTX, TY)
interpol(QUADRATIC , TX, DTX, TY)
interpol(SPLINE , TX, DTX, TY)
interpol(HERMITE , TX, DTX, TY, DEG)
avec :
Elle effectue l'interpolation linéaire, spline, ou quadratique ou d'hermite. Elle retourne un tableau de réels des valeurs interpolées aux temps TY à partir des données (TX, DTX).
Remarque : Elle suppose que TX et TY sont triés par ordre croissant ou décroissant.
Si TY[i] n'appartient pas à l'intervalle [ TX[0], TX[size(TX)] ], alors DTY[i] est extrapolé.
L'algorithme de l'interpolation d'hermite est décrite dans le livre de Stoer et Burlish, 1993, "Introduction to Numerical Analysis, Chap 2, pages 52-57".
Exemple :
> x1=0,2*pi,2*pi/59;
> x2=0,3,0.5;
> sl=interpol(LINEAR,x1,cos(x1),x2);
> writes("%.2E %.4E %.4E\n",x2, cos(x2), sl);
0.00E+00 1.0000E+00 1.0000E+00
5.00E-01 8.7758E-01 8.7652E-01
1.00E+00 5.4030E-01 5.3958E-01
1.50E+00 7.0737E-02 7.0719E-02
2.00E+00 -4.1615E-01 -4.1576E-01
2.50E+00 -8.0114E-01 -8.0001E-01
3.00E+00 -9.8999E-01 -9.8920E-01
|
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
help;
?;
Elle affiche une aide.
Sous Unix et MacOS X, le programmes d'aide utilise le logiciel info (fourni en particulier avec Texinfo) pour afficher l'aide. Sous Windows, le fichier d'aide au format chm est affiché.
help <motreserve>;
? <motreserve>;
Elle affiche l'aide du manuel de référence pour le mot réservé de TRIP. Cette fonction appelle le programme info (fourni en particulier avec Texinfo) sous Unix et MacOS X.
Exemple : > ? vartrip; |