使用python fsolve查找具有多个根的非线性方程组的根



我有以下非线性方程组,我想找到它的根:

  • x-exp(a x+b y(=0
  • y-exp(c x+d y(=0我用来查找其根源的代码是:
equations = lambda x, kernel: np.array([x[0] - np.exp(kernel[0] * x[0] + kernel[2] * x[1]), x[1] - np.exp(kernel[1] * x[1] + kernel[3] * x[0])])
kernels = np.array([kernel0, kernel1, kernel2, kernel3])
x_init = np.array([x_init0, x_init1])
x_sol = fsolve(two_equations, x_init, args=(kernels))

从方程中我知道,在某些情况下,这个系统对每个变量都有两个答案:(x_sol1,x_sol2(和(y_sol1,y_sol2(。

有没有一种干净的方法可以将多个初始猜测传递给这个fsolve函数,以获得每个变量的两个根?(而不是使用for循环(我只知道如何对一个方程组进行求解,但我不能在这种情况下使用这种方法。

您可以通过消除y将系统简化为单个单变量方程。

y = (ln(x) - a x) / b

因此

(ln(x) - a x) / b - exp(c x + d (ln(x) - a x) / b) = 0

最新更新