Código Matlab

Post on 29-Sep-2015

217 views 1 download

description

codigo de los metodos numericos para la solucion de cuaciones no lineales.

Transcript of Código Matlab

Cdigo Matlab Mtodo de biseccin

clearformat short;a=input('Introduzca el valor de a');b=input('Introduzca el valor de b');cont=input('Introduzca el nmero de iteraciones');for k=1:1:contc=(a+b)/2;e=abs((b-a)/2);A(k,:)=[k a b c f(c) e];if f(a)*f(c)=tol,if f1*f3 < 0xa(i+1)=xa(i);f1=subs(f,x,xa(i+1));xb(i+1)=xr(i);f2=subs(f,x,xb(i+1));endif f1*f3> 0xa(1)=xr(i);xb(1)=xb(i);endxr(i+1)=xa(i+1)-f1*(xb(i+1)-xa(i+1))/(f2-f1);ea(i+1)=abs((xr(i+1)-xr(i))/(xr(i+1)))*100;fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %7.3f \n',...i+1,xa(i+1),xr(i+1),xb(i+1),ea(i+1));i=i+1;endelsefprintf('No existe una raz en ese intervalo');end

Cdigo Matlab Mtodo de Iteracin del PuntoFijoxf(1)=input('Ingrese el valor inicial: ');tol=input('Ingrese el porcentaje de error: ');syms x;f=input('Ingrese la funcin f(x), despejada g(f(x)): ');i=1;ea(1)=100;while abs(ea(i))>=tol,xf(i+1) = subs(f,x,xf(i)); ea(i+1) = abs((xf(i+1)-xf(i))/xf(i+1))*100; i=i+1;endfprintf('i xf(i) Error aprox (i) \n');for j=1:i;fprintf('%2d \t %11.7f \t %7.3f \n',j-1,xf(j),ea(j));end

Cdigo Matlab Mtodo deNewton-Raphsonx0=input('Ingrese el valor inicial: ');tol=input('Ingrese el porcentaje de error: ');f=input('Ingrese la funcin: ');i=1;fx(i)=x0;syms x;f1=subs(f,x,fx(i));z=diff(f);d=subs(z,x,fx(i));ea(1)=100;while abs(ea(i))>=tol;fx(i+1)=fx(i)-f1/d; f1=subs(f,x,fx(i+1)); d=subs(z,x,fx(i+1));ea(i+1)=abs((fx(i+1)-fx(i))/fx(i+1)*100);i=i+1;endfprintf('i fx(i) Error aprox (i) \n');for j=1:i;fprintf('%2d \t %11.7f \t %7.3f \n',j-1,fx(j),ea(j));end

Cdigo Matlab Mtodo de la secantef=input('Ingrese la funcion:\n','s');;f=inline(f);x0=input('Ingrese el primer punto inicial:\n');;x1=input('Ingrese el segundo punto inicial:\n');xra=0;xr=0;tol=0.01;i=1;error_aprox=1;error=0;fx1=f(x1);fx0=f(x0);xr=x1-((x1-x0)/(fx1-fx0))*fx1;fprintf('It. X0 X1 Xr Error aprox \n');fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %11.7f \n',i,x0,x1,xr,error);while error_aprox >= tol,xra=xr;x1=xr;fx1=f(x1);fx0=f(x0);xr=x1-((x1-x0)/(fx1-fx0))*fx1;error = abs((xr - xra) / xr);error_aprox = error;i=i+1;fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %11.7f \n',i,x0,x1,xr,error_aprox);end