d4.02.02 Structures de données sd_fonction#

Résumé:

Les types de concepts sd_fonction représentent des fonctions (au sens mathématique du terme) de une ou deux variables.

Les fonctions ont des valeurs réelles, les fonction_C des valeurs complexes. Dans la suite de ce document, on ne parlera que des fonctions à valeurs réelles (fonction) en sachant que tout peut être transposé aux fonction_C.

Une fonction est par nature «tabulée»: c’est à dire qu’elle n’est connue qu’en certains points. Dans ce cas, son évaluation peut nécessiter une interpolation ou une extrapolation.

Une formule est «interprétée»: sa représentation (structure de données) contient alors l’expression mathématique de la fonction.

Remarque :

Une formule peut être tabulée (pour certaines valeurs de sa variable) par la commande CALC_FONC_INTERP. Pour une fonction tabulée, l’évaluation en un point différent des points de tabulation peut se faire par interpolation ou extrapolation. Une formule peut avoir autant de variables que nécessaire. En revanche, les fonctions tabulées ne peuvent avoir que \(0,1\) ou \(2\) variables. On parlera alors de “fonction constante”, “fonction” ou “nappe”. Les variables d’une fonction (comme son résultat) sont “typées” : ‘TEMP’, ‘INST’, ‘EPSI’, … On parlera alors du nom des paramètres et du résultat.

Table des matières

Contenu des objets de base#

Objet .PROL#

L’objet «.PROL» est de longueur 6 pour les fonctions tabulées de 0 ou 1 variable et les formules. Il est de longueur \(7+2\mathrm{\ast }\mathit{nf}\) pour les nappes, si \(\mathit{nf}\) est le nombre de fonctions composant la nappe.

.PROL(1)

Type de la fonction.

‘CONSTANT’

: fonction constante

‘FONCTION’

: fonction_1 réelle

‘FONCT_C’

: fonction_1 complexe

‘NAPPE’

: fonction à 2 variables (nappe)

‘INTERPRE’

: fonction interprétée (formule)

.PROL(2) = “XXX FFF”

Type d’interpolation souhaité entre les points de tabulation. Ne concerne que les fonctions tabulées. XXXconcerne le paramètre et FFF la fonction. Les possibilités sont :

  • ‘LIN’ : interpolation linéaire,

  • ‘LOG’ : interpolation logarithmique.

Soit une fonction \(f(x)\) .

On fera une interpolation linéaire entre les deux points encadrant le point cherché, mais pour cette interpolation linéaire, on utilisera éventuellement le logarithme de \(x\) ou de \(f\) .

Par exemple si ‘LIN LOG ‘, on utilisera \(x\) et \(\log(f)\) .

Remarque :

Pour une nappe, XXXconcerne aussi le deuxième paramètre de la fonction.

.PROL(3)

Nom du paramètre.

  • ‘TOUTPARA’ pour une fonction constante,

  • nom du paramètre (i.e. de la variable) pour une fonction,

  • nom du deuxième paramètre pour une nappe,

  • ‘’ (vide) pour une formule.

.PROL(4)

  • nom (ou type) du résultat de la fonction,

  • TOUTRESU’.

.PROL(5)

“Prolongement” souhaité à la fonction en dehors de son domaine de tabulation (extrapolation). Ne concerne que les fonctions tabulées.

‘xy’ où x et y = ‘E’ ou ‘L’ ou ‘C’.

x : prolongement “à gauche” (pour un paramètre inférieur au plus petit paramètre de la tabulation),

y : prolongement “à droite” (pour un paramètre supérieur au plus grand paramètre de la tabulation).

‘E’ : prolongement exclu, ‘C’ : prolongement constant, ‘L’ : prolongement linéaire (à partir des deux premiers ou des deux derniers points).

Pour une nappe, ces prolongements concernent le deuxième paramètre (valeurs de l’objet .PARA).

Il n’existe pas de prolongement “logarithmique”.

.PROL(6)

Nom de la fonction ou de la nappe. Ceci est utilisé aux fins fonds du code pour clarifier des messages d’erreurs ou d’alarmes alors que l’on n’a plus accès au concept fonction de l’utilisateur (cas du matériau codé).

.PROL(7)

Uniquement pour les nappes : nom du paramètre des fonctions composant la nappe (NOM_PARA_FONC de DEFI_NAPPE).

.PROL(8)

Type d’interpolation voulu pour la première fonction composant la nappe (’LIN LOG’, ‘LOGLOG‘, …) (voir “”.PROL(2)””).

