python,solve,数组的最后2维必须是正方形

python,solve,数组的最后2维必须是正方形,python,function,Python,Function,我需要用牛顿法求出一个给定函数的值为0的点 该函数由以下公式给出: def F(x): F = np.zeros(2) F = np.array([x[0] - 0.25 * (np.cos(x[0])-np.sin(x[1])),x[1] - 0.25 * (np.cos(x[0])-2*np.sin(x[1]))]) return F 我为该方法编写的代码是: def Newton(F,dFinv,x0,tol,maxit): x = np.z

我需要用牛顿法求出一个给定函数的值为0的点

该函数由以下公式给出:

def F(x):
    F = np.zeros(2)  
    F = np.array([x[0] - 0.25 * (np.cos(x[0])-np.sin(x[1])),x[1] - 0.25 * (np.cos(x[0])-2*np.sin(x[1]))])    

    return F
我为该方法编写的代码是:

def Newton(F,dFinv,x0,tol,maxit):
    x = np.zeros((x0.size,maxit))
    Converged = False
    i = 0

    for i in range(maxit):
        s = np.dot(dFinv(x), F(x))
        x -= s
        if np.linalg.norm(s) < tol*np.linalg.norm(x):
            return x, True,i

    return x,Converged,maxit
但是当我尝试运行代码时(使用起始点
x=np.array([1.0,1.0])
),我在
dFinv(x)
中得到了
solve
的错误:


我查了一下,这个错误到底是什么意思,但我不知道怎么可能。。。不管我给函数的值是多少,矩阵都应该是平方的…

您运行的是哪个版本的numpy,我无法用
1.13.0
复制您的问题。我刚才还在使用numpy 1.12。。将其更新为1.13.0,但现在代码将不再运行。。。错误为:
ImportError:导入多数组numpy扩展模块失败。很可能您正在尝试导入失败的numpy版本。如果您使用的是numpy git repo,请尝试
git clean-xdf`(删除所有不受版本控制的文件)。否则重新安装numpy。`好吧,我花了一些时间来运行新版本,但我仍然有和以前一样的问题,有相同的错误消息。。。
def dFinv(x):
    dF = np.zeros((2,2))
    dF = np.array([[ 1. + 0.25*np.sin(x[0]), 0.25*np.cos(x[1])],[-0.25* np.sin(x[0]),1+0.5*np.cos(x[1])]])

    dFinv = np.linalg.solve(dF,np.eye(2))

    return dFinv
numpy.linalg.linalg.LinAlgError: Last 2 dimensions of the array must be square