FlexPro
HistoryBase
Ingénierie
Formation
Téléchargements
Assistance FlexPro
Connaissance
Communauté
À propos de nous
Références
Emplois
Contact général
Liste des revendeurs
Assistance FlexPro
FR
DE
EN
Porte-plaquette

Documentation FlexPro 2025

NonLinCurveFit

Approche un modèle non linéaire à un ensemble de données et transmet les paramètres du modèle trouvé, les données modélisées et une variété de résultats statistiques.

Syntaxe

NonLinCurveFit(Model, le Data, le [ InitialValues ], le [ Bounds ], le [ WeightingMode Variable NLCF_WEIGHTING_DATA ], le [ Variance ], le [ ScalingMode Variable NLCF_SCALING_NONE ], le [ Scaling ], le [ OutputOptions Variable NLCF_OUTPUT_PREDICTED_VALUES ], le [ Settings ], le [ Algorithm Variable NLCF_ALGORITHM_FULLNEWTON ] [ , le OptionalParameters ])

 

La syntaxe de la fonction NonLinCurveFit se compose des éléments suivants :

Section

Description

Model

Détermine le modèle à adapter aux données.

L'argument peut être choisi dans une liste de modèles prédéfinis ou un modèle personnalisé peut être spécifié.

Le modèle personnalisé est transmis sous forme de chaîne de caractères ou de série de données comprenant deux chaînes de caractères. La première chaîne de caractères contient le code FPScript pour le calcul de la fonction du modèle. Avec la deuxième chaîne de caractères, un code FPScript est transmis, qui calcule analytiquement les dérivées partielles de la fonction modèle pour les différents paramètres et les affiche sous forme de liste. Si seule une chaîne de caractères est indiquée, les dérivées sont approximées numériquement. Les paramètres d'un modèle personnalisé avec un nombre de paramètres n doivent être exprimés en tant que p[0], p[1], ..., p[n-1] dans le code FPScript. La variable indépendante est x.

Par exemple, pour le modèle 'y = a + b x', la série de données {"p[0] + p[1] *x", "[1, x]"} pour un calcul analytique ou la chaîne de caractères "p[0] + p[1] * x" pour un calcul numérique des dérivées.

Il convient de noter que x est transmis en tant que série de données et non pas en tant que valeur individuelle, c'est-à-dire que la fonction de modèle et les dérivées partielles sont calculées en une seule étape pour toutes les valeurs X. Le code FPScript doit être conçu en conséquence.

Des modèles avec plusieurs variables dépendantes peuvent également être définis. Les fonctions du modèle sont alors transmises sous forme de liste et les dérivées sous forme de liste avec des listes :

{"[ p[0] + p[1] * x.[0], p[1] * x.[1]^2 ]", "[ [1,x.[0] ] , [0, x.[1]^2] ]"}

Les structures de données autorisées sont Scalaire et Série de données. Les types de données pris en charge sont Entier de 16 bits, le Entier de 32 bits, le Entier de 64 bits et Chaîne de caractères.

Data

Ce sont les données auxquelles le modèle doit être adapté. Si le modèle comporte plusieurs variables dépendantes, alors l'argument doit être spécifié sous forme de liste avec un ensemble de données par variable.

Les structures de données autorisées sont Série de données, le Matrice de données, le Signal, le Série de signaux et Liste. Tous les types de données numériques sont autorisés, à l'exception de Temps calendaire.

Pour les types de données complexes, un nombre est formé.

InitialValues

Les séries de données avec les valeurs initiales pour les paramètres du modèle à déterminer. Si vous utilisez un des modèles donnés, vous pouvez omettre l'argument. Dans ce cas, des valeurs initiales spécifiques au modèle seront utilisées. Le nombre de valeurs correspond au nombre de paramètres du modèle multiplié par le nombre de pics.

Les structures de données autorisées sont Série de données. Tous les types de données numériques sont autorisés. L'unité de l'argument est ignorée.

Pour les types de données complexes, un nombre est formé.

