【发布时间】:2018-05-19 11:23:56
【问题描述】:
我的代码在第一次迭代时运行良好,但之后它输出以下错误:
ValueError: matrix must be 2-dimensional
据我所知(这在 python 中并不多),我的代码是正确的。但我不知道,为什么它在所有给定的迭代中都没有正确运行。谁能帮我解决这个问题。
from __future__ import division
import numpy as np
import math
import matplotlib.pylab as plt
import sympy as sp
from numpy.linalg import inv
#initial guesses
x = -2
y = -2.5
i1 = 0
while i1<5:
F= np.matrix([[(x**2)+(x*y**3)-9],[(3*y*x**2)-(y**3)-4]])
theta = np.sum(F)
J = np.matrix([[(2*x)+y**3, 3*x*y**2],[6*x*y, (3*x**2)-(3*y**2)]])
Jinv = inv(J)
xn = np.array([[x],[y]])
xn_1 = xn - (Jinv*F)
x = xn_1[0]
y = xn_1[1]
#~ print theta
print xn
i1 = i1+1
【问题讨论】:
-
x = xn_1[0]; y = xn_1[1]获取 numpy 数组的 第一行和第二行。这意味着在您的第二次迭代中,[[(x**2)+(x*y**3)-9],[(3*y*x**2)-(y**3)-4]]将产生一个超过 2 维的值,这可能是也可能不是您想要的,但无论如何,np.matrix对象 必须是二维的。x和y应该 采用什么值?另请注意,您通常应该避免使用np.matrix,无论如何它都已被弃用...但您绝对可能不应该将两者混为一谈。
标签: python numpy python-2.x