耦合方程组 - 来自 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
.
我正在尝试求解以下耦合方程:
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
.