0

グラデーションとヘシアンの関数ハンドルの操作に問題があります。

次のコードがあります。

syms x1 x2

x = [x1,x2];

% Define the function phi(x)
phi = @(x1,x2) 10*x1^4 - 20*x1^2*x2 + 10*x2^2 + x1^2 - 2*x1 + 5; 

% Define the gradient of the function phi(x)
gradphi = @(x1,x2) jacobian(phi,x).';

% Define the Hessian of phi(x)    
hessphi = @(x1,x2) jacobian(gradphi,x);

コマンドターミナルに入力すると、次のようになります。

phi(1,2)

スカラー値を取得します。

しかし、入力すると

gradphi(1,2)
hessianphi(1,2)

それらの点で評価された勾配に対応するベクトルが必要です。

グラデーションについては、私はただ得ます

EDU>> gradphi(1,2)

ans =

2*x1 - 40*x1*x2 + 40*x1^3 - 2
            - 20*x1^2 + 20*x2

これは単なるグラードベクトル関数です。しかし、x1 = 1 と x2 = 2 を入力した実際の数値結果が必要です。

EDU>> hessphi(1,2)

エラーを返します。

理由はわかりません。

4

1 に答える 1

2

配列の乗算と除算では、要素ごとの演算子.*./、および.^を および の定義で使用する必要がhessianphiありgradphiます。そうしないと、Matlab は行列の乗算/除算/べき乗を実行しようとしますが、うまくいきません。

/aside: エラー メッセージのテキストを検索すると、最も可能性の高いエラーの原因が表示されます。

于 2014-02-21T08:51:43.343 に答える