避免隐藏大系数

避免隐藏大系数

如前所述,改进数值的一个典型建议是限制约束矩阵系数的范围。这条准则背后的基本原理是,在线性表达式中添加的项应该具有相当的大小,以便使舍入误差最小化。例如:

< span > < /美元跨度> \{数组}{rcl}开始x - 10 ^{6}上的y & \组0 \ \ y \[0, 10] \结束美元{数组}< span > < / span >
由于约束中的系数范围较大,通常被认为是数值不稳定的潜在来源。然而,很容易实现一个简单的(但无用的)替代方案:
< span > < /美元跨度> \{数组}{rcl}开始x - 10 y_1 & \ \ \ y_1组0 - 10 y_2 & = & 0 \ \ y_2 - 10 y_3  &=... ...y_4 & = & 0 \ \ y_4 - 10 y_5 & = & 0 \ \ y_5 - 10 y & = & 0上的\ \ y \[0, 10] \结束美元{数组}< span > < / span >
这种形式在矩阵中有更好的值。然而,解决方案 < span > < / span > y = -10美元^ {6},x = 1 \ < span > < / span >美元可能仍然被认为是可行的,因为在公差范围内变量和约束的界限可能被违反。一个更好的选择是重新规划
< span > < /美元跨度> \{数组}{rcl}开始x - 10 ^{6}上的y & \组0 \ \ y \[0, 10] \结束美元{数组}< span > < / span >
作为
< span > < /美元跨度> \{数组}{rcl}开始x - 10 ^ {3} y ' & \组0 \ \ y ' &上的\[0,10 ^ 4]结束\ \ \{数组}< span > < / span >美元
在哪里 <span>$</span>10^{-3} y' = y<span>$</span>.在此设置中,最负的值为< span > < /美元跨度> x < span > < / span >美元哪个是可行的< span > < / span > -10美元^ {3}< span > < / span >美元,和原始< span > < / span > y < span >美元< / span >它是一个变量< span > < / span > -10美元^ {9}< span > < / span >美元,这比原来的情况有了明显的改善。