Python 2.7: fsolve иногда возвращает начальное предположение вместо решения: - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь решить систему нелинейных уравнений. Я должен решить это для разных параметров. В большинстве случаев все работает нормально. Как в этом случае:

from scipy.optimize import fsolve
import numpy as np

p=3
x_diff=3.32
y_diff=-1.93
z_diff=0.64

def cubic(c):
    r=c[0]
    u=c[1]

    F=np.empty((2))
    F[0]=y_diff*cos(u)-x_diff*sin(u)
    F[1]=r+cos(u)*x_diff+y_diff*sin(u)+(r**(2*p-1))*(a**2)*p+z_diff*p*(r**(p-1))*a
    return F

cGuess=np.array([3.,2.])
c=fsolve(cubic,cGuess)


x=cubic(c)

В конце я проверил результат, вставив его в функцию cubic (). Для параметров, использованных выше, функция выдает что-то близкое к нулю, как и должно быть. Но если я изменю параметр x_diff, y_diff и z_diff. fsolve возвращает начальное значение Guess как решение, которое не является решением системы уравнений, как вы можете видеть, если вставить ее в функцию cubic ().

x_diff=-6.15
y_diff=-2.11
z_diff=0.13

Я довольно новичок в python, так что это может быть просто глупой ошибкой, но я не могу ее найти. Мне действительно нужно, чтобы это работало, поэтому спасибо за каждую помощь Спасибо!

...