manual marilia

19
8/16/2019 Manual Marilia http://slidepdf.com/reader/full/manual-marilia 1/19 MANUAL-MATLAB INTRODUCCION En el presente escrito se muestran los métodos numéricos más sencillos y útiles de implementar en problemas comunes de ingeniería En los temas presentados no se !acen deducciones matemáticas comple"as o pro#undas ni discusiones largas sobre los métodos sino $ue se muestra el método con alguna sencilla #orma de %er el por $ué #unciona& se presenta el algoritmo en lengua"e '(T)(* o en pseudoc+digo& y luego se procede a ilustrar con e"emplos& algunos tomados de problemas de ingeniería& implementados en '(T)(* o E,cel

Upload: beto-fernandez

Post on 06-Jul-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 1/19

MANUAL-MATLAB

INTRODUCCION

En el presente escrito se muestran los métodos numéricos más sencillos y útiles deimplementar en problemas comunes de ingeniería En los temas presentados no se !acendeducciones matemáticas comple"as o pro#undas ni discusiones largas sobre losmétodos sino $ue se muestra el método con alguna sencilla #orma de %er el por $ué#unciona& se presenta el algoritmo en lengua"e '(T)(* o en pseudoc+digo& y luego se

procede a ilustrar con e"emplos& algunos tomados de problemas de ingeniería&implementados en '(T)(* o E,cel

Page 2: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 2/19

1.- ¿QUÉ ES MATLAB?

'atlab es un programa interacti%o para computaci+n numérica y %isuali-aci+n de datosEs ampliamente usado por Ingenieros de Control en el análisis y dise.o& posee ademásuna e,traordinaria %ersatilidad y capacidad para resol%er problemas en matemáticaaplicada& #ísica& $uímica& ingeniería a& #inan-as y muc!as otras aplicaciones Está basadoen un so#isticado so#t/are de matrices para el análisis de sistemas de ecuaciones0ermite resol%er complicados problemas numéricos sin necesidad de escribir un

programa

'(T)(* es un entorno de computaci+n y desarrollo de aplicaciones totalmenteintegrado orientado para lle%ar a cabo proyectos en donde se encuentren implicadosele%ados cálculos matemáticos y la %isuali-aci+n grá#ica de los mismos

'(T)(* integra análisis numérico& cálculo matricial& proceso de se.al y %isuali-aci+ngrá#ica en un entorno completo donde los problemas y sus soluciones son e,presadosdel mismo modo en $ue se escribirían tradicionalmente& sin necesidad de !acer uso de la

programaci+n tradicional

El nombre de '(T)(* pro%iene de la contracci+n de los términos '(Tri,)(*oratory y #ue inicialmente concebido para proporcionar #ácil acceso a las librerías)IN0(C1 y EI20(C1& las cuales representan !oy en día dos de las librerías másimportantes en computaci+n y cálculo matricial

'(T)(* es un sistema de traba"o interacti%o cuyo elemento básico de traba"o son lasmatrices El programa permite reali-ar de un modo rápido la resoluci+n numérica de

problemas en un tiempo muc!o menor $ue si se $uisiesen resol%er estos mismos problemas con lengua"es de programaci+n tradicionales como pueden ser los lengua"es3ortran& *asic o C

1.1. Origen de Matlab

'atlab #ue originalmente desarrollado en lengua"e 3ORTR(N para ser usado encomputadoras main#rame 3ue el resultado de los proyectos )inpac4 y Eispac4 desarrollados en el (rgonne National )aboratory 2u nombre pro%iene de 'atri,)aboratory (l pasar de los a.os #ue complementado y reimplementado en lengua"e C(ctualmente la licencia de 'atlab es propiedad de 'at!5or4s Inc

Page 3: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 3/19

Ventana de trabajo de Matlab

Comando de a!"da

)a ayuda de 'atlab es ciertamente muy clara y completa )os comandos siempre

dispuestos a ec!arnos una mano son6!elp6 muestra una ayuda por pantalla& en la %entana de comandos& con lain#ormacion esencial sobre un comando concreto!elp/in6 similar a !elp pero despliega la ayuda en una %entana au,iliar&

permitiéndolas una na%egaci+n& estilo /eb& muy c+modaloo4#or6 permite buscar una cadena en la primera línea de todos los #ic!eros deayuda

#"n$ione en Matlab

Page 4: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 4/19

'atlab cuenta con tres tipos #undamentales de #unciones6 funciones escalares & funciones vectoriales & y las funciones matriciales las cuales están asignadas sobrematrices y su resultado puede ser un escalar& un polinomio o también una matri-

)a tabla de los operadores relacionales y l+gicos $ue usa 'atlab es la siguiente6

%ela$i&n de la '"n$ione rela$ionale ! l&gi$a ("e " a Matlab

