fminuncを異なる2つの変数で行う方法について
38 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Tsuyoshi Yasuda
le 8 Fév 2018
Réponse apportée : Tsuyoshi Yasuda
le 12 Fév 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 commentaires
Réponse acceptée
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur ソルバーベースの非線形最適化 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!