NonLinCurveFit (FPScript)
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 :
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 :
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 :
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 :
* 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 :
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 :
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
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