Bounds

La matrice de données avec les limites des paramètres du modèle à déterminer. La matrice contient par paramètre une colonne avec deux limites. Si vous omettez l'argument, des valeurs limites spécifiques au modèle ou aucune valeur limite ne sera utilisée. Vous pouvez fixer des limites individuelles à l'annulation. Les limites doivent se situer dans la fourchette spécifiée pour le modèle particulier. La limite supérieure doit être supérieure à la limite inférieure.

Les structures de données autorisées sont Matrice de données. Tous les types de données numériques sont autorisés. L'unité de l'argument est ignorée.

Pour les types de données complexes, un nombre est formé.

WeightingMode

Spécifie comment les différents points de données sur lesquels le modèle doit être ajusté doivent être pondérés. La valeur par défaut est la pondération basée sur les données.

L'argument WeightingMode peut avoir les valeurs suivantes :

Constante

Signification

NLCF_WEIGHTING_NONE

Pas de pondération.

NLCF_WEIGHTING_RELATIVE

Pondération relative avec 1 / Y2.

NLCF_WEIGHTING_POISSON

Pondération de Poisson avec 1 / Y.

NLCF_WEIGHTING_DATA

Si les données sont disponibles sous forme de matrice de données ou de série de signaux, alors pondération par 1 / σ2, sinon pas de pondération.

NLCF_WEIGHTING_CUSTOM

Pondération avec 1 / σ2, σ2 est indiqué.

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut NLCF_WEIGHTING_DATA .

Variance

Est une série de données avec les variances des différents points de données. Si vous utilisez un modèle personnalisé avec plusieurs variables dépendantes, vous devez fournir une liste avec une série de données par variable. Vous ne devez indiquer cet argument que si vous avez choisi une pondération personnalisée.

Les structures de données autorisées sont Série de données et Liste. Tous les types de données numériques sont autorisés. L'unité de l'argument est ignorée.

Pour les types de données complexes, un nombre est formé.

ScalingMode

Indique quelle mise à l'échelle doit être utilisée pour le problème.

(*) non utilisé pour l'algorithme de Levenberg-Marquardt

L'argument ScalingMode peut avoir les valeurs suivantes :

Constante

Signification

NLCF_SCALING_NONE

Pas de mise à l'échelle.

NLCF_SCALING_ADAPTIVE

Mise à l'échelle adaptative. Pour chaque itération, les paramètres sont mis à l'échelle sur la base de la matrice jacobienne.

NLCF_SCALING_CUSTOM

Mise à l'échelle personnalisée.

NLCF_SCALING_BOUNDS

Mise à l'échelle à l'aide des limites : 1 / Maximum(Absolute(ParameterLowerLimit),Absolute(ParameterUpperLimit)) (*)

NLCF_SCALING_INITIAL

Mise à l'échelle à partir de la matrice jacobienne initiale. Cette mise à l'échelle correspond à la mise à l'échelle adaptative. Toutefois, les paramètres ne sont mis à l'échelle qu'avant la première itération. (*)

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut NLCF_SCALING_NONE .

Scaling

Une série de données avec un facteur d'échelle positif par paramètre du modèle. Il vous suffit de préciser l'argument si vous avez choisi l'échelle personnalisée.

Les structures de données autorisées sont Série de données. Tous les types de données numériques sont autorisés. L'unité de l'argument est ignorée.

Pour les types de données complexes, un nombre est formé.

OutputOptions

Spécifie les résultats à renvoyer. Les résultats multiples sont présentés sous forme de liste. Si, par exemple, la matrice de corrélation et la matrice de covariance doivent être affichées, l'argument doit contenir la valeur NLCF_OUTPUT_CORRELATION + NLCF_OUTPUT_COVARIANCE. Les options de sortie statistique pour l'ajustement des courbes non linéaires aident à déterminer la qualité de l'ajustement.

(m = nombre de points de données, n = nombre de paramètres)

