Question

J'ai essayé sans succès:

find_fit(data, quadratic_residues)

J'essaie de trouver les données les mieux adaptées aux débits d'eau: http : //dl.getdropbox.com/u/175564/rate.png

--- modifier après le commentaire ---

Le nouveau code:

var('x')
model(x) = x**2
find_fit((xlist, reqlist), model)

Le message d'erreur:

Traceback (click to the left for traceback)
...
TypeError: data has to be a list of lists, a matrix, or a numpy array

--- modifier

Le message d'erreur est maintenant:

Traceback (click to the left for traceback)
...
ValueError: each row of data needs 2 entries, only 5 entries given

La même chose ici qu'une image: http://dl.getdropbox.com/u/175564/sage.png

Était-ce utile?

La solution

mydata = [[1,3],[2,7],[3,13],[4,24]]
var('a,b,c')
mymodel(x) = a*x^2 + b*x + c 
myfit = find_fit(mydata,mymodel,solution_dict=True)
points(mydata,color='purple') + plot(
  mymodel(
    a=myfit[a],
    b=myfit[b],
    c=myfit[c]
    ), 
    (x,0,4,),
    color='red'
  )

Autres conseils

Je pense que votre problème est que quadratic_resid ne signifie probablement pas ce que vous pensez que cela signifie. Si vous essayez d’adapter le meilleur modèle quadratique, je pense que vous voulez faire quelque chose comme.

var('a, b, c, x')
model(x) = a*x*x + b*x + c
find_fit(data, model)

En essayant à Steven son exemple, j'ai aussi rencontré l'erreur:

ValueError: each row of data needs 5 entries, only 2 entries given

Voici un exemple plus explicite que j'ai testé pour fonctionner dans sage 4.7.

sage: l=[4*i^2+7*i+134+random() for i in xrange(100)]
sage: var('a,b,c,x')
(a, b, c, x)
sage: model=a*x^2+b*x+c
sage: find_fit(zip(xrange(100),l),model,variables=[x])
[a == 4.0000723084513217, b == 6.9904742307159697, c == 134.74698715254667]

Vous avez apparemment besoin des variables = [x] pour indiquer à sage lequel de a, b, c et x correspond à la variable de votre modèle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top