.PROL(9)

Type de prolongement voulu pour la première fonction composant la nappe (’EL’, ‘CC’, …) (voir “”.PROL(5)”” ).

.PROL(10)

Type d’interpolation voulu pour la deuxième fonction composant la nappe … et suivante.

Objet « .PARA »#

Cet objet contient les valeurs de la deuxième variable de la nappe. A chaque valeur de cette deuxième variable correspond un objet de la collection “”.VALE “” qui contient les valeurs de la fonction associée à cette variable.

Objet « .VALE »#

Cas d’une fonction#

Pour une fonction, cet objet contient les valeurs numériques des points de tabulation.

Soit \(n\) : le nombre de points de tabulation,

  • \(V(1,\mathrm{...},n)\) : abscisses des points,

  • \(V(n+1,\mathrm{...},2\mathrm{\ast }n)\) : valeurs de la fonction aux points.

Remarque : Si la fonction est à valeurs complexes, le stockage est le suivant :

  • \(V(n+1)\) : partie réelle de la fonction au 1er point,

  • \(V(n+2)\) : partie imaginaire de la fonction au 1er point,

  • \(V(n+3)\) : partie réelle de la fonction au 2ème point,

  • \(V(n+4)\) : partie imaginaire de la fonction au 2ème point,

  • \(\mathrm{...}\)

  • \(V(3\mathrm{\ast }n)\) : partie imaginaire de la fonction au dernier point.

Le nombre de points de discrétisation \((n)\) peut être obtenu par division par 2 (ou 3) de l’attribut “LONMAX” de l’objet. “”.VALE “”

Cas d’une nappe#

Pour une nappe, cet objet est une collection numérotée contiguë. Chaque objet \(i\) de collection a la même structure que l’objet “”.VALE “” des fonctions (ci-dessus). Il décrit la fonction attachée à la valeur \(i\) de la deuxième variable de la nappe.

Objet « .NOVA »#

Cet objet contient le nom des variables de la fonction “formule”.

Exemples#

Fonction constante : f1#

Fichier de commande#

f1=DEFI_CONSTANTE(VALE=1.2,

NOM_RESU=”nom_res1”,)

IMPR_CO(CONCEPT=_F(NOM=f1,),);

Contenu des objets#

====> IMPR_CO DE LA STRUCTURE DE DONNEE : f1 ????????????????

ATTRIBUT : F CONTENU : T BASE : >G<

NOMBRE D'OBJETS (OU COLLECTIONS) TROUVES : 3

IMPRESSION DU CONTENU DES OBJETS TROUVES :


IMPRESSION SEGMENT DE VALEURS >f1 .PROL <

1 - >CONSTANT <>LIN LIN <

3 - >TOUTPARA <>nom_res1 <

5 - >CC <>f1 <


IMPRESSION SEGMENT DE VALEURS >f1 .TITR <

1 - >ASTER 9.02.12 CONCEPT f1 CALCULE LE 04/03/2008 A 13:38:41 DE TYPE <

2 - >FONCTION_SDASTER <


IMPRESSION SEGMENT DE VALEURS >f1 .VALE <

1 - 1.00000D+00 1.20000D+00

====> FIN IMPR_CO DE DE STRUCTURE DE DONNEE : f1 ????????????????

Fonction réelle tabulée : f2#

Fichier de commande#

lpara=DEFI_LIST_REEL(DEBUT=3.0, INTERVALLE=_F(JUSQU_A=6.0, NOMBRE=3,),)

lfonc=DEFI_LIST_REEL(DEBUT=3.2, INTERVALLE=_F(JUSQU_A=6.2, NOMBRE=3,),)


f2=DEFI_FONCTION(TITRE='ceci est un titre',

INTERPOL=”LIN”, NOM_PARA=”DX”, NOM_RESU=”nom_res2”, PROL_GAUCHE=”EXCLU”, PROL_DROITE=”CONSTANT”, VALE_PARA=lpara, VALE_FONC=lfonc,)

IMPR_CO(CONCEPT=_F(NOM=f2,),)

Contenu des objets#

====> IMPR_CO DE LA STRUCTURE DE DONNEE : f2 ????????????????

ATTRIBUT : F CONTENU : T BASE : >G<

NOMBRE D'OBJETS (OU COLLECTIONS) TROUVES : 3

IMPRESSION DU CONTENU DES OBJETS TROUVES :


IMPRESSION SEGMENT DE VALEURS >f2 .PROL <

