MATLAB: Unrecognized Variable despite being defined

unrecognizedvariable

Hello,
I seem to be having this issue of an unrecognize variable, despite being defined, when trying to run a simple Gompertz equation. I have tried removing the clear and clc becaue that was the issue last time, however it did not work. I have attached a screenshot and my code below. Thanks!
%Gompertz Equation

clear
clc
% Parameter and intial condtions
r= (0.349);
P= [2.913 3.929 5.308 7.239 9.638 12.866 17.069 23.191 39.818 50.189 62.947 76.212 92.228 106.021 122.775 132.164 150.697 179.323 203.302 226.545 248.709 281.421 308.745];
k2= 330.0;
% Time interval
t = (1790:10:2010);
%Gompertz Equation
% for i=1:length(t)
%GM(i)= -r*P(i)*log((P(i)/k2));
%end
for i=1:length(t)
LL(i,1) = exp((exp(-j)).*log(LL(i-1,1))+((1-exp(-j)).*log(k)));
end
%% Fix K = 3.3e+8
k2 = 330.0;
B = log(P(2:23,1)./k2);
A = log(P(1:22,1)./k2);
X = A\B;
j = -log(X(1,1));
P0 = P(1,1);
LL = zeros(23,1);
LL(1,1) = P0;
% Time Interval
a=(1790:10:2010)';
% Population
j= [3.929 5.308 7.239 9.638 12.866 17.069 23.191 31.443 39.818 50.189 62.947 76.212 92.228 106.021 122.775 132.164 150.697 179.323 203.302 226.545 248.709 281.421 308.745]';
% Plot
plot (a,j,'bo');hold on
plot(t,GM,'r');
line_color=['r'];
hold off
legend('Census Data','Gompertz Model');
axis([1790 2010 0 500]);
title('US Population Data');
ylabel('Population (Millions)');
xlabel('Years');

Best Answer

The problem is you are using LL to define the values of LL. The first time through, LL has not yet been defined. Incidentally, you also use k in the equation, but define a variable k2.
Upon fixing that, you will encounter another error that indices must be real positive integers. This is because, when i=1, log(LL(i-1,1)) will try to take the log of LL(0,1).
My suggestion is to first define a value for LL(1,1), and then start your for loop at i=2.
% Parameter and intial condtions
k= 330.0;
% Time interval
t = (1790:10:2010);
LL = 0;
for i=2:length(t)
LL(i,1) = exp((exp(-j)).*log(LL(i-1,1))+((1-exp(-j)).*log(k)));
end
LL
LL = 23×1
0 0 0 0 0 0 0 0 0 0