我正在尝试求解以下耦合方程式:
x = 1;
y-0.5 * y-0.7 * v = 0;
w-0.7 * x-0.5 * x = 0;
v = 1。
((我知道方程= 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
。