Problem understanding this "for" loop
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello, I have this part of a code that I struggle understanding because of the "for" loop syntax, specifically inside the "if" statement. I don't require you to understand the mathematics, but only explaining to me what exactly is happening.
% Initialize constants
ALPHA = 0.1;
BETA = 0.5;
MAXITER = 100;
% Initialize variables
[m, n] = size(A);
xx = zeros(n,MAXITER);
% Define function, gradient and Hessian
f = @(x) sum(x.*log(x));
df = @(x) log(x)+1;
ddf = @(x) diag(1./(x));
% Main loop
x = x0;
for outer = 1:MAXITER
% Find search direction
g = -df(x);
H = [ddf(x) A' ; A zeros(m)];
dxv = H\[g; zeros(m,1)];
dx = dxv(1:n);
xx(:,outer) = x;
% Check terminating condition
l2 = g'*dx;
if (l2/2 <= tol)
xx = xx(:,1:outer);
x = xx(:,outer);
return;
end
0 Kommentare
Antworten (1)
Jan
am 29 Nov. 2022
Before the loop xx is pre-allocated to the maximum number of iterations.
The for loop runs from 1 until MAXITER. The variable outer is the loop counter.
The criterion for convergence is the condition of the if command. It it is reached, the output xx is cropped until the current value of outer. Then the function is left.
Mostlikely you have omitted the function definition in the first line.
function [x, xx] = YourNewton()
A trailing end is missing also.
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!