5

私はこれを試しましたが失敗しました:

find_fit(data, quadratic_residues)

私は水の流量に関するデータに最適なものを見つけようとしています:http://dl.getdropbox.com/u/175564/rate.png

---コメントの後に編集---

新しいコード:

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

エラーメッセージ:

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

- -編集

エラーメッセージは次のとおりです。

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

写真と同じ:http: //dl.getdropbox.com/u/175564/sage.png

4

3 に答える 3

7
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'
  )
于 2012-08-04T18:05:12.447 に答える
3

あなたの問題は、 quadratic_residues がおそらくあなたが考えていることを意味しないということだと思います。最適な二次モデルを当てはめようとしている場合は、次のようなことをしたいと思います。

var('a, b, c, x')
model(x) = a*x*x + b*x + c
find_fit(data, model)
于 2009-01-18T05:45:00.007 に答える
2

Steven の例を試してみると、エラーも発生しました。

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

これは、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]

a,b,c と x のどれがモデルの変数に対応するかを sage に伝えるには、variables=[x] が必要です。

于 2012-07-01T17:00:12.440 に答える