Сейчас я пытаюсь решить нелинейную систему 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
Есть идеи, почему это происходит и / или что я могу сделать, чтобы решить эту проблему?