方程组-scipy的解决方法给出的错误答案

问题描述 投票:0回答:1

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

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的值在任何时候都没有修改,所以与初始猜测的值不一样?

python scipy numerical-methods scipy-optimize
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.