2 votes

Erreur d'ajustement de Gnuplot : matrice singulière dans Givens()

Je veux ajuster une fonction avec un ensemble de données en utilisant gnuplot.

J'utilise un exemple de jeu de données, dans le fichier "data" :

1 2
5 4
6 5
7 8

Si je fais dans gnuplot

>f(x) = a*x+b
>fit f(x) "data" via a,b

Cela fonctionne très bien, (et avec cet exemple j'obtiens a0.855 et b0.687)

Maintenant, ce que je veux vraiment faire est d'adapter la fonction floor(a*x+b) . J'ai donc essayé exactement de la même manière

>f(x) = floor(a*x+b)
>fit f(x) "data" via a,b

Et j'obtiens la sortie

 Iteration 0
 WSSR        : 8                 delta(WSSR)/WSSR   : 0
 delta(WSSR) : 0                 limit for stopping : 1e-005
 lambda   : 0

initial set of free parameter values

a               = 1
b               = 1
         Singular matrix in Givens()
         error during fit

La recherche sur Google ne m'a pas aidé, j'ai également essayé de trouver s'il y avait une contre-indication à l'utilisation de l'ajustement au sol, mais là encore, je n'ai rien trouvé.

Quelqu'un a une idée ?

Note : J'utilise Gnuplot 4.6 patchlevel 0, construit pour Windows 32bit.

4voto

george Points 2473

Il existe un problème fondamental d'ajustement avec le plancher, à savoir que votre fonction d'erreur des moindres carrés est constante par morceaux, de sorte que lorsque vous recherchez le gradient de l'erreur par rapport à vos paramètres d'ajustement, vous obtenez toujours zéro.

Dans cet exemple, la somme minimale de l'erreur quadratique est exactement de 3 pour une gamme de a,b dans le voisinage de .85,1.5.

Mathermatica, (qui est bien plus puissant), donne un résultat 1,1 accompagné d'un avertissement indiquant qu'en raison du gradient nul, il ne peut pas être sûr qu'il s'agisse réellement d'un minimum.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X