ecuaciones no lineales

7
PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA CIVIL SERIE DE TAYLOR Y SOLUCIÓN DE ECUACIONES NO LINEALES Oscar Javier García-Cabrejo

Upload: karen-giannella-apaza

Post on 10-Nov-2015

4 views

Category:

Documents


0 download

DESCRIPTION

ecuaciones no lineales

TRANSCRIPT

The MATLAB Notebook v1.6

PONTIFICIA UNIVERSIDAD JAVERIANA

FACULTAD DE INGENIERA

DEPARTAMENTO DE INGENIERA CIVIL

SERIE DE TAYLOR Y SOLUCIN DE ECUACIONES NO LINEALES

Oscar Javier Garca-Cabrejo

Bogot, Marzo de 2008

CDIGO DE LA SERIE DE TAYLOR PARA DIFERENTES FUNCIONES

La serie de Taylor para diferentes funciones se puede implementar empleando una expresin del tipo:

donde f() es la funcin a analizar, f'() es su correspondiente derivada y c es el punto cercano a donde se quiere realizarla estimacin.

Aplicando esta expresin para el caso de la funcin exponencial se tiene:

Esta expresin se encuentra implementada en el siguiente cdigo:

ST1{1,1}='function [c]=exp_taylor(x,n)'

ST1{1,2}='c=1.0;';

ST1{1,3}='for i=1:1:n;';

ST1{1,4}='c=c+(x.^i)./(factorial(i));';

ST1{1,5}='end;'; [nrow,ncol]=size(ST1); fid=fopen('exp_taylor.m','w'');

for i=1:1:ncol;

fprintf(fid,ST1{1,i});fprintf(fid,'\n');

end;

fclose(fid); Una vez se ha creado esta funcin, esta ya se puede utilizar para realizar la aproximacin numrica de la funcin exponencial especificando el valor de x y el nmero de trminos n, de la siguiente forma:

est=exp_taylor(0.5,3); y el valor real de la exponencial estara dado por:

real=exp(0.5); con lo cual es posible calcular el error relativo asociado:

Er=abs((real-est)/est)*100;

Para el caso de la funcin coseno, el cdigo que la implementa es el siguiente:

ST2{1,1}='function [c]=cos_taylor(x,n)';

ST2{1,2}='c=1.0;';

ST2{1,3}='for i=1:1:n;';

ST2{1,4}='c=c+((-x^2)^i)/factorial(2*i);';

ST2{1,5}='end;'; [nrow,ncol]=size(ST2); fid=fopen('cos_taylor.m','w'');

for i=1:1:ncol;

fprintf(fid,ST2{1,i});fprintf(fid,'\n');

end;

fclose(fid);

Para el caso de la funcin seno, el cdigo que la aproxima usando la serie de Taylor es la siguiente:

ST3{1,1}='function [c]=sin_taylor(x,n)';

ST3{1,2}='c=0.0;';

ST3{1,3}='for i=0:1:n;';

ST3{1,4}='c=c+((-x.^2).^i)/factorial(2*i+1);';

ST3{1,5}='end;';

ST3{1,6}='c=x*c;'; [nrow,ncol]=size(ST3); fid=fopen('sin_taylor.m','w');

for i=1:1:ncol;

fprintf(fid,ST3{1,i});fprintf(fid,'\n');

end; CDIGO DEL MTODO DE LA BISECCIN

A{1,1}='function [x,f,err,iter]=bisection(xl,xu,func,maxit,errmin)';

A{1,2}='iter=1;';

A{1,3}='er=100;';

A{1,4}='xr=xl;';

A{1,5}='root=0;';

A{1,6}='x(1)=xl;';

A{1,7}='f(1)=feval(func,x(1));';

A{1,8}='err(1)=er;';

A{1,9}='while (err > errmin & iter < maxit );';

A{1,10}=' xold=xr;';

A{1,11}='xr=0.5*(xl+xu);';

A{1,12}='fr=feval(func,xr);';

A{1,13}='fl=feval(func,xl);';

A{1,14}='if(fr*fl0);';

A{1,18}='xl=xr;';

A{1,19}='root=xr;';

A{1,20}='else';

A{1,21}='root=xr;';

A{1,22}='end';

A{1,23}='er=(abs(xr-xold)/xr)*100;';

A{1,24}='iter=iter+1;';

A{1,25}='x(iter)=xr;';

A{1,26}='f(iter)=feval(func,xr);';

A{1,27}='err(iter)=er;';

A{1,28}='end;';

[nrow,ncol]=size(A);

fid=fopen('bisection.m','w');

for i=1:1:ncol;

fprintf(fid,A{1,i});fprintf(fid,'\n');

end;

fclose(fid);

CDIGO DEL MTODO DE NEWTON

B{1,1}='function [x,f,err,iter]=newton(xguess,func,dfunc,errmin,maxit)';

B{1,2}='iter=1;';

B{1,3}='er=100;';

B{1,4}='x(1)=xguess;';

B{1,5}='f(1)=feval(func,x(1));';

B{1,6}='err(1)=er;';

B{1,7}='xrold=xguess;';

B{1,8}='xr=xguess;';

B{1,9}='while (er>=errmin & itererrmin) & (itererrmin) & (iter