我想使用Python解决由6个非线性方程组成的系统。我发现可以很容易地使用scipy
的{{1}}来求解由3个非线性方程组成的系统。但是,当我将其扩展到更大的系统时,我发现该解决方案无法解决方程组。我可以纠正一些问题,以便解决6个非线性方程吗?
fsolve
当将给定的解决方案应用到方程组中时,我应该期望收到零(或接近零)。这将确认所计算的解可以解决给定的方程组。我尝试使用此方法对3个方程组和6个方程组进行检查,但是只有3个方程组可以通过此检查正确求解。如何解决由6个非线性方程组成的系统?
答案 0 :(得分:0)
您的系统不一致,您的最初猜测不正确。尝试将第四个方程添加到第三个方程的系统中:
F[0] = 20 * x1 + x2**2 # "first" equation
F[1] = x2 - x1 # "second" (=> x1 == x2)
F[2] = x3 + 5 - x1*x2 # "third"
F[3] = x3 + x2 # "fourth" equation (=> x3 == -x2)
首先,让我们解决前三个方程。从第二个等式可以得出,x1
等于x2
。因此,第一个等式可以重写为:
F[0] = 20 * x1 + x1**2
会导致x1 = -20
(和x2 = -20
)。在第三个方程式中使用它得出x3 = 395
。尝试将第一个系统的初始条件修改为uInitial = np.array([-30, -30, 1])
-您应该获得正确的答案。
现在,让我们解决所有四个方程式。第三个等式利用x2 == x1
的事实可以重写为:
F[2] = x3 + 5 - x1**2
从第四个方程式得出x3 == -x2
(也是如此x3 == -x1
)。因此,该方程式可以重写为x3 + 5 - x3**2 == 0
=> x3 = 0.5 +(-) sqrt(21)/2
,这与我们使用前三个方程式得出的395
不同。
这表明您的方程组不一致,没有解。