1 - >FONCTION <>LINLIN<

3 - >DX <>mom_res2 <

5 - >EC <>f2 <


IMPRESSION SEGMENT DE VALEURS >f2 .TITR <

1 - >ceci est un titre <


IMPRESSION SEGMENT DE VALEURS >f2 .VALE <

1 - 3.00000D+00 4.00000D+00 5.00000D+00 6.00000D+00 3.20000D+00

6 - 4.20000D+00 5.20000D+00 6.20000D+00

====> FIN IMPR_CO DE DE STRUCTURE DE DONNEE : f2 ????????????????

Fonction complexe tabulée : f3#

Fichier de commande#

f3=DEFI_FONCTION(INTERPOL=('LIN','LIN',), NOM_PARA='INST', NOM_RESU='nom_res3',

PROL_GAUCHE='LINEAIRE', PROL_DROITE='CONSTANT',

VALE_C=(0., 1.2,2.2, 1.,3.7,4.7, 2., 5.6,6.6, 3., 3.5,4.5, ),)

IMPR_CO(CONCEPT=_F(NOM=f3,),);

Contenu des objets#

====> IMPR_CO DE LA STRUCTURE DE DONNEE : f3 ????????????????

ATTRIBUT : F CONTENU : T BASE : >G<

NOMBRE D'OBJETS (OU COLLECTIONS) TROUVES : 3

IMPRESSION DU CONTENU DES OBJETS TROUVES :


IMPRESSION SEGMENT DE VALEURS >f3 .PROL <

1 - >FONCT_C <>LIN LIN <

3 - >INST <>mom_res3 <

5 - >LC <>f3 <


IMPRESSION SEGMENT DE VALEURS >f3 .TITR <

1 - >ASTER 9.02.12 CONCEPT f3 CALCULE LE 04/03/2008 A 13:38:41 DE TYPE FONCTION_C <


IMPRESSION SEGMENT DE VALEURS >f3 .VALE <

1 - 0.00000D+00 1.00000D+00 2.00000D+00 3.00000D+00 1.20000D+00

6 - 2.20000D+00 3.70000D+00 4.70000D+00 5.60000D+00 6.60000D+00

11 - 3.50000D+00 4.50000D+00

====> FIN IMPR_CO DE DE STRUCTURE DE DONNEE : f3 ????????????????

Nappe réelle définie par des fonctions : nap1#

Fichier de commande#

f21=DEFI_FONCTION(NOM_RESU='bid1', NOM_PARA='TEMP',

INTERPOL=(“LIN”,”LIN”,) ,PROL_DROITE=”LINEAIRE”, VALE=( 1.2,3.7, 4.2,6.7, ),);

f22=DEFI_FONCTION(NOM_RESU=”bid2”, NOM_PARA=”INST”,

INTERPOL=(“LOG”,”LOG”,), PROL_DROITE=”CONSTANT”, VALE=(10.2, 30.7, 40.2, 60.7, ),);

f23=DEFI_FONCTION(NOM_RESU=”bid2”, NOM_PARA=”INST”,

INTERPOL=(“LOG”,”LIN”,), PROL_GAUCHE=”LINEAIRE”, VALE=(11.2, 31.7, 41.2, 61.7, ),);

nap1=DEFI_NAPPE(

INTERPOL=(” LIN “,” LOG “,),NOM_PARA=”PULS”, NOM_RESU=”nom_nap1”, PROL_GAUCHE=”EXCLU”, PROL_DROITE=”CONSTANT”, PARA=(8.9,12.9,17.9,), FONCTION=(f21,f22,f23,),);

IMPR_CO(CONCEPT=_F(NOM=nap1,),);

Contenu des objets#

====> IMPR_CO DE LA STRUCTURE DE DONNEE : nap1 ????????????????

ATTRIBUT : F CONTENU : T BASE : >G<

NOMBRE D'OBJETS (OU COLLECTIONS) TROUVES : 4

IMPRESSION DU CONTENU DES OBJETS TROUVES :


IMPRESSION SEGMENT DE VALEURS >nap1 .PARA <

1 - 8.90000D+00 1.29000D+01 1.79000D+01


IMPRESSION SEGMENT DE VALEURS >nap1 .PROL <

1 - >NAPPE <>LIN LOG <

3 - >PULS <>mom_nap1 <

5 - >EC <>nap1 <

7 - >INST <>LIN LIN <

9 - >EL <>LOG LOG <

11 - >EC <>LOG LIN <

13 - >LE <


