我想用数值求解一个二次方程组:
在哪里,,是实数并且变量(这里只有三个,但我想解决多达 50 个变量的系统)。
我已经尝试过 Newton-Krylov 方法(在 scipy 中实现),但它似乎并不稳定。我现在正在尝试使用在 sympy 中实现的例程,但我遇到了这个示例说明的问题:
from sympy import *
from sympy.abc import x,y,z
Equations = [x**2 + y + z - 1,
x + y**2 + z - 1,
x + y + z**2 - 1]
如果我们使用solve_poly system
我们获得
solve_poly_system(Equations, x, y, z)
[(0, 0, 1), (0, 1, 0), (1, 0, 0), (-1 + sqrt(2), -1 + sqrt(2), -1 + sqrt(2)), (-sqrt(2) - 1, -sqrt(2) - 1, -sqrt(2) - 1)]
并且,如果我们使用solve_triangulated
我们获得
solve_triangulated(Equations, x, y, z)
[(0, 0, 1), (0, 1, 0), (1, 0, 0)]
一些解决方案没有找到solve_triangulated
。是什么原因?我们可以找到什么样的解决方案 solve_triangulated
?