【发布时间】:2017-08-06 10:34:25
【问题描述】:
我有一组二次方程,比如
x² + x + y = 7
x + 3y = -3
y² + x² + z = 11
所有系数都是整数。这组方程要么没有解,要么是一整套解的一个解。
有人知道找出这些方程是否有解的方法吗?
我的第一个想法是逐个求解这些方程,并使用结果来求解其他方程。问题在于舍入误差:理论上,如果我有两个方程
x + y = 5
x = 5 - y
会有很多解决方案。但是如果我的方法导致
x + y = 4.999999
x = 5 - y
系统突然无解。在下一步中,我可以添加 epsilon 来补偿舍入误差,但我不确定它们应该有多大。有什么想法或更好的方法吗?
PS:背景是在平面上寻找一组复杂的圆和线的交点。
【问题讨论】:
-
您可以尝试使用
BigDecimal来消除精度错误(尽管您需要确定一个常见的最大精度)或将这些值与某个 epsilon 进行比较,例如boolean equal = Math.abs(4.999 - 5) > 0.0001;。后一种方法通常用于几何应用中,例如碰撞检测等。在这些应用中,结果需要在数值上保持稳定,同时尽可能降低精度。 -
epsilon 值是您的交点的精度,因此在您的情况下,每条曲线/曲面上最近点的最大距离被视为交点(同一点)通常设置为最小的一小部分您的形状中的细节....或像素大小的一小部分(如果渲染等)...但要注意使用它的哪个功能...例如,如果您有线
x+c0.y = c1,那么您使用eps^1,但对于圆圈@ 987654329@ 你使用eps^2所以你在方程之间仍然有相同的单位/公制。我解决了How approximation search works