IMPRESSION SEGMENT DE VALEURS >nap1 .TITR <

1 - >ASTER 9.02.12 CONCEPT nap1 CALCULE LE 04/03/2008 A 14:52:03 DE TYPE <

2 - >NAPPE_SDASTER <


IMPRESSION DE LA COLLECTION : nap1 .VALE

IMPRESSION OBJET DE COLLECTION CONTIGUE>nap1 .VALE< OC : 1

1 - 1.20000D+00 4.20000D+00 3.70000D+00 6.70000D+00

IMPRESSION OBJET DE COLLECTION CONTIGUE>nap1 .VALE< OC : 2

1 - 1.02000D+01 4.02000D+01 3.07000D+01 6.07000D+01

IMPRESSION OBJET DE COLLECTION CONTIGUE>nap1 .VALE< OC : 3

1 - 1.12000D+01 4.12000D+01 3.17000D+01 6.17000D+01

====> FIN IMPR_CO DE DE STRUCTURE DE DONNEE : nap1 ????????????????

Nappe réelle définie par des fonctions : nap2#

Fichier de commande#

nap2=DEFI_NAPPE(

INTERPOL=(“LIN”,”LOG”), NOM_PARA=”PULS”, NOM_RESU=”nom_nap2”, PROL_GAUCHE=”EXCLU”, PROL_DROITE=”CONSTANT”, PARA=(8.9,12.9,), NOM_PARA_FONC=”EPSI”, DEFI_FONCTION=( _F(PROL_DROITE=”LINEAIRE”,VALE=(1.2, 3.5,2.2,4.5,3.2,6.5,),), _F(PROL_GAUCHE=”CONSTANT”,VALE=(1.2,3.7,4.2,6.7,),),), );

IMPR_CO(CONCEPT=_F(NOM=nap2,),);

Contenu des objets#

====> IMPR_CO DE LA STRUCTURE DE DONNEE : nap2 ????????????????

ATTRIBUT : F CONTENU : T BASE : >G<

NOMBRE D'OBJETS (OU COLLECTIONS) TROUVES : 4

IMPRESSION DU CONTENU DES OBJETS TROUVES :


IMPRESSION SEGMENT DE VALEURS >nap2 .PARA <

1 - 8.90000D+00 1.29000D+01


IMPRESSION SEGMENT DE VALEURS >nap2 .PROL <

1 - >NAPPE <>LIN LOG <

3 - >PULS <>nom_nap2 <

5 - >EC <>nap2 <

7 - >EPSI <>LIN LIN <

9 - >EL <>LIN LIN <

11 - >CE <


IMPRESSION SEGMENT DE VALEURS >nap2 .TITR <

1 - >ASTER 9.02.12 CONCEPT nap2 CALCULE LE 04/03/2008 A 14:52:03 DE TYPE <

2 - >NAPPE_SDASTER <


IMPRESSION DE LA COLLECTION : nap2 .VALE

IMPRESSION OBJET DE COLLECTION CONTIGUE>nap2 .VALE< OC : 1

1 - 1.20000D+00 2.20000D+00 3.20000D+00 3.50000D+00 4.50000D+00

6 - 6.50000D+00

IMPRESSION OBJET DE COLLECTION CONTIGUE>nap2 .VALE< OC : 2

1 - 1.20000D+00 4.20000D+00 3.70000D+00 6.70000D+00

====> FIN IMPR_CO DE DE STRUCTURE DE DONNEE : nap2 ????????????????

Fonction formule à 1 variable : ff1#

Fichier de commande#

ff1 = FORMULE(NOM_PARA='INST',

VALE='2.3*(cos(3.2+sqrt(INST)))-heavysid(INST-PI)',

);

IMPR_CO(CONCEPT=_F(NOM=ff1,),);

Contenu des objets#

====> IMPR_CO DE LA STRUCTURE DE DONNEE : ff1 ????????????????

ATTRIBUT : F CONTENU : T BASE : >G<

NOMBRE D'OBJETS (OU COLLECTIONS) TROUVES : 2

IMPRESSION DU CONTENU DES OBJETS TROUVES :


IMPRESSION SEGMENT DE VALEURS >ff1 .NOVA <

1 - >INST <


IMPRESSION SEGMENT DE VALEURS >ff1 .PROL <

1 - >INTERPRE <>INTERPRE <

3 - > <>TOUTRESU <

5 - >II <>ff1 <

====> FIN IMPR_CO DE DE STRUCTURE DE DONNEE : ff1 ????????????????

