k1 = 1;k2 = 2;lb = [0 0 0];ub = [50 50 50];n = 1000;length = 0;p = 3;xn = lhsdesign(n,p);x = bsxfun(@plus,lb,bsxfun(@times,xn,(ub-lb)));tol = 0.1;for i = 1:1000 k3 = x(randi([1 n]),1); k4 = x(randi([1 n]),2); k5 = x(randi([1 n]),3); parasite=@(t,X) [k1.*X(1).*X(2)-k2.*X(1); k3-k4*X(2)-k5*X(1)]; [t,X]=ode45(parasite,[0 20],[1 1]); a1(i) = X(end,1); a2(i) = X(end,2); if a1(i) < tol || (2-tol) < a2(i) || a2(i) < (2+tol) k3a(i) = k3; k4a(i) = k4; k5a(i) = k5; else k3a(i) = 0; k4a(i) = 0; k5a(i) = 0; end endfigure(1)plot3(k3a,k4a,k5a,'Linestyle','none','Marker','o')
I am having an issue where the if statement is not function as intended. If the values of a1 or a2 are within 0.1 above or below 0 for a1 and 2 for a2, the values for k3a, k4a, and k5a are to be set to the value they are calculated as during the for loop, if not the values of k3a, k4a and k5a are set to 0.
However, the conditions set within the if statement do not work, and do not affect the values of k3a,k4a, or k5a. What is wrong within this code/ what can be changed to achieve this as stated above.
Cheers
Best Answer