耦合方程组 - 来自 scipy 的 fsolve 的错误答案

Coupled set of equations - Wrong answer from scipy's fsolve

我正在尝试求解以下耦合方程:

x = 1;

y - 0.5*y - 0.7*v = 0;

w - 0.7*x - 0.5*x = 0;

v = 1.

(我知道 equations = 1 似乎是不必要的,但我需要它们用于以后的代码泛化)。 我的代码如下:

import numpy as np
from scipy.optimize import fsolve

def myFunction(z):
   x = z[0]
   y = z[1]
   w = z[2]
   v = z[3]

   F = np.empty((4))
   F[0] = 1
   F[1] = y - 0.5*y - 0.7*v
   F[2] = w - 0.7*x - 0.5*w
   F[3] = 1
   return F

zGuess = np.array([1,2.5,2.5,1])
z = fsolve(myFunction,zGuess)
print(z)

我得到的答案是 [-224.57569869, -314.40597772, -314.40597817, -224.57569837],但我希望得到 [1, 1.4, 1.4, 1]。为什么 fsolve 无法找到这组简单方程的答案?还有:为什么在任何时候都没有修改的x和v的值与最初猜测的值不一样?

要将需求 x = 1 转换为代码,请将其重写为 x - 1 = 0。也就是说,行 F[0] = 1 应该更改为 F[0] = x - 1。同样,行 F[3] = 1 应该是 F[3] = v - 1.