Se queda paralizado no corre todo el código y no me dice el error tampoco
12 views (last 30 days)
Show older comments
%% Datos de entrada %%
f=inline('exp(sin(x))-x'); %funcion unimodal
a=-1; %Limite inferior del intervalo
t=0.11; %tolerancia del metodo
%% Definicion del usuario %%
b=2; %Limite inferior del intervalo
e=0.11 %epsilion
%% Desarrollo del algoritmo %%
xm= (a+b)/2; % Punto medio del intervalo
xa= (a+b)/2 - e/2 % limite inferior
xb= (a+b)/2 + e/2 % limite superior
%% Evaluaciones por el metodo de Bolzano %%
fl= f(xa); % Altura en extremo izquierdo
fr= f(xb); % Altura en extremo derecho
%% Iteracion %%
iter=0; % inicio del contador
% Grafico inicial
figure(1)
plot(xa,fl,'*g',xb,fr,'*k') %grafico de las primeras evaluaciones
hold on;
while abs(b-a)>=t % Parametro de Parada
iter=iter+1; %Actualiza el contador
if fl>fr %Verificacion f(xa)>f(xb)
a=xa; %Actualizacion del limite inferior
elseif fl<=fr %Verificacion f(xa)<=f(xb)
b=xb; %Actualizacion del limite derecho
end
xm= (a+b)/2; %Actualizacion Punto medio
xa= (a+b)/2 - e/2; %Actualizacion limite inferior
xb= (a+b)/2 + e/2; %Actualizacion limite superior
fl= f(xa); % Altura en extremo izquierdo
fr= f(xb); % Altura en extremo derecho
K(iter,:)=[a xa b xb]; %Registro de intervalos
%figure(iter+1)
plot(xa,fl,'*',xb,fr,'OR') %Grafica de iteraciones
end
K %Matriz con todos los intervalos e iterados
%% Grafica prueba 1 %%
x= -5:0.1:5;
y= exp(sin(x))-x;
toc %tiempo final de ejecucion
plot(x,y)
title('Búsqueda Dicotómica')
hold on
disp('El intervalo final es:'), [a(end) b(end)]
disp('La aproximacion buscada es:'), res=(a(end)+ b(end))/2
disp('La aproximacion del minimo es:'), f(res)
disp('El numero de iterados es:'), iter
0 Comments
Accepted Answer
Walter Roberson
on 27 Nov 2023
Edited: Walter Roberson
on 28 Nov 2023
e=0.11 %epsilion
That epsilon is too large -- large enough that it keeps expanding the search range instead of it being narrowed. Try more like 0.01
%% Datos de entrada %%
f=inline('exp(sin(x))-x'); %funcion unimodal
a=-1; %Limite inferior del intervalo
t=0.11; %tolerancia del metodo
%% Definicion del usuario %%
b=2; %Limite inferior del intervalo
e=0.01 %epsilion
%% Desarrollo del algoritmo %%
xm= (a+b)/2; % Punto medio del intervalo
xa= (a+b)/2 - e/2 % limite inferior
xb= (a+b)/2 + e/2 % limite superior
%% Evaluaciones por el metodo de Bolzano %%
fl= f(xa); % Altura en extremo izquierdo
fr= f(xb); % Altura en extremo derecho
%% Iteracion %%
iter=0; % inicio del contador
% Grafico inicial
figure(1)
plot(xa,fl,'*g',xb,fr,'*k') %grafico de las primeras evaluaciones
hold on;
while abs(b-a)>=t % Parametro de Parada
iter=iter+1; %Actualiza el contador
if fl>fr %Verificacion f(xa)>f(xb)
a=xa; %Actualizacion del limite inferior
elseif fl<=fr %Verificacion f(xa)<=f(xb)
b=xb; %Actualizacion del limite derecho
end
xm= (a+b)/2; %Actualizacion Punto medio
xa= (a+b)/2 - e/2; %Actualizacion limite inferior
xb= (a+b)/2 + e/2; %Actualizacion limite superior
fl= f(xa); % Altura en extremo izquierdo
fr= f(xb); % Altura en extremo derecho
K(iter,:)=[a xa b xb]; %Registro de intervalos
%figure(iter+1)
plot(xa,fl,'*',xb,fr,'OR') %Grafica de iteraciones
end
K %Matriz con todos los intervalos e iterados
%% Grafica prueba 1 %%
x= -5:0.1:5;
y= exp(sin(x))-x;
toc %tiempo final de ejecucion
plot(x,y)
title('Búsqueda Dicotómica')
hold on
disp('El intervalo final es:'), [a(end) b(end)]
disp('La aproximacion buscada es:'), res=(a(end)+ b(end))/2
disp('La aproximacion del minimo es:'), f(res)
disp('El numero de iterados es:'), iter
See Also
Categories
Find more on Introduction to Installation and Licensing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!