2017-04-05 12 views
2

暗黙的な関数にいくつかのテストデータを収めたいと思います。暗黙関数のFindFit - mathematica

楕円方程式f(x、y)= aにいくつかのパラメータを当てはめたいと思います。ここで、aは既知の変数です。テストデータと関数はより複雑ですが、変数よりもデータポイントが多くなります。私はf(x)= yのような明示的な形に収める方程式を変換することは不可能なので、基本的な考え方を得るためにいくつかのコードを付けました。

Test = {{0, 1}, {0.1, 0.9}, {1.1, 0}}; 

Ftest = a*x^2 + b*y^2 

FindFit[Test, Ftest == 2, {a, b}, {x, y}]; 

しかし、これはエラーにつながる:座標の数は、(1) (2)\変数の数に等しくありません。 >>

あなたは、最小二乗最小化としてこれを提起することができ

答えて

1

data = {{0, 1}, {0.1, 0.9}, {1.1, 0}} 
Ftest[x_, y_] := a*x^2 + b*y^2 
fit = FindMinimum[ Total[(Ftest @@@ data - 2)^2] , {a, b}] 
ContourPlot[ (Ftest[x, y] /. fit[[2]]) == 2 , {x, 0, 1.5}, {y, 0, 
    1.5}, Epilog -> {Red, Point /@ data}] 

enter image description here

あなたがyについて解く必要があり、あなたがで終わるフィット機能を使用するには:

fit = NonlinearModelFit[data, Sqrt[2 - a*x^2]/Sqrt[b], {a, b}, x] 

Plot[fit[x], {x, 0, 1.2}, Epilog -> {Red, Point /@ data}, 
AspectRatio -> 1] 

enter image description here

関連する問題