我有以下非线性方程组,我想找到它的根:
- 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