【问题标题】:FindFit for implicit functions - mathematicaFindFit 用于隐式函数 - mathematica
【发布时间】:2017-04-05 22:16:29
【问题描述】:

我想将一些测试数据放入一些隐式函数中。

我想为一个椭圆方程 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)。 >>

【问题讨论】:

    标签: wolfram-mathematica implicit test-data


    【解决方案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}]
    

    要使用拟合函数,您需要求解 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] 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多