私のコードは、最初の反復のために罰金を実行しているが、その後、それは、次のエラー出力:であまりされていない(私の知る限りニュートン法(方程式のシステム)
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配列の* 1番目と2番目の行*をとります。これは、2回目の反復では、[[(x ** 2)+(x * y ** 3)-9]、[(3 * y * x ** 2) - ]] 'は2次元以上の値を返します。これはあなたが望むかもしれないし、そうでないかもしれませんが、' np.matrix'オブジェクト*は* 2次元でなければなりません。 'x'と' y'はどんな値をとるべきですか?また、一般的に 'np.matrix'は避けてください。これはかなり推奨されていません...しかし、あなたは*間違いなく* 2つを混ぜ合わせるべきではないでしょう。 –