首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐函数的FindFit - mathematica

隐函数的FindFit - mathematica
EN

Stack Overflow用户
提问于 2017-04-05 13:19:16
回答 1查看 934关注 0票数 3

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

我想给一个椭圆方程f(x,y)=a拟合几个参数,其中a是一个已知变量。我的测试数据和函数更复杂,但是我得到的数据点比变量多。不可能将我想要拟合的方程转换成一个显式形式,如f(x)=y,因此我附加了一些代码来获得基本思想。

代码语言:javascript
复制
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)。>>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-05 14:16:29

您可以将其设为最小二乘最小化:

代码语言:javascript
复制
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}]

要使用fit函数,您需要对y进行求解,最后得到:

代码语言:javascript
复制
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] 

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43232442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档