2017-04-05 247 views
2

我想将某些测试数据放入一些隐式函数中。隐式函数的FindFit - 数学公式

我想拟合椭圆方程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