Fonction formule à 2 variables : ff2#

Fichier de commande#

ff2 = FORMULE(NOM_PARA=('X','Y',),

VALE='2.3*(cos(3.2+sqrt(X)))-(ff1(Y)+3.4*f2(X))',

);

IMPR_CO(CONCEPT=_F(NOM=ff2,),);

Contenu des objets#

====> IMPR_CO DE LA STRUCTURE DE DONNEE : ff2 ????????????????

ATTRIBUT : F CONTENU : T BASE : >G<

NOMBRE D'OBJETS (OU COLLECTIONS) TROUVES : 2

IMPRESSION DU CONTENU DES OBJETS TROUVES :


IMPRESSION SEGMENT DE VALEURS >ff2 .NOVA <

1 - >X <>Y <


IMPRESSION SEGMENT DE VALEURS >ff2 .PROL <

1 - >INTERPRE <>INTERPRE <> <

4 - >TOUTRESU <>II <>ff2 <

====> FIN IMPR_CO DE DE STRUCTURE DE DONNEE : ff2 ????????????????

Formule à 1 variables : ff3 tabulée par la suite#

Fichier de commande#

ff31 = FORMULE(NOM_PARA='X', VALE='sqrt(X)',

);

ff3=CALC_FONC_INTERP(FONCTION=ff31,

PROL_DROITE='LINEAIRE',

VALE_PARA=(1,4,9,16,),

);


IMPR_CO(CONCEPT=_F(NOM=ff3,),);

Contenu des objets#

====> IMPR_CO DE LA STRUCTURE DE DONNEE : ff3 ????????????????

ATTRIBUT : F CONTENU : T BASE : >G<

NOMBRE D'OBJETS (OU COLLECTIONS) TROUVES : 3

IMPRESSION DU CONTENU DES OBJETS TROUVES :


IMPRESSION SEGMENT DE VALEURS >ff3 .PROL <

1 - >FONCTION <>LIN LIN <>X <

4 - >TOUTRESU <>EL <>ff3 <


IMPRESSION SEGMENT DE VALEURS >ff3 .TITR <

1 - >ASTER 9.02.01 CONCEPT ff3 CALCULE LE 17/12/2007 A 14:38:46 DE TYPE <

2 - >FONCTION_SDASTER <


IMPRESSION SEGMENT DE VALEURS >ff3 .VALE <

1 - 1.00000D+00 4.00000D+00 9.00000D+00 1.60000D+01 1.00000D+00

6 - 2.00000D+00 3.00000D+00 4.00000D+00

====> FIN IMPR_CO DE DE STRUCTURE DE DONNEE : ff3 ????????????????

Fonction tabulée à partir d’une autre fonction#

Fichier de commande#

ff41 = FORMULE(NOM_PARA='X', VALE='sqrt(X)',);

ff42 = FORMULE(NOM_PARA='X', VALE='2.*ff41(X)*sqrt(X)',);

ff4=CALC_FONC_INTERP(

FONCTION=ff42, NOM_RESU='nom_res4’,

INTERPOL=('LOG','LIN'),

PROL_DROITE='EXCLU', PROL_GAUCHE='LINEAIRE',

VALE_PARA=(1.6, 2.6, 3.6, 4.6,),

);

IMPR_CO(CONCEPT=_F(NOM=ff4,),);

Contenu des objets#

====> IMPR_CO DE LA STRUCTURE DE DONNEE : ff4 ????????????????

ATTRIBUT : F CONTENU : T BASE : >G<

NOMBRE D'OBJETS (OU COLLECTIONS) TROUVES : 3

IMPRESSION DU CONTENU DES OBJETS TROUVES :


IMPRESSION SEGMENT DE VALEURS >ff4 .PROL <

1 - >FONCTION <>LOG LIN <

3 - >X <>nom_res4 <

5 - >LE <>ff4 <


IMPRESSION SEGMENT DE VALEURS >ff4 .TITR <

1 - >ASTER 9.02.12 CONCEPT ff4 CALCULE LE 04/03/2008 A 13:38:41 DE TYPE <

2 - >FONCTION_SDASTER <


IMPRESSION SEGMENT DE VALEURS >ff4 .VALE <

1 - 1.60000D+00 2.60000D+00 3.60000D+00 4.60000D+00 3.20000D+00

6 - 5.20000D+00 7.20000D+00 9.20000D+00

====> FIN IMPR_CO DE DE STRUCTURE DE DONNEE : ff4 ????????????????