newton.optimize.newton разные решения на разных компьютерах - PullRequest
0 голосов
/ 20 февраля 2019

Сейчас я пытаюсь решить нелинейную систему F (x) = u с помощью метода в заголовке.

Код, который у меня есть, выглядит примерно так:

f = lambda x: np.dot(np.real(FW[1:]),np.cos(K*x)) - np.dot(np.imag(FW[1:]),np.sin(K*x)) + (1/2)*np.real(FW[0]) - (1/2)*np.real(FW[-1])*np.cos(K[-1]*x)

#derivative
f2 = lambda x: np.dot(np.real(FW[1:]),-K*np.sin(K*x)) - np.dot(np.imag(FW[1:]),K*np.cos(K*x)) + K[-1]*(1/2)*np.real(FW[-1])*np.sin(K[-1]*x)

#cumulative
F = lambda x: -u + np.dot( np.real(FW[1:]), (1/K)*np.sin(K*x) ) - np.dot(np.imag(FW[1:]), (-1/K)*( -1+np.cos(K*x) )) + x*(1/2)*np.real(FW[0]) - (1/2)*np.real(FW[-1])*(1/K[-1])*(np.sin(K[-1]*x))


x_0 = np.pi

tolerance = 2*np.pi/350
theta = newton(F, x_0, fprime = f, fprime2 = f2, tol = tolerance) 

Что является интерполяцией Фурье для F и ее производной.

Странная вещь заключается в том, что на моем компьютере работает отлично, в то время как в кластере я получаю ошибку Не удалось сойтись после 50 итераций, значение составляет 1,5353808174275692

Есть идеи, почему это происходит и / или что я могу сделать, чтобы решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...