2

私は lmfit を試し、以下の問題の例として使用しています。この例では、システム Ax = y の x を単純に解いています。ここで、A は 3*2 配列、y は 3*1 配列です。それらすべてを配列として宣言しました。

import numpy as np
from lmfit import minimize, Parameters

A = np.array([1,2,-1,3,-2,5])
A = A.reshape(3,2)
y = np.array([12, 13, 21])

def residual(params, A, y, eps_y=1):
    x = params['x'].value
    y_hat = np.dot(A, x)
    return (y - y_hat)/eps_y

x = np.array([0,0])
params = Parameters()
params.add('x', x)
out = minimize(residual, params, args=(A,y))
print out.value

これを実行すると、「ValueError: オブジェクトが目的の配列に対して深すぎます」というエラーが表示されます。ここやウェブで調査している同様の問題の例を見つけました。一般に、最もよく挙げられる理由は、A、x、および y が行列ではなく配列であるべきだということです。また、一部のソリューションでは、x と y を形状 (len(v)) のベクトルとして保持するよう求められます。上記はすでにこれらの提案に準拠していますが、「ValueError: オブジェクトが目的の配列に対して深すぎます」というメッセージが引き続き表示されます。

私はこの問題を解決しようとしてかなりの時間を無駄にしましたが、今は困惑しています。これに関するヘルプは大歓迎です。

4

1 に答える 1