繁体   English   中英

查找一组二次方程的解

[英]Find solutions for a set of quadratic equations

我有一组二次方程式,例如

x² + x + y = 7
x + 3y = -3
y² + x² + z = 11

所有系数都是整数。 一组方程可能没有解,也可能是整个解的一个解。

有人知道找出这些方程式是否有解的方法吗?

我的第一个想法是一对一地求解这些方程,然后使用结果来求解其他方程。 问题是舍入误差:如果理论上我有两个方程

x + y = 5
x = 5 - y

会有很多解决方案。 但是如果我的方法导致

x + y = 4.999999
x = 5 - y

系统突然没有解决方案。 在下一步中,我可以添加epsilons来补偿舍入误差,但是我不确定它们应该有多大。 有什么想法或更好的方法吗?

PS:背景是找到平面上一组复杂的圆和线的交点。

由于您具有精确的整数输入,因此可以使用精确的算法。 例如,您可以计算与方程式相对应的多项式的Groebner基 ,例如

x² + x + y - 7
x + 3y + 3
y² + x² + z - 11

使用术语的字典顺序,您将以一种“三角”形式获得Groebner基础,其中第一个多项式包含尽可能少的变量,例如

81z² - 176z + 92
2y + 9z - 8
2x - 27z + 30

一旦z固定,将为您提供z的两个实根以及y和x的唯一值。 如果计算基的第一个多项式不包含变量,则您的方程组将没有任何解。 如果计算基数中的第一个多项式包含两个变量,则您有无限多个解(可能很复杂)。

您可以使用Wolfram Alpha在线试验Groebner基地(例如, 计算示例的基础 )。 可以使用Buchberger算法来计算Groebner基础,该算法在Java中可用。

注意:Buchberger算法的最坏情况下的复杂度是最大输入总次数的两倍指数,但是在您的应用程序中这可能无关紧要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM