function btnCalcular_Callback(hObject, eventdata, handles)
funcion=inline(get(handles.txtF,'string'));
x0=str2double(get(handles.txtX0,'string'));
x1=str2double(get(handles.txtX1,'string'));
x2=str2double(get(handles.txtX2,'string'));
e=str2double(get(handles.txtEa,'string'));
k=0;
xi=0;
sigue=1;
set(handles.uitable1,'Data',[]);
%-----------------------------------------------%
while(sigue)
xi=x2;
k=k+1;
h0=x1-x0;
h1=x2-x1;
d0=(funcion(x1)-funcion(x0))/h0;
d1=(funcion(x2)-funcion(x1))/h1;
%hallando las constantes
a=(d1-d0)/(h1+h0);
b=a*h1+d1;
c=funcion(x2);
raizd=sqrt(b*b-4*a*c);
%-----------------------------------------------------%
if abs (b+raizd)> abs(b-raizd)
den=b+raizd;
else
den=b-raizd;
end
%-----------------------------------------------------%
dxr=-2*c/den;
xr=x2+dxr;
sigue=abs(dxr)/xr>e || k<c || abs(funcion(xr))>e;
et=abs(xr-x2)/xr;
ea=et*100;
%para agregar a la tabla de valores hallados
newRow ={x0,x1,x2,xr,funcion(x0),funcion(x1),funcion(x2),ea};
oldData = get(handles.uitable1,'Data');
newData=[oldData; newRow];
set(handles.uitable1,'Data',newData)
x0=x1;
x1=x2;
x2=xr;
end
function btnGraficar_Callback(hObject, eventdata, handles)
axes(handles.axes1)
funcion=inline(get(handles.txtF,'string'));
ezplot(funcion);
Método de Muller
0 comments:
Publicar un comentario