fminuncを異なる2つの変数で行う方法について
39 views (last 30 days)
Show older comments
以下のプログラムで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 Comments
Accepted Answer
More Answers (1)
See Also
Categories
Find more on ソルバーベースの非線形最適化 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!