2
%Metodo acotado: Metodo del Punto fijo clear, clc % Limpiar las variables y contenidos que se muestran por pantalla cf= input('Ingrese funcion f: '); %Leen las funciones f y g como cadena cg=input('Ingrese funcion g:'); f=inline(cf); % transforman las cadenas en funciones g=inline(cg); syms x %declara a x como una variable simbolica dg=diff(cg,x); %deriva la funcion cg respecto a la variable x (diff solo trabaja con cadena) %dg guarda la nueva funcion, no como inline ni como cadena. x=input('Ingrese primer valor: '); %valor intermedio del intervalo donde se sabe que hay cambio de signo if (abs(eval(dg))<1) %no se hace dg(x), puesto que solo dirve para funciones inline. Entonces se evalua en dg la variable declarada (syms x) ,De no ser menor que 1, manda el msje tol=input('Ingrese tolerancia: '); %tolerancia disp(' n x0 error ') % se muestra como encabezado para los datos que continuan fprintf(' 0.0000 %7.4f ---------- \n \n', x) %informacion del primer valor ingresado n=0; error=100; % numero de iteraciones y error=100 para que pueda acceder al bucle sin problemas while (error>tol) %seguira iterando mientras que el error sea mayor que la tolerancia n=n+1; %suma uno el contador anterior=x; x= g(x); error=abs(x-anterior);%asi podemos comparar el valor de x con el que tenia anteriormente disp([n, x, error]) %mostramos en un vector fila: nmro de iteraion, x actual(raiz), y error absoluto

Metodo Acotado Codigo Puntofijo

Embed Size (px)

DESCRIPTION

metodos numericos

Citation preview

%Metodo acotado: Metodo del Punto fijoclear, clc % Limpiar las variables y contenidos que se muestran por pantallacf= input('Ingrese funcion f: '); %Leen las funciones f y g como cadenacg=input('Ingrese funcion g:');f=inline(cf); % transforman las cadenas en funcionesg=inline(cg);syms x %declara a x como una variable simbolicadg=diff(cg,x); %deriva la funcion cg respecto a la variable x (diff solo trabaja con cadena)%dg guarda la nueva funcion, no como inline ni como cadena.x=input('Ingrese primer valor: '); %valor intermedio del intervalo donde se sabe que hay cambio de signoif (abs(eval(dg))tol) %seguira iterando mientras que el error sea mayor que la tolerancia n=n+1; %suma uno el contador anterior=x; x= g(x); error=abs(x-anterior);%asi podemos comparar el valor de x con el que tenia anteriormente disp([n, x, error]) %mostramos en un vector fila: nmro de iteraion, x actual(raiz), y error absoluto end fprintf('La raiz es: %4.4f \n ', x(end)) %muestra en comandwindow el resultado(raiz), el cual es el ultimo valor del vector fila xelse disp('ingrese otra funcion g(x), pues con la actual el metodo diverge.')endEJEMPLOS PARA PROBAR

'exp(x-1)-1.5*x'

'exp(x-1)-0.5*x'

'x^3+2*x-1'

'(1-x^3)/2'

'x^3-x-1'

'x^3-1'