fminuncを異なる2つの変数で行う方法について
39 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Tsuyoshi Yasuda
am 8 Feb. 2018
Beantwortet: Tsuyoshi Yasuda
am 12 Feb. 2018
以下のプログラムでfminuncを行うと ,
入力引数が不足しています。
エラー: main>@(x,y)eval_func(x,y)
エラー: fminunc (line 292) f = feval(funfcn{3},x,varargin{:});
エラー: main (line 43) [answer,z] = fminunc(object_func,z0,options);
原因: 目的関数を初期評価できませんでした。関数 FMINUNC で計算を続行できません。
とエラーが出ました.どうしたら異なる2変数でできますか?
%%最急降下法の条件設定
%最急降下法の初期値
x0 = 5;
y0 = 5;
z0 = [x0 y0];
%最大の繰り返し回数
MaxIterations_Data = 1000;
%変数の許容誤差
StepTolerance_Data = 10^-6;
%勾配の許容誤差
OptimalityTolerance_Data = 10^-6;
%関数の評価回数
MaxFunctionEvaluations_Data = 1000000;
%目的関数
object_func = @(x,y)eval_func(x,y);
%%最急降下法のオプション
%最急降下法を行う設定
options = optimoptions('fminunc');
options = optimoptions(options,'Algorithm', 'quasi-newton');
options = optimoptions(options,'HessUpdate', 'steepdesc');
%解の出力の設定
options = optimoptions(options,'Display', 'iter');
%停止条件の設定
options = optimoptions(options,'MaxIterations', MaxIterations_Data);%繰り返し回数
options = optimoptions(options,'StepTolerance', StepTolerance_Data);%変数の許容誤差
options = optimoptions(options,'OptimalityTolerance', OptimalityTolerance_Data);%勾配の許容誤差
options = optimoptions(options,'MaxFunctionEvaluations', MaxFunctionEvaluations_Data);%関数の評価回数
%試行中の値の表示
options = optimoptions(options,'PlotFcn', { @optimplotfval });
%解の表示
[answer,z] = fminunc(object_func,z0,options);
function z = eval_func(x,y)
z = x^2+y^2;
0 Kommentare
Akzeptierte Antwort
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu ソルバーベースの非線形最適化 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!