How to code adaptive Wolfe Powell Code....?

18 ビュー (過去 30 日間)
Bishwesvar Pratap Singh
Bishwesvar Pratap Singh 2022 年 3 月 10 日
コメント済み: Walter Roberson 2022 年 3 月 10 日
function [alpha, k] = calc_alpha(fun,fun_grad, xk, dk, rho, sigma)
Alpha=[];
alpha_low = 0;
alpha_high = 10;
alpha = 1;
k = 0;
stop = 0;
while stop == 0
k=k+ 1;
if fun(xk + alpha * dk) <= fun(xk) + rho * alpha *fun_grad(xk)'* dk && (fun_grad(xk + alpha * dk))'* dk >= (sigma*fun_grad(xk))'* dk
stop = 1;
else
if fun(xk + alpha * dk) > fun(xk) + rho * alpha *abs(fun_grad(xk))'* dk
alpha_high = alpha;
alpha = (alpha_high+alpha_low) / 2;
elseif (fun_grad(xk + alpha * dk))'* dk < (sigma*fun_grad(xk))'* dk
alpha_low = alpha;
if alpha_high > 10
alpha = 2 * alpha_low;
else
alpha = (alpha_high + alpha_low) / 2;
end
end
end
Alpha =[Alpha, alpha];
end
  1 件のコメント
Walter Roberson
Walter Roberson 2022 年 3 月 10 日
What is the question being asked?

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeDevelop Apps Using App Designer についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by