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íaEn 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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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
'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
)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
'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
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
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
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
%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
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
&- 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)
% # 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
% # 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
% # 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 .
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
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
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
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
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
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)
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