You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: M_StronglyConvexFastGradientMethod.m
    path of file: ./repos/Performance-Estimation-Toolbox/Examples/01_Methods for unconstrained convex minimization
    
    the code of the file until where you have to start completion: function M_StronglyConvexFastGradientMethod
% In this example, we use a fast gradient method for solving the L-smooth
% mu-strongly convex minimization problem
%   min_x F(x); 
%   for notational convenience we denote xs=argmin_x F(x).
%
% We show how to compute the worst-case value of F(xN)-F(xs) when xN is
% obtained by doing N steps of the method starting with an initial
% iterate satisfying ||x0-xs||<=1.


% (0) Initialize an empty PEP
P = pep();

% (1) Set up the objective function
param.L   = 1;                % Smoothness parameter
param.mu  = .1;               % Strong convexity parameter
kappa     = param.L/param.mu; % condition number

% F is the objective function
F = P.DeclareFunction('SmoothStronglyConvex',param); 

% (2) Set up the starting point and initial condition
x0      = P.StartingPoint();         % x0 is some starting point
[xs,fs] = F.OptimalPoint();          % xs is an optimal point, and fs=F(xs)
P.InitialCondition( (x0-xs)^2 <= 1); % Initial condition ||x0-xs||^2<= 1

% (3) Algorithm
N = 5;		% number of iterations


    
function M_StronglyConvexFastGradientMethod
% In this example, we use a fast gradient method for solving the L-smooth
% mu-strongly convex minimization problem
%   min_x F(x); 
%   for notational convenience we denote xs=argmin_x F(x).
%
% We show how to compute the worst-case value of F(xN)-F(xs) when xN is
% obtained by doing N steps of the method starting with an initial
% iterate satisfying ||x0-xs||<=1.


% (0) Initialize an empty PEP
P = pep();

% (1) Set up the objective function
param.L   = 1;                % Smoothness parameter
param.mu  = .1;               % Strong convexity parameter
kappa     = param.L/param.mu; % condition number

% F is the objective function
F = P.DeclareFunction('SmoothStronglyConvex',param); 

% (2) Set up the starting point and initial condition
x0      = P.StartingPoint();         % x0 is some starting point
[xs,fs] = F.OptimalPoint();          % xs is an optimal point, and fs=F(xs)
P.InitialCondition( (x0-xs)^2 <= 1); % Initial condition ||x0-xs||^2<= 1

% (3) Algorithm
N = 5;		% number of iterations

x    = cell(N+1,1);% store iterates in a cell
y    = cell(N+1,1);% store iterates in a cell
x{1} = x0;
y{1} = x0;

beta = (sqrt(kappa)-1)/(sqrt(kappa)+1); % momentum
for i=1:N
    x{i+1} = gradient_step(y{i}, F, 1/param.L);
    y{i+1} = (1+beta) * x{i+1} - beta * x{i};
end