(*) La matrice de covariance est utilisée pour calculer ces paramètres statistiques. Le calcul de la matrice de covariance n'est pas possible en utilisant l'algorithme de Full Newton si des limites sont spécifiées et si une échelle (toutes sauf NLCF_SCALING_NONE) est utilisée.

L'argument OutputOptions peut avoir les valeurs suivantes :

Constante

Signification

+ NLCF_OUTPUT_ALL

Tous les résultats disponibles.

+ NLCF_OUTPUT_AVERAGE_RESIDUAL

Moyenne résiduelle. Le résultat est une valeur à virgule flottante de 64 bits.

+ NLCF_OUTPUT_BASELINE

Ligne de base pour les modèles comportant plusieurs pics. Le résultat est une série de signaux ayant chacun m valeurs à virgule flottante de 64 bits.

+ NLCF_OUTPUT_CONFIDENCE95

Intervalle de confiance de 95%. Le résultat est une série de données ou un signal avec m valeurs à virgule flottante de 64 bits ou, pour plusieurs variables dépendantes, une liste. (*)

+ NLCF_OUTPUT_CONFIDENCE99

Intervalle de confiance de 99%. Le résultat est une série de données ou un signal avec m valeurs à virgule flottante de 64 bits ou, pour plusieurs variables dépendantes, une liste. (*)

+ NLCF_OUTPUT_CONFIDENCE999

Intervalle de confiance de 99,9 %. Le résultat est une série de données ou un signal avec m valeurs à virgule flottante de 64 bits ou, pour plusieurs variables dépendantes, une liste. (*)

+ NLCF_OUTPUT_CONFIDENCE95_PARA

Intervalle de confiance de 95% des paramètres. Le résultat est une série de données avec n valeurs à virgule flottante de 64 bits (*)

+ NLCF_OUTPUT_CONFIDENCE99_PARA

Intervalle de confiance de 99 % des paramètres. Le résultat est une série de données avec n valeurs à virgule flottante de 64 bits (*)

+ NLCF_OUTPUT_CONFIDENCE999_PARA

Intervalle de confiance de 99,9 % des paramètres. Le résultat est une série de données avec n valeurs à virgule flottante de 64 bits (*)

+ NLCF_OUTPUT_CORRELATION

Matrice de corrélation. Le résultat est une matrice n x n avec des valeurs à virgule flottante de 64 bits. (*)

+ NLCF_OUTPUT_COVARIANCE

Matrice de covariance. Le résultat est une matrice n x n avec des valeurs à virgule flottante de 64 bits. (*)

+ NLCF_OUTPUT_ERROR_VARIANCE

Erreur de variance. Le résultat est une valeur à virgule flottante de 64 bits.

+ NLCF_OUTPUT_ITERATIONS

Nombre d'itérations nécessaires. Le résultat est un entier de 32 bits.

+ NLCF_OUTPUT_PARAMERROR

Erreur type des paramètres. Le résultat est une série de données avec n valeurs à virgule flottante de 64 bits (*)

+ NLCF_OUTPUT_PEAKS

Courbes de crête pour les modèles comportant plusieurs pics. Le résultat est une série de signaux ayant chacun m valeurs à virgule flottante de 64 bits.

+ NLCF_OUTPUT_PREDICTION95

Bande de prédiction de 95%. Le résultat est une série de données ou un signal avec m valeurs à virgule flottante de 64 bits ou, pour plusieurs variables dépendantes, une liste. (*)

+ NLCF_OUTPUT_PREDICTION99

Bande de prédiction de 99%. Le résultat est une série de données ou un signal avec m valeurs à virgule flottante de 64 bits ou, pour plusieurs variables dépendantes, une liste. (*)

+ NLCF_OUTPUT_PREDICTION999

Bande de prédiction de 99,9%. Le résultat est une série de données ou un signal avec m valeurs à virgule flottante de 64 bits ou, pour plusieurs variables dépendantes, une liste. (*)

+ NLCF_OUTPUT_PREDICTED_VALUES

