首页 文章

线性编程精度

提问于
浏览
0

我正在研究一个线性问题,以尽量减少 . 它定义明确,主要使用范围[0; 1]中的数字 . Excel的线性求解器以及Mathematica的LinearProgramming确实找到了一个解决方案,但是我认为它以一种坏的方式违反了我的一个约束:

约束必须完全等于0才能使我的解决方案有效,而两个求解器都将数字〜10E-17放在那里并将其视为满意 . 我试着用准确度进行操作但是当我进入10E-17时它表明问题不是线性的,这是错误的 . 自动缩放也没有帮助 .

我知道它涉及计算机中使用的浮点数的有限精度 . 我想确定我是否在这里注定要么是否有任何技巧来克服这个问题 .

1 回答

  • 2

    线性编程求解器几乎肯定使用IEEE 754 64位二进制浮点 . 它存储相当于53个有效位,相当于大约15.9个十进制数字 . 有了这种表示,准确性是不可能的,找到10e-17左右的解决方案就像你将得到的一样好 .

    首先要做的是检查普通求解器得到的近似解是否足以解决您的实际问题 . 请记住,任何用作输入的测量物理量的准确度都要低得多 .

    @harold在评论中指出“有些求解器有一个精确模式,使用任意有理数 . 尽管很慢 . ” . 如果你真的需要精确性,寻找具有有理数表示的求解器是你唯一的解决方案 .

相关问题