Size of Q is undefined
    1 view (last 30 days)
  
       Show older comments
    
function [j] = armijo_grad_direction_dnm_f1(P1,VG,sigma)
j = 0;
signal = 0;
nn = size(Q);
n = nn(1);
I = eye(n);
while( signal == 0 && j < MAX_j)
    Q = P1^(1/2)*expm(P1^(-1/2)*2^(-j)*VG*P1^(-1/2))*P1^(1/2); % Geodesic with direction 2^(-j)*VG starting at P1. 
    PHIQ  = 1/2*trace(I-2*Q^(-1)+(Q^(-1))^(2)); % Merit Function at Q.
    PHIP1  = 1/2*trace(I-2*P1^(-1)+(P1^(-1))^(2));
    ARM = PHIQ - PHIP1 - 2^(-j)*sigma*trace(VG*P1^(-1)*VG*P^(-1)); %Armijo Gradient Direction
    if(ARM > 0)
        j = j+ 1;
    else
        signal = 1;
    end  
end
if ( j >= MAX_j)
    fprintf('\nArmijo:  j not found with %d iterations.\n',MAX_j);
    return;
end
end
2 Comments
Accepted Answer
  KSSV
      
      
 on 23 Nov 2021
        You need to define the input variables and then call the function. It seems you are striaght away hitting the f5/ run button so you are getting error. 
P1 =   define your value ;   % enter value 
VG = define your value ;   % enter input 
sigma = define your value ; 
% now call the function 
j = armijo_grad_direction_dnm_f1(P1,VG,sigma)
7 Comments
  KSSV
      
      
 on 23 Nov 2021
				Your function name is _armijo_grad_direction_dnm_f1 and you are trying to call armijo_newton_direction_dnm_f2 it seems, 
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!