具有权重的scipy(leatsq)非线性模型

2024-04-26 14:48:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近一直在用mathematica来处理我的数据。我有一种方法来计算一个x,y坐标从4个或更多的距离测量来自静态接收器(也包括x,y坐标)。在

我用mathematica函数最有效地处理我的数据:

NonlinearModelFit[data, Norm[{x, y} - {x0, y0}], {x0, y0}, {x, y},
                  Weights -> 1/distances, Method->"LevenbergMarquardt"]

在哪里。。。在

^{pr2}$

x0,y0是它找到的解决方案

上述mathematica输出为:

FittedModel[{"Nonlinear", {x0 -> 548272.0043962265,
                           y0 -> 5.912735710367113*^6},
            {{x, y}, Sqrt[Abs[x - x0]^2 + Abs[y - y0]^2]}},
            {{1/93, 1/39, 1/88, 1/97}}, {{548189.217202, 5.91277996059*^6, 93},
            {548236.967784, 5.91271780716*^6, 39},
            {548359.406452, 5.91275254022*^6, 88},
            {548358.636206, 5.91269089573*^6, 97}},
            Function[Null, Internal`LocalizedBlock[{x, x0, y, y0}, #1], {HoldAll}]]

x0, y0是我的解决方案。在

所以我不是在拟合曲线,而是拟合到一个点(权重与距离成反比)。我在google上浏览了一下,但是不知道从哪里开始使用scipy函数scipy.optimize.leatsq引入加权函数的算法。。。在

那么,如果mathematica这么做,我为什么要这么做呢?从python代码调用mathematicscript(使用subprocess module)太慢了,我想用python重写,看看速度是否可以提高。在


Tags: 数据方法函数距离normdata静态scipy
1条回答
网友
1楼 · 发布于 2024-04-26 14:48:36

mathematica中的一个等效方法(给出完全相同的x0,y0),也许这更容易考虑移植到python。。在

FindMinimum[ 
       Total @ ((1/#[[3]]) (Norm[#[[1 ;; 2]] - {x0, y0}] - #[[3]])^2  & /@ 
               data) , {x0, y0}]

注意,我明确地将权重(1/#[[3]])放入错误标准中。在

同样的东西更有可读性。。在

^{pr2}$

相关问题 更多 >