NonLinCurveFit (FPScript)

21.09.2021

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, Data, [ InitialValues ], [ Bounds ], [ WeightingMode = NLCF_WEIGHTING_DATA ], [ Variance ], [ ScalingMode = NLCF_SCALING_NONE ], [ Scaling ], [ OutputOptions = NLCF_OUTPUT_PREDICTED_VALUES ], [ Settings ], [ Algorithm = NLCF_ALGORITHM_FULLNEWTON ] [ , 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 parmi une liste de modèles prédéfinis ou un modèle personnalisé peut être spécifié.

Le modèle personnalisé est renvoyé sous la forme d'une chaîne de caractères ou d'une série de données à deux chaînes de caractères. La première chaîne contient le code FPScript pour le calcul de la fonction modèle. Avec la deuxième chaîne, un code FPScript est passé qui calcule analytiquement les dérivations partielles de la fonction modèle pour les différents paramètres et est renvoyé sous forme de liste. Si une seule chaîne est spécifiée, les dérivés sont approximés numériquement. Les paramètres d'un modèle personnalisé avec n nombre de paramètres doivent être référencés dans le code FPScript comme p[0], p[1], ..., p[n-1]. 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]"} est spécifié pour un calcul analytique ou la chaîne "p[0] + p[1] * x" pour un calcul numérique des dérivés.

Il convient de noter que x est passée comme une série de données et non comme une valeur scalaire, ce qui signifie 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 modèles sont ensuite renvoyées sous forme de liste, et les dérivés 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éries de données. Les types de données pris en charge sont Entier de 16 bits, Entier de 32 bits, 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éries de données, Matrice de données, Signal, 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éries 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 présentes sous la forme d'une matrice de données ou d'une série de signaux, la pondération est alors de 1 / σ2; sinon, il n'y a pas de pondération.

NLCF_WEIGHTING_CUSTOM

Pondération avec 1 / σ2; σ2 est spécifié.

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

Variance

Une série de données avec les variances des points de données individuels. Si vous utilisez un modèle personnalisé avec plusieurs variables dépendantes, vous devrez spécifier une liste avec une série de données par variable. Vous ne devez spécifier l'argument que si vous avez sélectionné la pondération personnalisée.

Les structures de données autorisées sont Séries 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 basée sur les limites 1 / Maximum(Absolute(Lower Bounds Parameter), Absolute(Upper Bounds Parameter)) (*)

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éries 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

Précise les résultats qui doivent être renvoyés. Plusieurs résultats sont présentés sous forme de liste. Si vous omettez l'argument, tous les résultats disponibles sont produits. Si, par exemple, la matrice de corrélation et la matrice de covariance doivent être produites, 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 Newton complet si des limites sont spécifiées et une mise à l'é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 maximum d'appels de fonction autorisés pour le calcul. La valeur par défaut est 100.

<XTolerance>

Tolérance de convergence X. La valeur par défaut est de 10-8.

<YTolerance>

Tolérance de convergence des fonctions relatives. La valeur par défaut est de 10-8.

<FTolerance>**

Tolérance de convergence des fonctions absolues. La valeur par défaut est de 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 valeur par défaut est de 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>

Précise le modèle à utiliser pour la ligne de base. La valeur par défaut 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>

Une série de données avec des valeurs booléennes qui spécifient si un paramètre est variable 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 signifie variable.

<SharedParameters>

Une série de données avec des valeurs booléennes qui spécifient si un paramètre doit être utilisé pour un modèle Peak avec plusieurs pics. Cette option n'est pertinente que pour plusieurs pics. TRUE signifie utilisation partagée. Le nombre correspond au nombre de paramètres du modèle.

<AuxData>

Toutes les données qui peuvent être transmises en option au modèle personnalisé en tant qu'argument "d".

Les valeurs sont renvoyées sous forme de liste. Voici un exemple de modèle avec trois paramètres et deux 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'affichage de l'état décrit la raison pour laquelle un calcul a été interrompu. Une distinction est faite entre 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 sur la base des critères de résiliation. Le résultat de la fonction n'est alors que l'affichage de l'é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.

Vous pouvez accéder aux résultats 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.Elementname. Toutefois, dans ce cas, vous devez considérer que les propriétés de la formule, qui sont accessibles de la même manière, ont la priorité sur les éléments de la 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 de l'ensemble de données "données" en utilisant 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

Partager l’article ou envoyer par mail :

Vous serez probablement intéressé par les articles suivants :