Сопряженная система уравнений - неправильный ответ от scipy's fsolve - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь решить следующие связанные уравнения:

x = 1;

y - 0,5 * y - 0,7 * v = 0;

ш - 0,7 * х - 0,5 * х = 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, которые не изменяются ни в одной точке, не совпадают со значениями первоначального предположения?

1 Ответ

0 голосов
/ 22 апреля 2020

Чтобы преобразовать требование x = 1 в код, перепишите его как x - 1 = 0. Это говорит о том, что строка F[0] = 1 должна быть изменена на F[0] = x - 1. Аналогично, строка F[3] = 1 должна быть F[3] = v - 1.

...