Les données modélisées. Le résultat est une série de données ou un signal avec m valeurs à virgule flottante de 64 bits ou, pour plusieurs variables dépendantes, une liste.

+ NLCF_OUTPUT_R2

Coefficient de détermination multiple R2. Le résultat est une valeur à virgule flottante de 64 bits.

+ NLCF_OUTPUT_RA2

Coefficient ajusté de détermination multiple Ra2. Le résultat est une valeur à virgule flottante de 64 bits.

+ NLCF_OUTPUT_RESIDUAL

Résidus. Le résultat est une série de données ou un signal avec m valeurs à virgule flottante de 64 bits ou, pour plusieurs variables dépendantes, une liste.

+ NLCF_OUTPUT_RESIDUAL_SUM

Somme des résidus. Le résultat est une valeur à virgule flottante de 64 bits.

+ NLCF_OUTPUT_SOLUTION

Les paramètres trouvés. Le résultat est une série de données avec n valeurs à virgule flottante de 64 bits.

+ NLCF_OUTPUT_SSE

Somme résiduelle absolue des carrés. Le résultat est une valeur à virgule flottante de 64 bits.

+ NLCF_OUTPUT_SSER

Somme résiduelle relative des carrés. Le résultat est une valeur à virgule flottante de 64 bits.

+ NLCF_OUTPUT_SSR

Somme de régression des carrés. Le résultat est une valeur à virgule flottante de 64 bits.

+ NLCF_OUTPUT_SST

Somme totale des carrés. Le résultat est une valeur à virgule flottante de 64 bits.

+ NLCF_OUTPUT_STATUS

Affichage de l'état de l'algorithme. Le résultat est un entier de 32 bits.

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut NLCF_OUTPUT_PREDICTED_VALUES .

Settings

Une liste qui modifie les paramètres de l'algorithme utilisé.

L'argument peut comporter les éléments nommés suivants :

Constante

Signification

<MaximumNumberOfFunctionCalls>

Nombre maximal autorisé d'appels de fonction pendant le calcul. La valeur par défaut est de 100.

<XTolerance>

Tolérance de convergence X La consigne est 10-8.

<YTolerance>

Tolérance de convergence des fonctions relatives. La consigne est 10-8.

<FTolerance>**

Tolérance de convergence des fonctions absolues. La consigne est 10-15.

<GTolerance>*

Tolérance pour le cosinus de l'angle entre les colonnes de la matrice jacobienne actuelle et le vecteur résiduel correspondant. La consigne est 10-8.

<StepBound>

Limite d'étape. La valeur par défaut est de 100.

* uniquement utilisé avec l'algorithme de Levenberg-Marquardt

** utilisé uniquement avec l'algorithme Full Newton

Les valeurs sont renvoyées sous forme de liste ; par exemple :

[<MaximumNumberOfFunctionCalls> 100, <XTolerance> 1e-015,<YTolerance> 1e-015, <FTolerance> 1e-015, <StepBound> 1e+002]

Les structures de données autorisées sont Liste. Tous les types de données numériques sont autorisés. L'unité de l'argument est ignorée.

Algorithm

Spécifie l'algorithme à utiliser.

L'argument Algorithm peut avoir les valeurs suivantes :

Constante

Signification

NLCF_ALGORITHM_FULLNEWTON

Algorithme de Newton complet. (NL2SOL)

NLCF_ALGORITHM_LEVENBERGMARQUARDT

Algorithme de Levenberg-Marquardt. (MINPACK)

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut NLCF_ALGORITHM_FULLNEWTON .

OptionalParameters

Une liste qui peut être transmise au modèle.

L'argument peut comporter les éléments nommés suivants :

Constante

Signification

<NumberOfPeaks>

Nombre de pics du modèle à calculer. Cette option n'est pertinente que pour les modèles Peak.

<Baseline>

Indique quel modèle doit être utilisé pour la ligne de base. La consigne est NLCF_BASELINE_NONE. Cette option n'est pertinente que pour les modèles Peak. Le modèle sélectionné est ajouté au modèle Peak.L'argument peut avoir les valeurs suivantes :

