A continuación tendrán que seguir los siguientes comandos usados en cada caso.
function btnCalcular_Callback(hObject, eventdata, handles)
f=get(handles.edit1,'string');
f=inline(f);
xai=str2double(get(handles.edit2,'string'));
xbi=str2double(get(handles.edit3,'string'));
tol=str2double(get(handles.edit4,'string'));
i=1;
ea(1)=100;
if f(xai)*f(xbi)<0;
xa(1)=xai;
xb(1)=xbi;
xf(1)= xb(1)-f(xb(1))*(xa(1) - xb(1))/(f(xa(1))-f(xb(1)));
set(handles.tabla,'Data',{})
hold off
cla
set(handles.tabla,'Data',{})
set(handles.respuesta,'string','No hay raiz');
while abs(ea(i))>=tol
if f(xa(i))*f(xf(i))<0
xa(i+1)=xa(i);
xb(i+1)=xf(i);
end
if f(xa(i))*f(xf(i))>0
xa(i+1)=xf(i);
xb(i+1)=xb(i);
end
xf(i+1)= xb(i+1)-f(xb(i+1))*(xa(i+1) - xb(i+1))/(f(xa(i+1))-f(xb(i+1)));
ea(i+1)=abs((xf(i+1)-xf(i))/(xf(i+1))*100);
% Mostrara datos en tabla
newRow ={i xa(i+1) xb(i+1) xf(i+1) ea(i+1)};
oldData = get(handles.tabla,'Data');
newData=[oldData; newRow];
set(handles.tabla,'Data',newData)
grid on;
plot(i,f(i),'Ok');
hold on;
i=i+1;
end
respuesta=sprintf('%0.6f',xf(i));
set(handles.respuesta,'string',respuesta);
fplot(handles.axes1,f,[xai xbi]);
grid
ezplot(f);
grid on;
plot(xbi,f(xbi),'+');
zoom on
else
set(handles.respuesta,'string','No existe la raiz en el intervalo');
zoom on
end
function btnLimpiar_Callback(hObject, eventdata, handles)
cla %limpiar tabla
set(handles.tabla,'Data',{})
%limpiar textboxs
set(handles.edit1,'string','');
set(handles.edit2,'string','');
set(handles.edit3,'string','');
set(handles.edit4,'string','');
set(handles.respuesta,'string','');
Método de la Falsa Posición
0 comments:
Publicar un comentario