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 :
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 :
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 :
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. 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
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