algorithm - 使用线性规划查找 "line of best fit"

标签 algorithm

这是一道作业题。我被要求找到一组给定的 n 点 (2D) 的最佳拟合线的系数。系数是 a b c in: ax+by=c。假设有 n 个点,使用线性规划找到导致最小“最大绝对误差”的系数,定义为:max(|a*xi+b*yi -c|), i 取值范围为 1-n。

这是我的思考过程:

令 M 表示最大绝对误差。线性规划的目标是最小化 M。由于 M 是所有 |a*xi+b*yi-c| 中最大的,因此它必须大于它们中的每一个。所以(a*xi+b*yi-c)<= M,且(a*xi+b*yi-c)>= -M,对于所有的i(第二个表达式是为了占绝对符号)。

我认为这足以定义问题。当我将条件放入求解器时,它返回 a b c 都等于 0,但实际上它不应该。我想我在这里缺少一些条件。有人可以指出给我吗?

最佳答案

您应该添加一个额外的语句:a 或 b 不应为 0。如果两个值都为 0,则您的系统有一个有效的解决方案,但不存在 a 和 b 都等于 0 的行。

编辑:改进 Rerito 的建议。任何行的 a 或 b 都不等于 0。还有行 (k*a)*x + (k*b)* y + (k*c)(a) *x + (b)* y + (c) 对于任何非零 k 都是相同的。所以我会说你需要运行求解器两次 - 一次指定 a 为 1,一次指定 b 为 1,之后选择更好的解决方案。您必须运行求解器两次,因为最好的解决方案可能是 a=0b=0(但不是两者)。

关于algorithm - 使用线性规划查找 "line of best fit",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15896850/

相关文章:

algorithm - 如果变量是相同的存储位置,为什么 XOR 交换算法会失败,但如果变量是相同的值则不会

arrays - 计算数组中不包括某些特定对的子数组的适当数量?

Python hashlib 模块产生奇怪的结果

algorithm - 考虑时间复杂度时,Theta(n) 和 T(n) 有什么区别?

algorithm - 从上下文无关文法生成字符串

algorithm - 将二维数组映射到一维数组时的数组大小

python - 用Python编写一个高效的算法来解决数学问题

algorithm - 计算总组合

algorithm - 是否存在利用已知可搜索值分布的搜索算法?

java - 使斐波那契更快