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

llew8vvj  于 2022-11-10  发布在  Python
关注(0)|答案(1)|浏览(187)

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

  • 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_溶液1,x_溶液2)和(y_溶液1,y_溶液2)。
有没有一种简洁的方法可以将多个初始猜测值传递给fsolve函数,以获得每个变量的两个根?(而不是使用for循环)我只知道如何对一个方程的系统进行此操作,但我无法将该方法用于此情况。

gmol1639

gmol16391#

通过消去y,可以将系统简化为一个单变量方程。

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

以致

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

相关问题