Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
f(x
i1
)
f
0
(x
i1
)
:
Una funcin que realiza esta tarea es la sguiente:
function [x0,err,k,y]=funzeros(f,x0,epsilon1,epsilon2,maxiter)
%Datos
% - f es la funcion, introducida como una cadena de caracteres
% - x0 es la aproximacion inicial a un cero de la funcion f
% - epsilon1 es la tolerancia para x0
% - epsilon2 es la tolerancia para los valores de la funcion
% - maxiter es el maximo n\U{fa}mero de iteraciones
%Resultados
% - x0 aproximaci\U{f3}n a la raiz
% - err es una estimacin del error de aproximacion
% - k es el n\U{fa}mero de iteraciones realizadas
% - y es el valor de la funci\U{f3}n f(x0)
df=diff(f);
for k=1:maxiter
x1=x0-subs(f,x0)/subs(df,x0); %formula iterativa de Newton
err=abs(x1-x0); %calculo del error
x0=x1; %actualizacion de x0
y=subs(f,x0); %evaluacion de f(x0)
if (err<epsilon1)|abs(y)<epsilon2,break,end
end
2.3 Utilizacin de la interfaz grca, GUI
Matlab ofrece un interfaz grca para una mejor interaccin con el usuario, por ejemplo para
implemetar el mtodo de Newton utilizando esta interfaz, grca y un llamado a la funcin
6
construida, funzeros, contendr las siguientes herramientas grcas en un formulario:
3 botones de comando con las funciones de borrar, procesar y salir respectivamente.
5 textos estticos y 5 textos editables para entrar la funcin, el valor inicial, las tolerancias,
nmero de iteraciones y mostar la raz aproximada
1 plano cartesiano para mostar la grca.
Los siguientes guiones en los botones, limpiar, procesar, salir, obtendrn la raz aproximada:
%--------------------------------------------------------------------
function varargout = procesar_Callback(h, eventdata, handles, varargin)
f=get(handles.vfuncion,string)
x0=str2num(get(handles.vx0,string))
epsilon1=str2num(get(handles.vepsilon1,string))
epsilon2=str2num(get(handles.vepsilon2,string))
maxiter=str2num(get(handles.vmaxiter,string))
[x0,err,k,y]=funzeros(f,x0,epsilon1,epsilon2,maxiter)
cadena=El valor de la raiz es ;
cadena=[cadena,num2str(x0)]
set(handles.vraiz,string,cadena);
set(handles.axes1);
cla;
ezplot(0)
hold on
ezplot(f)
grid on
% --------------------------------------------------------------------
function varargout = salir_Callback(h, eventdata, handles, varargin)
close(gcbf);
% --------------------------------------------------------------------
function varargout = limpia_Callback(h, eventdata, handles, varargin)
limpiar=
set(handles.vfuncion,string,limpiar);
set(handles.vx0,string,limpiar);
set(handles.vepsilon1,string,limpiar);
set(handles.vepsilon2,string,limpiar);
set(handles.vmaxiter,string,limpiar);
set(handles.vraiz,string,limpiar);
set(handles.axes1);
cla;
7