#"n$ione matri$iale

Page 5: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 5/19

E"emplo de una matri-6

Page 6: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 6/19

Representaciones gra#icas'atlab& por omisi+n& une los puntos ,7 y mediante un tra-o recto 2i nuestra orden!ubiera sido plot 8,&y&9:r9; entonces !abr<=a pintado nuestros puntos ,7 y como crucesro"as )a relaci+n de posibilidades de colores y marcas es la siguiente6

'ETODO DE *I2ECCION

Page 7: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 7/19

function [ xr ] = biseccion( y ) %la funcion recibe una funcion y que depende de x%este programa retorna el valor de la raiz de una funcion%con un error aproximado del 0.00000 %%recibe la funcion simbolica dependiente de x %se !ace un analisis" graficando lafuncion" para poder% elegir bien el intervalo

clc" clear syms x t=linspace(#$0"$0" 0000)q=subs(y"t)plot(t"q)grid on

%se pide el ingreso de los limitesxl=input(&'ngrese el limite inferior &)xu=input(&'ngrese el limite superior &)xr=0error= 00 if ((subs(y"xu) subs(y"xl))*0)%sentencia de control paradescartar el intervalo disp(& &) disp(&'ntervalo no valido para !allar la raiz&)

error=0.0000 xr=+a+end%se inicia el metodo de biseccion" con un ciclo en estecaso ,!ile y%error=0.00000 %,!ile (abs(error)*0.00000 %-qui podemos modificar el error

aux=xr xr=(xl xu)/ fxl=subs(y"xl) %se evalua la funcion en 12

fxr=subs(y"xr) %se evalua la funcion en 1r !=fxl fxr %se multiplican los reultados paraf(1r) f(12) if (!30) %sentencias condicionales para definir losnuevos limites. xu=xr elseif(!*0) xl=xr else error=0.00000 %en caso de que !=0 se terminanlas iteraciones end

Page 8: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 8/19

error=((xr#aux)/xr) 00 %se calcula el error relativoaproximadoendend

e"emplo

'ETODO DE RE>U)( 3()2( O 3()2( 0O2ICION

'ETODO DE NE5TON

'ETODO DE 2EC(NTE

'ETODO DE >(UU2

'ETODO DE 2U2TITUCION RE>RE2I?(

function [1]=bac4sub(-"5)

% 6atos% # - es una matriz triangular superior% invertible de orden n x n% # 5 es una matriz de orden n x % 7esultado% # 1 es la soluci8n del sistema lineal -1 = 5% 9:lculo de la dimensi8n de 5 e inicializaci8n de 1n=lengt!(5)1=zeros(n" )1(n)=5(n)/-(n"n)for 4=n# # 1(4)=(5(4)#-(4"4 n) 1(4 n))/-(4"4)end

E@E'0)O

Page 9: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 9/19

'ETODO DE TRI(N>U)(CION 2U0ERIOR

function [ 1 ] = uptrb4 (-"5)

%6atos% #- es una matriz invertible de orden + +% #5 es una matriz de orden +% 7esultados% #1 es una matriz de orden + que contine% la solucion de -1=5% 'nicializamos 1 y una matriz 9 que sirve de almacen temporal[+ +]=size(-)1=zeros(+" )9=zeros( "+ )% 9alculo de la matriz ampliada -ug=[-/5]-ug=[-"5]

for q= +#% pivoteo parcial en al columna q#esima[;"<]=max(abs(-ug(q +"q)))% 'ntercambiamos las filas q#esima y (< q# )#esima9=-ug(q" )-ug(q" )=-ug(< q# " )-ug(< q# " )=9if -ug(q"q)==0 &- es singular. +o !ay solucion o no es unica.& brea4end% roceso de eliminacion en la columna q#esima for 4=q +

m=-ug(4"q)/-ug(q"q) -ug(4"q + )=-ug(4"q + )#m -ug(q"q + ) end

Page 10: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 10/19

end% sustitucion regresva en [>?;] usando el anterior1=bac4sub(-ug( +" +)(-ug( +"+ ))

E@E'0)O

'ETODO DE 3(CTORIA(CION )U

function [ 1 ] = lufact( -"5)% 6atos% # - es una matriz de orden + x +% # 5 es una matriz de orden + x % 7esultado% # 1 es la matriz de orden + x soluci8n de -1 =5.% 'nicializamos 1" ;" la matriz de almacenamiento temporal 9 y% la matriz fila 7 donde se registran los intercambios de filas[+"+]=size(-)1=zeros(+" );=zeros(+" )9=zeros( "+)7= +for q= +#% 6eterminaci8n de la fila pivote para la columna q#@sima [max "<]=max(abs(-(q +"q)))% 'ntercambio de las filas q#@sima y <#@sima 9=-(q" ) -(q" )=-(< q# " ) -(< q# " )=9 d=7(q) 7(q)=7(< q# ) 7(< q# )=d if -(q"q)==0

Page 11: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 11/19

&- es singular" no !ay soluciAn o no es unica& brea4 end% 9:lculo del multiplicador"% que se guarda en la parte subdiagonal de - for 4=q + mult=-(4"q)/-(q"q)

-(4"q)=mult -(4"q +)=-(4"q +)#mult -(q"q +) endend% 7esoluci8n para !allar ;;( )=5(7( ))for 4= + ;(4)=5(7(4))#-(4" 4# ) ;( 4# )end% 7esoluci8n para !allar 11(+)=;(+)/-(+"+)for 4=+# # 1(4)=(;(4)#-(4"4 +) 1(4 +))/-(4"4)

endE@E'0)O

'ETODO ITER(TI?O DE @(CO*I

function [ 1 ] = <acovi( -"5" "delta"max )

% 6atos% # - es una matriz invertible de orden + x +% # 5 es una matriz de orden + x

Page 12: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 12/19

% # es una matriz de orden + x el punto inicial% # delta es la tolerancia para % # maxl es el nBmero m:ximo de iteraciones% 7esultados% # 1 es una matriz de orden C x % la aproximaci8n a la soluci8n de -1=5% generada por el m@todo iterativo de Dacobi

+=lengt!(5)for 4= max for <= + 1 (<)=(5(<)#-(<"[ <# "< +]) ([ <# "< +]))/-(<"<) end err= abs(norm(1&# )) relerr=err/(norm(1) eps) =1& if (err3delta)?(relerr3delta) brea4 endend1=1&

ende"emplo

'ETODO ITER(TI?O DE >(U22B 2EID()

function [ 1 ] = gseid( -"5" "delta"max )%6-EFG

% # - es una matriz invertible de orden + x +% # 5 es una matriz de orden + x

Page 13: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 13/19

% # es una matriz de orden + x en el punto inicial% # delta es la tolerancia para % # max es el numero maximo de iteraciones% 7HG>2E-6FG% # 1 es una matriz de orden + x % # la aproximacion a la solucion de -x = 5% # generada por el metodo de iteraciones de gauss#seidel

+ = lengt!(5)for 4= max for <= + if <== 1( )=(5( )#-( " +) ( +))/-( " ) elseif <==+ 1(+)=(5(+)#-(+" +# ) (1( +# ))&)/-(+"+) else 1(<)=(5(<)#-(<" <# ) 1( <# )#-(<"< +) (< +))/-(<"<) end end err=abs(norm(1&# )) relerr=err/(norm(1) eps)

=1& if(err3delta)?(relerr3delta) brea4 end end1=1&end

e"emplo

'ETODO ITER(TI?O DE NE5TONBR(0 2ON

function [ "iter"err]=ne,dim(I"DI" "delta"epsilon"maxl)

% 6atos% # I es el sistema no lineal" arc!ivado como I.m% # DI es la matriz <acobiana de I" arc!ivada como DI.m

Page 14: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 14/19

% # es el punto inicial% # delta es la tolerancia para % # epsilon es la tolerancia para I( )% # maxl es el nBmero m:ximo de iteraciones 7esultados% # es la aproximaci8n a la soluci8n que se obtiene% # iter es el nBmero de iteraciones realizadas% # err es la estimaci8n del error de .

;=feval(I" )for 4=l maxl

D=feval(DI" ) J= #(DK;&)&* L=feval(I"J)

err=norm(J# )relerr=err/(norm(J) eps)

=J ;=Liter=4if (err3delta)?(relerr3delta)?(abs(;)3epsilon)

brea4

endend

e)em*lo

2ERIE DE T( )OR

function [ t" orden] =serietaylor(f"origen"rango"error)fx=sym(f)v=findsym(fx)orden=0&maximo#max(rango)&t=taylor(fx"v"origen"&orden&"orden),!ile abs(subs(fx"maximo)#subs(t"maximo))*error orden=orden t=taylor(fx"v"origen"&orden&"orden)end

0O)INO'IO INTER0O)(DOR DE )(>R(N>E

function [ 9"2 ] = lagran( 1"; )%6-EFG% # 1 es un vector que contiene la lista de las abscisas% # ; es un vector que contiene la lista de las ordenadas% 7HG>2E-6FG% # 9 es la matriz que contiene los coeficientes del polinomio% interpolador de lagrange% # 2 es la matriz que contiene los coeficientes de los% polinomios coeficentes de lagrange ,=lengt!(1) n=,# 2=zeros(,",)% Iormaci8n de los polinomios coeficientes de 2agrangefor 4= n M= for <= n

if 4N=< M=conv(M"poly(1(<)))/(1(4)#1(<))

Page 15: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 15/19

end end 2(4" )=Mend % 9alculo de los coeficientes del polinomio % interpolador de lagrange9=; 2

end

E@E'0)O

0O)INO'IO INTER0O)(DOR DE NE5TON

function [ 9"6 ] = ne,poly( 1"; )%6atos% # 1 es un vector con la lista de las abscisas% # ; es un vector con la lista de las ordenadas% 7esultados% # 9 es un vector que contiene los coeficientes% polinomio interpolador de +e,ton "escrito de forma !abitual " en% potencias decrecientes de 1% # 6 es la tabla de diferencias divididas n=lengt!(1)6=zeros(n"n)6( " )=;&% >samos la formula 0 para !allar% la tabla de diferencias divididasfor <= n

Page 16: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 16/19

for 4=< n 6(4"<)=(6(4"<# )#6(4# "<# ))/(1(4)#1(4#< )) endend% 9alculo del vector que contiene los coeficientes% del polinomio interpolador de ne,ton"escrito% de forma !abitual"en potencia decreciente de x

9=6(n"n)for 4=(n# ) # 9=conv(9"poly(1(4))) m=lengt!(9) 9(m)=9(m) 6(4"4)end

E@E'0)O

RECT( DE RE>RE2ION

function [ -"5 ] = lsline( 1"; )% 6atos% # 1 es el vector de abscisas x n% # y es el vector de ordenadas x n% 7esultados% # - es el coefciente de x en -x 5% # 5 es el coeficiente independiente en -x b xmean=mean(1)ymean=mean(;)sumx =(1#xmean) (1#xmean)&sumxy=(;#ymean) (1#xmean)&-=sumxy/sumx5=ymean#- xmeanend

E@E'0)O

Page 17: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 17/19

RE>)( CO'0UE2T( DE) TR(0ECIO

function s=traprl(f"a"b"C)% 6atos% # f es el integrando" dado como una% cadena de caracteres OfO% # a y b son los extremos inferior y superior del% intervalo de integraci8n% # C es el nBmero de subintervalos% 7esultado% # s es la aproximaci8n obtenida con la

% regla compuesta del trapecio!=(b#a)/Cs=0for 4=l (C#l) x=a ! 4

s=s feval(f"x)ends=! (feval(f"a) feval(f"b))/ ! send

RE>)( CO'0UE2T( DE 2I'02ON

unction s=simprl(f"a"b"C)% 6atos% # f es el integrando" dado como una% cadena de caracteres OfP% # a y b son los extremos inferior y superior del% intervalo de integraci8n% # C es el nBmero de subintervalos% 7esultado% # s es la aproximaci8n obtenida con la% regla compuesta de Gimpson!=(b#a)/( C)sl=0s =0for 4=l C x=a ! ( 4#l) sl=sl feval(f"x)

Page 18: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 18/19

endfor 4=l (C#l) x=a ! 4 s =s feval(f"x)ends=! (feval(f"a) feval(f"b) Q R R )/Rend

RE>)( RECUR2I?( DE) TR(0ECIO

function E=rctrap(f"a"b"n)% 6atos% # f es el integrando" dado como una% cadena de caracteres OfO% # a y b son los extremos inferior y superior del% intervalo de integraci8n% # n es el nBmero de veces que se !ace la recursi8n% 7esultado% # E es la lista de las aproximaciones obtenidas con la% regla recursiva del trapecio C=!=b#aE=zeros(l"n l)E(l)=! (feval(f"a) feval(f"b))/for <=l n C= C!=!/s=0for 4=l C/

x=a ! ( 4#l)s=s feval(f"x)

endE( < l)=E(<)/ ! send

'ETODO DE INTE>R(CION DE RO*ER>

function [7"quad"err"!]=romber(f"a"b"n"tol)% 6atos% # f es el integrando" dado como una So cadena de caracteres OfO% # a y b son los extremos inferior y superior del% intervalo de integraci8n% # n es el nBmero m:ximo de filas de la tabla% # tol es la tolerancia% 7esultados% # 7 es el esquema de 7omberg% # quad es la aproximaci8n a la integral% # err es una estimaci8n del error% # ! es el menor de los incrementos usadosC=l!=b#aerr=lD=07=zeros(Q"Q)7(l"l)=! (feval(f"a) feval(f"b))/,!ile((err*tol)T(D3n))?(D3Q) D=D

Page 19: Manual Marilia

8/16/2019 Manual Marilia

http://slidepdf.com/reader/full/manual-marilia 19/19

!=!/s=0for p=l C

x=a ! ( p#l) s=s feval(f"x)end7(D l"l)=7(D"l)/ ! s

C= Cfor U= D

7(D "U )=7(D "U) (7(D "U)#7(D"U))/(QVU# )enderr=abs(7(D"D)#7(D "U ))endquad=7(D l"D l)end