No encuentro el error en el código
Publicado por Aldo (1 intervención) el 01/11/2021 16:25:39
Buen día, alguien podría ayudarme a resolver el problema en el código? Me envía un mensaje de que excedo en 1 el tamaño del arreglo, y ya he hecho modificaciones y no consigo arreglarlo, mi código es el siguiente y es un método de busqueda de máximos y minimos
clear all
clc
vector=[];
gam = 0.618;
a = 0;
b = 1;
l = 0.1;
%epsilon = 0.01;
k = 1;
lam(k) = a(k) + (1 - gam)*(b(k) - a(k));
miu(k) = a(k) + gam*(b(k) - a(k));
flam(k) = lam(k)*(lam(k) - 1.5);
fmiu(k) = miu(k)*(miu(k) - 1.5);
while((b(k) - a(k)) > l)
if(flam(k) > fmiu(k))
b(k+1) = b(k);
a(k+1) = lam(k);
lam(k+1) = miu(k);
miu(k+1) = a(k+1) + gam*(b(k+1) - a(k+1));
fmiu(k+1) = miu(k+1)*(miu(k+1) - 1.5);
else
a(k+1) = a(k);
b(k+1) = miu(k);
miu(k+1) = lam(k);
lam(k+1) = a(k+1) + (1 - gam)*(b(k+1) - a(k+1));
flam(k+1) = lam(k+1)*(lam(k+1) - 1.5);
end
k=k+1;
end
clear all
clc
vector=[];
gam = 0.618;
a = 0;
b = 1;
l = 0.1;
%epsilon = 0.01;
k = 1;
lam(k) = a(k) + (1 - gam)*(b(k) - a(k));
miu(k) = a(k) + gam*(b(k) - a(k));
flam(k) = lam(k)*(lam(k) - 1.5);
fmiu(k) = miu(k)*(miu(k) - 1.5);
while((b(k) - a(k)) > l)
if(flam(k) > fmiu(k))
b(k+1) = b(k);
a(k+1) = lam(k);
lam(k+1) = miu(k);
miu(k+1) = a(k+1) + gam*(b(k+1) - a(k+1));
fmiu(k+1) = miu(k+1)*(miu(k+1) - 1.5);
else
a(k+1) = a(k);
b(k+1) = miu(k);
miu(k+1) = lam(k);
lam(k+1) = a(k+1) + (1 - gam)*(b(k+1) - a(k+1));
flam(k+1) = lam(k+1)*(lam(k+1) - 1.5);
end
k=k+1;
end
Valora esta pregunta
0