Constante

Modèle

NLCF_BASELINE_NONE

pas de modèle

NLCF_BASELINE_CONSTANT

A

NLCF_BASELINE_LINE

A+Bx

NLCF_BASELINE_QUADRATIC

A+Bx+Cx2

NLCF_BASELINE_CUBIC

A+Bx+Cx2+Dx3

NLCF_BASELINE_POLY4

A+Bx+Cx2+Dx3+Ex4

NLCF_BASELINE_POLY5

A+Bx+Cx2+Dx3+Ex4+Fx5

<FixedParameters>

Est une série de données avec des valeurs booléennes qui indiquent si un paramètre est modifiable ou non. Le nombre de valeurs correspond au nombre de paramètres du modèle multiplié par le nombre de pics. TRUE signifie fixe, FALSE variable.

<SharedParameters>

Est une série de données avec des valeurs booléennes qui indiquent si un paramètre doit être partagé dans un modèle de pic avec plusieurs pics. Cette option n'est pertinente que pour plusieurs pics. TRUE signifie partager. Le nombre correspond au nombre de paramètres du modèle.

<AuxData>

Correspondent à des données arbitraires qui peuvent éventuellement être transmises au modèle défini par l'utilisateur en tant qu'argument 'd'.

Les valeurs sont renvoyées sous forme de liste. Exemple d'un modèle à 3 paramètres et 2 pics :

[<NumberOfPeaks>2, <FixedParameters>{FALSE, TRUE, FALSE, FALSE, FALSE, FALSE}, <SharedParameters>{FALSE, FALSE, FALSE}]

Les structures de données autorisées sont Liste. Tous les types de données sont autorisés. L'unité de l'argument est ignorée.

Remarques

L'état de sortie décrit la raison pour laquelle un calcul a été interrompu. On distingue deux groupes. L'algorithme se termine avec succès si certains critères de convergence sont remplis. Si ce n'est pas le cas, l'algorithme interrompt le calcul en raison de critères d'interruption. Le résultat de la fonction est alors exclusivement la sortie d'état.

Critères de convergence :

Constante

Signification

0

Convergence X.

1

Convergence des fonctions relatives.

2

Convergence absolue des fonctions.

3

Convergence X et convergence des fonctions relatives.

4

Tolérance pour le cosinus de l'angle entre les colonnes de la matrice jacobienne actuelle et le vecteur résiduel correspondant.

Critères de résiliation :

Constante

Signification

5

Convergence singulière.

6

Fausse convergence.

7

Nombre maximum d'itérations atteint.

8

Valeurs initiales erronées.

9

Le gradient ne peut pas être calculé.

10

Abandonner manuellement le calcul.

11

Erreur d'algorithme interne.

12

Nombre maximum d'appels de fonction atteints.

13

Le modèle ne peut pas être calculé.

Les résultats sont accessibles en utilisant les noms d'éléments de liste suivants :

Constante

Signification

.["AverageResidual"]

Moyenne résiduelle.

.["Baseline"]

Ligne de base pour les modèles comportant plusieurs pics.

.["Confidence95"]

Intervalle de confiance de 95%.

.["Confidence99"]

Intervalle de confiance de 99%.

.["Confidence999"]

Intervalle de confiance de 99,9 %.

.["ConfidenceParameter95"]

Intervalle de confiance de 95% des paramètres.

.["ConfidenceParameter99"]

Intervalle de confiance de 99 % des paramètres.

.["ConfidenceParameter999"]

Intervalle de confiance de 99,9 % des paramètres.

.["Correlation"]

Matrice de corrélation.

.["Covariance"]

Matrice de covariance.

.["ErrorVariance"]

Erreur de variance.

.["Iterations"]

Nombre d'itérations nécessaires.

.["ParameterError"]

Erreur type des paramètres.

.["Peaks"]

Courbes de crête pour les modèles comportant plusieurs pics.

