u4.32.01 Opérateur CALC_FONC_INTERP#
Syntaxe#
Détail de la syntaxe
/ formule
/ nappe
/ fonction
/ fonction_c = CALC_FONC_INTERP(
◆ FONCTION = formule / nappe / fonction / fonction_c,
◆ / VALE_PARA = float,
/ LIST_PARA = listr8,
◇ NOM_RESU = text,
◇ NOM_PARA = text,
◇ INTERPOL = / "LIN",
/ "LOG",
◇ PROL_DROITE = / "EXCLU",
/ "CONSTANT",
/ "LINEAIRE",
◇ PROL_GAUCHE = / "EXCLU",
/ "CONSTANT",
/ "LINEAIRE",
◇ NOM_PARA_FONC = text,
# Si: exists("NOM_PARA_FONC")
◆ / VALE_PARA_FONC = float,
/ LIST_PARA_FONC = listr8,
◇ INTERPOL_FONC = / "LIN",
/ "LOG",
◇ PROL_DROITE_FONC = / "EXCLU",
/ "CONSTANT",
/ "LINEAIRE",
◇ PROL_GAUCHE_FONC = / "EXCLU",
/ "CONSTANT",
/ "LINEAIRE",
◇ TITRE = text,
◇ INFO = / 1 (par défaut),
/ 2,
)
◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles
Opérandes#
Opérande FONCTION#
♦ FONCTION = f
Nom de la FORMULE (fonction interprétable (FORMULE Cf. [U4.31.05])).
Cette fonction peut être à une ou deux variables dans le cas des formules réelles, à une variable seulement dans le cas des formules complexes.
On peut toutefois créer une nouvelle fonction (respectivement fonction_c, nappe) à partir d’une fonction (respectivement fonction_c, nappe) en interpolant la première sur une liste de paramètres différente. Cette possibilité est essentiellement utilisée dans les macro‑commandes.
Quand le type en entrée est une formule et que NOM_PARA_FONC est fourni, la structure de donnée produite est une nappe.
Remarque
Lors de l’interpolation d’une formule à deux paramètres, on vérifie la cohérence entre les paramètres de la formule et les mots-clés NOM_PARA et NOM_PARA_FONC *. Voir l’exemple du paragraphe* 4.2 .
Opérande NOM_RESU#
◊ NOM_RESU = nr
Désigne le nom du résultat, la fonction ainsi créée est une fonction dont la valeur est de nom nr (8 caractères).
Opérande NOM_PARA#
◊ NOM_PARA = nr
Désigne le nom du paramètre de la fonction ou de la nappe. Par défaut, le nom du paramètre de la formule ou fonction fournie est employé.
Opérandes VALE_PARA/LIST_PARA#
◊ / VALE_PARA = lvale,
lvale est la liste des valeurs du paramètre.
/ LIST_PARA = lpara,
lpara est la liste des valeurs du paramètre : c’est un concept de type listr8 créé précédemment par la commande DEFI_LIST_REEL [U4.34.01].
Opérandes PROL_DROITE et PROL_GAUCHE#
◊ PROL_DROITE et PROL_GAUCHE =
Définissent le type de prolongement à droite (à gauche) du domaine de définition du paramètre de la fonction ou de la nappe
“CONSTANT” |
pour un prolongement avec la dernière (ou première) valeur de la fonction, |
“LINEAIRE” |
pour un prolongement le long du premier segment défini (PROL_GAUCHE) ou du dernier segment défini (PROL_DROITE), |
“EXCLU” |
l’extrapolation des valeurs en dehors du domaine de définition du paramètre est interdite (dans ce cas si un calcul demande une valeur de la fonction hors du domaine de définition, le code s’arrêtera en erreur fatale), |
Opérande INTERPOL#
◊ INTERPOL=
Type d’interpolation de la fonction entre les valeurs de la variable ou type d’interpolation de la nappe entre les valeurs du paramètre. Derrière ce mot clé on attend une liste de paramètres (deux au maximum).
“LIN”: |
linéaire, |
“LOG”: |
logarithmique, |
Si une seule valeur est donnée, l’interpolation sera identique pour les abscisses et les ordonnées. Si deux valeurs sont données, la première correspond à l’interpolation des abscisses et la seconde à l’interpolation des ordonnées.
Opérande NOM_PARA_FONC#
◊ NOM_PARA_FONC = nr
Désigne le nom de la variable des fonctions définissant la nappe. Quand le type en entrée est une formule et que ce mot clé est renseigné, alors la structure de données produite est une nappe.
Opérandes VALE_PARA_FONC/LIST_PARA_FONC#
◊ / VALE_PARA_FONC = lvale,
lvale est la liste des valeurs de la variable des fonctions définissant la nappe.
/ LIST_PARA_FONC = lpara,
lpara est la liste des valeurs de la variable des fonctions définissant la nappe: c’est un concept de type listr8 créé précédemment par la commande DEFI_LIST_REEL [U4.34.01].
Opérandes PROL_DROITE_FONC et PROL_GAUCHE_FONC#
◊ PROL_DROITE_FONC et PROL_GAUCHE_FONC =
Définissent le type de prolongement à droite (à gauche) du domaine de définition de la variable des fonctions de la nappe:
“CONSTANT”, “LINEAIRE”, “EXCLU” ont le même sens que précédemment.
Opérande INTERPOL_FONC#
◊ INTERPOL_FONC=
Type d’interpolation des fonctions entre les valeurs de la variable des fonctions définissant la nappe. Derrière ce mot clé on attend une liste de paramètres (deux au maximum).
Le fonctionnement est identique à INTERPOL.
Opérande INFO#
◊ INFO=
Précise les options d’impression sur le fichier MESSAGE.
1 : |
pas d’impression (option par défaut) |
2 : |
impression des paramètres plus la liste des 10 premières valeurs dans l’ordre croissant du paramètre |
Opérande TITRE#
◊ TITRE = ti
Titre attaché au concept produit par cet opérateur [U4.03.01].
Exemples#
Cas d’une fonction#
Définir la fonction FORMULE sin(t)#
SI = FORMULE ( NOM_PARA = 'INST',
VALE = 'sin(INST)' )
Tabuler sin(t) à partir d’une liste de réels#
DEPI = 2.*pi PAS0 = DEPI/200. LI1 = DEFI_LIST_REEL (DEBUT = 0, INTERVALLE=_F(JUSQU_A=DEPI, PAS=PAS0),)
SI1 = CALC_FONC_INTERP (FONCTION= SI, LIST_PARA = LI1, NOM_RESU = “DEPL”, PROL_GAUCHE=”EXCLU”, PROL_DROITE=”CONSTANT”, INTERPOL=”LIN”, TITRE=”FONCTION SINUS” )
Tabuler sin(t) à partir d’une liste de valeurs#
LI2 = ( 0.,0.01,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10)
SI2 = CALC_FONC_INTERP ( FONCTION = SI, VALE_PARA = LI2, NOM_PARA =’INST’, PROL_GAUCHE = “EXCLU”, PROL_DROITE = “EXCLU”, INTERPOL = “LIN”, TITRE = “FONCTION SINUS”)
Cas d’une nappe#
Définir la fonction FORMULE sin(omega * t)#
SI = FORMULE ( NOM_PARA = ('FREQ', 'INST'),
VALE = 'sin(2*pi*FREQ*INST)')
Tabuler sin(omega * t) à partir d’une liste d’instants#
Le paramètre de la nappe est “FREQ”, la variable des fonctions définissant la nappe est “INST”. On vérifie dans CALC_FONC_INTERP que le premier paramètre de la formule est le même que NOM_PARA, et que le deuxième paramètre de la formule est identique à NOM_PARA_FONC.
LI_FREQ = DEFI_LIST_REEL (DEBUT = 10, INTERVALLE=_F(JUSQU_A=100, PAS=10),)
LI_INST = DEFI_LIST_REEL (DEBUT = 0, INTERVALLE=_F(JUSQU_A=100, PAS=1),)
SI1 = CALC_FONC_INTERP ( FONCTION= SI,
NOM_RESU = “DEPL”, NOM_PARA_FONC=”INST”,
LIST_PARA_FONC = LI_INST
PROL_GAUCHE_FONC=”EXCLU”, PROL_DROITE_FONC=”CONSTANT”, INTERPOL_FONC=”LIN”,
NOM_PARA=”FREQ”,
LIST_PARA = LI_FREQ
PROL_GAUCHE=”LINEAIRE”, PROL_DROITE=”LINEAIRE”, INTERPOL=”LIN”,
TITRE=”FONCTION SINUS”,)