给定3D中的一组点,通常的问题是找到a, b, c
以下形式的平面方程的系数:
z = a*x + b*y + c
从而使所得平面 最适合 该组点。
它依赖于对系数的初始猜测,并最小化了将每个点到平面表面的距离相加的误差函数。
它C
在等式中求解z = A*C
,其中A
是x,y
点集的坐标的并置,z
是点集的z
坐标,C
是a,b,c
系数。
与上述方法中的代码不同,此代码似乎不需要对平面系数进行初步猜测。
由于该
minimize
函数需要初始猜测,因此这意味着它可能会收敛或可能不会收敛到最优解(取决于猜测的好坏)。第二种方法是否有类似的警告,还是会返回始终精确的解决方案?
最小二乘(scipy.linalg.lstsq
)保证收敛。实际上,有一个封闭形式的解析解(由给出(A^T A)^-1 A^Tb
(其中^T
矩阵转置和^-1
矩阵求逆)
但是,标准优化问题通常无法解决-我们不能保证找到一个最小值。然而,对于给定的公式,发现一些a, b, c
这样z = a*x + b*y + c
,我们有一个线性优化问题(的约束条件和目标是变量,我们正在努力,以优化线性)。线性优化问题通常可以解决,因此scipy.optimize.minimize
应收敛到最优值。
注意:即使我们这样做,它在约束中也是线性的z = a*x + b*y + d*x^2 + e*y^2 + f
-我们不必将自身限制为的线性空间(x,y)
,因为我们已经有了这些点(x, y, x^2, y^2)
。对于我们的算法,这些看起来就像矩阵中的点A
。因此,实际上我们可以使用最小二乘法获得一个高阶多项式!
简要说明一下: 实际上,所有不使用精确解析解的求解器通常都停在实际答案的可接受范围内,因此,很少有我们获得 精确
解的情况,但往往如此最后,我们接受它在实践中是准确的。此外,即使是最小二乘解算器也很少使用分析解决方案,而是求助于更快的方法,例如牛顿法。
如果要更改优化问题,那将不是事实。我们通常可以为某些类型的问题找到一个最佳值(其中最大的一类称为凸优化问题-
尽管有很多非凸问题可以在某些条件下找到一个最佳值)。
如果您想了解更多信息,请查看Boyd和Vandenberghe的Convex
Optimization。第一章不需要太多的数学背景,它概述了一般的优化问题及其与线性和凸规划等可解决的优化问题的关系。
问题内容: 我花了很多时间试图寻找一种简单的方法- 理想情况下,一个神奇的库在那里某个地方可以获取我的3D数据点集,并使用两个正交点在最佳拟合线上返回2个点回归或最小二乘,还返回拟合线的误差。这样的事情存在吗?如果存在,在哪里? 问题答案: 这很容易做到,但是要自己编写,您将需要特征值求解器或奇异值分解。将(x-xbar,y-ybar,z-zbar)数据的nx3矩阵A创建为列。保存这些列表示以后,
我继续玩Retor,现在我看到运算符的行为完全类似于,我想知道是否有任何我不明白的区别。 这两个示例的行为和返回的结果相同。 问候。
我在读一篇关于OOP中的关系、关联、组合、聚合等的文章。有些事情令人困惑 因此,在PHP中,我们调用以下代码组合 在阅读了几篇关于作文的文章后 以下是组成示例: 因此,根据我的理解,聚合意味着A类的对象可以存在于B类之外,而组合意味着A类生命周期的对象取决于B类。 我正确理解了吗?
问题内容: 我试图理解这些术语的含义。我举了一些例子,例如: 汇总:Facebook 有一个 用户 组成:facebook 中的 每个用户 都有一个 会话。 协会:人们 使用 浏览器 但是我对 具有 和 使用我的 示例感到困惑。为什么不能是用户 使用 Facebook帐户或Facebook 使用 会话来认证用户? 就OOP而言,这是错误的吗?我在哪里想念这个概念? 问题答案: 该 使用 关系意味着
问题内容: 我希望表中的行仅可由组成员访问。我创建用户并通过以下方法将其添加到组中, 然后,我编写的策略使其仅对当前用户可用。但是我需要整个小组来访问它。 pgUser命名可以访问该行的用户。我希望将pgUser列替换为pgRole,其中提到了组的名称,该组的成员可以访问该特定行。任何使行可被整个组访问的提示或方法都是值得赞赏的。 问题答案: 这似乎可行:
本文向大家介绍java集合与数组的相同点和不同点,包括了java集合与数组的相同点和不同点的使用技巧和注意事项,需要的朋友参考一下 数组: 数组可以用来保存多个基本数据类型的数据,也可以用来保存多个对象。 数组的长度是不可改变的,一旦初始化数组时就指定了数组的长度(无论是静态初始化还是动态初始化)。 数组无法保存具有映射关系的数据。 集合: 集合是只用于存储数量不等的对象。 集合的长度是可变的。