.["Prediction95"]

Bande de prédiction de 95%.

.["Prediction99"]

Bande de prédiction de 99%.

.["Prediction999"]

Bande de prédiction de 99,9%.

.["PredictedValues"]

Les données modélisées.

.["R2"]

Coefficient de détermination multiple R2.

.["Ra2"]

Coefficient ajusté de détermination multiple Ra2.

.["Residual"]

Résidus.

.["ResidualSum"]

Somme des résidus.

.["Solution"]

Les paramètres trouvés.

.["SSE"]

Somme résiduelle absolue des carrés.

.["SSER"]

Somme résiduelle relative des carrés.

.["SSR"]

Somme de régression des carrés.

.["SST"]

Somme totale des carrés.

.["Status"]

Affichage de l'état de l'algorithme.

Vous pouvez également utiliser la syntaxe Formula.ListElementName. Dans ce cas, vous devez toutefois tenir compte du fait que les propriétés de la formule, auxquelles on peut accéder de la même manière, ont la priorité sur les éléments de liste portant le même nom. Cela s'applique, par exemple, à l'élément R2.

Disponible dans

FlexPro Basic, Professional, Developer Suite

Exemples

Dim list = NonLinCurveFit(MODEL_EXP_EXPONENTIAL_DECAY2, Ag, {13.33,980.56,33.92,133.80,188.28}, , _
NLCF_WEIGHTING_DATA, , NLCF_SCALING_NONE, , NLCF_OUTPUT_ALL, _
[<MaximumNumberOfFunctionCalls> 100, _
<XTolerance> 1e-008, _
<YTolerance> 1e-008, _
<FTolerance> 1e-015, _
<StepBound> 1e+002], _
NLCF_ALGORITHM_FULLNEWTON, _
[<NumberOfPeaks>1, _
<BaseLine>NLCF_BASELINE_NONE , _
<FixedParameters>{FALSE,FALSE,FALSE,FALSE,FALSE}, _
<SharedParameters>{FALSE,FALSE,FALSE,FALSE,FALSE}])
 

Approximation du signal "Ag" avec le modèle de décroissance exponentielle (variante 2). Le résultat du calcul est une liste avec tous les résultats disponibles. Il s'agit d'un exemple tiré du Tutoriel Ajustement de courbes non linéaires.

list.["PredictedValues"]

Renvoie les données modélisées.

NonLinCurveFit(MODEL_EXP_EXPONENTIAL_DECAY2, Ag, {13.33,980.56,33.92,133.80,188.28})

Il en résulte également des données modélisées. Il s'agit d'un appel de fonction simplifié pour l'exemple ci-dessus qui utilise les valeurs par défaut.

NonLinCurveFit("Dim a = p[0]\r\n _
Dim b = p[1]\r\n _
Dim c = p[2]\r\n _
a + b * x + c * x^2", _
Data, {1,1,0,0}, , , , , , , [<MaximumNumberOfFunctionCalls> 300])
 

Approximation des données 'Data' avec le modèle personnalisé a + b * x + c * x2. Un maximum de 300 itérations est autorisé.

NonLinCurveFit("Dim a = p[0]\r\n _
Dim b = p[1]\r\n _
Dim s1 = d.[0]\r\n _
Dim s2 = d.[1]\r\n _
a * s1 + b * s2", _
Data, {1,1}, , , , , , , [<MaximumNumberOfFunctionCalls> 300], , [<AuxData> [Series1, Series2] ])
 

Approximation de l'ensemble de données "Données" avec le modèle personnalisé a * Série1 + b * Série2. Les deux séries de données "Series1" et "Series2" sont transmises sous la forme d'une liste à deux éléments.

Voir aussi

Fonction ParameterEstimation

Fonction NonLinModel

Objet d'analyse Ajustement de courbes non linéaires

Tutoriel Ajustement de courbes non linéaires

Options de résultats statistiques de l'ajustement de courbes non linéaires

Modèles non linéaires