Вы находитесь на странице: 1из 19

UNIVERSIDAD MAYOR DE SAN SIMON FACULTAD DE CIENCIAS Y TECNOLOGIA CARRERAS DE INFORMATICA Y SISTEMAS

GUIA BASICA DE MATLAB

ELABORADO POR: LIC. PATRICIA RODRIGUEZ.

Diciembre 2 ! C"c#$b$mb$ % B"&i'i$

Lic. Patricia Rodrguez

Matemtica Computacional II

Introduccin a Matlab
M$(&$b e) *+ ,r"-r$m$ i+(er$c(i'" ,$r$ c.&c*&" +*m/ric" 0 (r$($mie+(" 1e 1$("). C"+(ie+e m*c#$)
#err$mie+($) 0 *(i&i1$1e) 2*e ,ermi(e+ $1em.) 1i'er)$) 3*+ci"+$&i1$1e)4 c"m" &$ ,re)e+($ci5+ -r.3ic$ e+ 2 0 6 1ime+)i"+e). E)") 7(i&e) e)(.+ $-r*,$1") e+ 8,$2*e(e)8 9 toolboxes:. A M$(&$b )e &e ,*e1e+ $;$1ir ,$2*e(e) e),eci$&i<$1") ,$r$ $&-*+$) ($re$) 9,"r e=em,&"4 ,$r$ (r$($mie+(" 1e im.-e+e):. Tr$b$=$r c"+ M$(&$b c"m,"r($ $,re+1er *+ &e+-*$=e )im,&e. E+ e)($ i+(r"1*cci5+ )e e>,&ic$+ &") e&eme+(") b.)ic") 1e e)(e &e+-*$=e. Matlab es un programa command-driven, es decir, que se introducen las rdenes escribindolas una a una a continuacin del smbolo prompt! que aparece en una inter"az de usuario una #entana!. $sta introduccin contiene e%emplos que se pueden escribir directamente en la lnea de comandos de Matlab. Para distinguir esos comandos, %unto con la respuesta del programa, se emplean un tipo de letra di"erente&

2+2 ans = 4

'na manera de seguir esta introduccin consiste en abrir Matlab en otra #entana, e ir copiando ( pegando el comando a continuacin del smbolo )). Para ms in"ormacin, se puede consultar el "olleto "Getting Started with Matlab" o el manual de usuario que estn en la biblioteca!. *ambin puede consultarse la a(uda en lnea, como se e+plica ms adelante. , conectarse al ser#idor -eb de Mat./or0s, la empresa que comercializa Matlab, donde pueden encontrarse 1por e%emplo1 programas que .an escrito otros usuarios de Matlab. $ste documento contiene los siguientes apartados& Comandos bsicos 2(uda en lnea $l entorno Matlab 3ectores ( matrices Polinomios 4r"icos 56cripts5 Clculo simblico 6ugerencias

Comandos bsicos
$n esta seccin se e+plica cmo usar Matlab a modo de calculadora. $mpecemos con algo sencillo& las operaciones matemticas elementales.

x=2+3 x= 5 2+3 ans = 5

6i no se asigna el resultado a ninguna #ariable, Matlab lo asigna por de"ecto a la #ariable ans answer!&

Para saber cul es el #alor asignado a una determinada #ariable, basta introducir el nombre de la #ariable&

x
7

Lic. Patricia Rodrguez

Matemtica Computacional II

x= 5
La notacin para las operaciones matemticas elementales es la siguiente& 8 e+ponenciacin 9 multiplicacin : di#isin ; suma 1 resta $l orden en que se realizan las operaciones de una lnea es el siguiente& primero, la e+ponenciacin< luego, las multiplicaciones ( di#isiones< ( "inalmente, las sumas ( las restas. 6i se quiere "orzar un determinado orden, se deben utilizar parntesis, que se e#al=an siempre al principio. Por e%emplo, para .allar dos entre tres,

2/2+1 ans = 2
en e"ecto& primero se calcula 7:7 ( luego se suma >!.

2/(2+1) ans = 0.6667


Primero se calcula el parntesis 7;>! ( luego se realiza la di#isin. ?os obser#aciones. $l punto decimal es . no una coma!. @ en Matlab, las ma(=sculas ( las min=sculas son distintas. $s decir, A es una #ariable di"erente de +. $n Matlab estn tambin de"inidas algunas "unciones elementales. Las "unciones, en Matlab, se escriben introduciendo el argumento entre parntesis a continuacin del nombre de la "uncin, sin de%ar espacios. Por e%emplo&

y=exp(0) y= 1
la "uncin e+p es la e+ponencial!. Be aqu una tabla con algunas "unciones elementales&

sin seno cos coseno tan tangente sec secante csc cosecante cot cotangente ex e+ponencial p log logaritmo natural sqr raz cuadrada t ab #alor absoluto s
C

Lic. Patricia Rodrguez

Matemtica Computacional II

Para obtener las "unciones trigonomtricas in#ersas, basta aDadir una a delante del nombre. @ para las "unciones .iperblicas, una . al "inal. Por e%emplo, atan. +! es el arcotangente .iperblico de +&

z=atanh(2) z= 0.54 ! + 1.570"i


9< e) *+ +7mer" c"m,&e=":.

#$%da en l&nea
Cmo obtener in"ormacin sobre los comandos de Matlab. $ste documento es tan slo una introduccin 1mu( resumida1 del lengua%e ( del mane%o de Matlab. 2ntes de seguir, es con#eniente indicar cmo puede obtenerse ms in"ormacin sobre cualquier detalle re"erente a Matlab. Por supuesto, siempre se pueden consultar los manuales& .a( un e%emplar en las salas del C.*.I. ( otro en la biblioteca, que puede obtenerse en prstamo por un da. 2dems, desde dentro de Matlab pueden obtenerse e+plicaciones sobre un tema particular. Ba( #arios mtodos. E& c"m$+1" 'elp. P$r$ "b(e+er i+3"rm$ci5+ )"bre *+$ 1e(ermi+$1$ 3*+ci5+4 b$)($ (ec&e$r 1e)1e &$ &?+e$ 1e c"m$+1") 'elp )e-*i1" 1e& +"mbre 1e &$ 3*+ci5+. P"r e=em,&"&

help round ROUND Round to ards nearest !nte"er# ROUND($) rounds the ele%ents o& $ to the nearest !nte"ers# 'ee also ()OOR* +,-)* (-$#
Si )e e)cribe )5&" #e&,4 )e "b(ie+e *+ ?+1ice 1e (em$). T$mbi/+ ,*e1e "b(e+er)e i+3"rm$ci5+ )"bre *+" 1e &") (em$) 1e e)$ &i)($: $)?4 help el&un ,r","rci"+$ i+3"rm$ci5+ )"bre &$) 3*+ci"+e) m$(em.(ic$) e&eme+($&e). L$ 'e+($+$ 1e $0*1$. Puede llamarse tecleando 'elp(in o bien escogiendo del men= Belp el tem Belp -indo/. 6e obtiene una #entana nue#a, ( .aciendo doble clic0 con el ratn sobre un captulo se pasa a un elenco de los tems contenidos, que a su #ez pueden escogerse para una e+plicacin ms detallada. Con los botones Eac0 ( For/ard se na#ega .acia atrs o .acia adelante. *ambin puede escribirse directamente en la zona superior izquierda el nombre del comando deseado& por e%emplo, para buscar in"ormacin sobre sqrt ...

$n la barra See also aparecen comandos relacionados. La in"ormacin es la misma que la obtenida con el comando 'elp, pero con la comodidad de presentarse en una #entana aparte en #ez de en la lnea de comandos. G

Lic. Patricia Rodrguez

Matemtica Computacional II

L$ $0*1$ i+(er$c(i'$. 6e obtiene escogiendo del men= Belp el tem Belp ?es0, o tecleando 'elpdes) en la barra de comandos. 6e lanza el na#egador ( se obtiene un documento de inicio con un ndice de temas en .iperte+to donde estn los manuales ( otras utilidades, como un buscador. Para leer el manual, se necesita el programa 2crobat Reader. L$ i+3"rm$ci5+ 2*e )e "b(ie+e e) m*c#" m.) c"m,&e($ 2*e e+ &") "(r") 1") c$)")4 &" c*$& ,*e1e re)*&($r i+c"+'e+ie+(e )i *+" 1e)e$ )im,&eme+(e4 ,"r ,"+er *+ c$)"4 c"+"cer &$ )i+($>i) 1e *+$ 3*+ci5+. U+$ i+(r"1*cci5+ $ M$(&$b m.) ri-*r")$4 e>(e+)$ 0 c"m,re+)i'$ 2*e e)(e 1"c*me+(" ,*e1e e+c"+(r$r)e e+ e& e,?-r$3e "Getting Started" 1e& @e&, De)A.

*l entorno +atlab
Para desen#ol#erse en la inter"az de usuario, lle#ar la cuenta de las #ariables, ... E1ici5+ 1e &$ &?+e$ 1e c"m$+1"). Con las "lec.as del teclado se pueden recuperar las rdenes anteriores, sin tener que #ol#er a teclearlas. 2s, en el caso de una equi#ocacin en un comando complicado

d2.&=(y2/20y1+y3)/deltax12) 222 /20y1+y3)/deltax12) +issing operator, comma, or semi-colon.


e+ 'e< 1e '"&'er $ (ec&e$r ("1"4 ,*e1e rec*,er$r)e &$ i+)(r*cci5+ ,*&)$+1" &$ (ec&$ 83&ec#$ #$ci$ $rrib$84 1e),&$<$r)e #$)($ e& err"r 93$&($ *+ ,$r/+(e)i): c"+ &$ 3&ec#$ #$ci$ $ &$ i<2*ier1$4 0 $rre-&$r&":

d2.&=(y2/20y1+y3)/(deltax12)
$n ocasiones, es interesante +" ,re)e+($r e& re)*&($1" e+ &$ ,$+($&&$ por e%emplo, cuando se trata de una lista de datos mu( larga!. $so se consigue poniendo un punto ( coma al "inal de la instruccin.

y=s3rt(4)5
E& re)*&($1" +" $,$rece4 ,er" )i+ emb$r-" e& c.&c*&" )e #$ re$&i<$1":

y y= 2
$l comando ('o indica las '$ri$b&e) con las que se est traba%ando&

ho 6our 7ar!a8les are9 (y & !nd!:e n.punt delta.& &.%ax %an:has t

t.% y

Comandos relacionados con el )i)(em$ ",er$(i'"&

p( Present /or0ing director( 91irec("ri" 1e (r$b$=" $c(*$&: d cd cambiar de directorio dir listado de los "ic.eros del directorio actual
$stos comandos son mu( similares a los anlogos de M61?,6 o 'HIA. G*$r1$r 0 c$r-$r 3ic#er") 1e 1$("). Se em,&e$+ &") c"m$+1") sa.e ( load, re),ec(i'$me+(e. para guardar datos& sa#e Inombre del "ic.eroJ I#ariableJ 1ascii para recuperar datos& load Inombre del "ic.eroJ I#ariableJ 1ascii Por e%emplo& con estas dos rdenes

:d a9 sa7e toto#dat y /as:!!


K

Lic. Patricia Rodrguez

Matemtica Computacional II

)e c$mbi$ e& 1irec("ri" 1e (r$b$=" $ $:B 0 )e -*$r1$ $&&? e& c"+(e+i1" 1e &$ '$ri$b&e toto#dat c"+ 3"rm$(" (e>(" 9,"r e)" )e ,"+e /as:!!:.

y e+ e& 3ic#er"

/ectores $ matrices
La 5especialidad5 de Matlab es el mane%o de matrices& Matlab son las siglas de Matri+ Laborator(. '+ 'ec("r )e 1e3i+e i+(r"1*cie+1" &") c"m,"+e+(e)4 )e,$r$1") ,"r e),$ci") " ,"r c"m$)4 e+(re c"rc#e(e):

7=;s3rt(3) 0 /2< 7= 1.7!21 0 -2.0000


Para de"inir un #ector columna, se separan las "ilas por puntos ( comas&

=;15051/3< = 1.0000 0 0#3333


La operacin transponer cambiar "ilas por columnas! se designa por el apstro"e&

= ans = 1.0000 70 ans = 1.0654 .+(0 ans = 2.7!21

0.!!!!

Las operaciones matemticas elementales pueden aplicarse a los #ectores&

-1.6667

Para crear un #ector de componentes equiespaciados se emplean los dos puntos&

x=492910 x= 4 6 " 10
los componentes de x #an desde G de 7 en 7 .asta >L!. P$r$ i+(r"1*cir m$(rice)4 )e )e,$r$ c$1$ 3i&$ c"+ *+ ,*+(" 0 c"m$:

> = ;1 2 3 54 ? @ 5A B C< >= 12! 4?@ ABC


Para re"erirse a un elemento de la matriz se .ace as&

>(3*1) ans = 7
Para re"erirse a toda una "ila o a toda una columna se emplean los dos puntos&

71=>(9*2) 71 = 2
M

Lic. Patricia Rodrguez

Matemtica Computacional II

? B
#> es la segunda columna de M!. C"+ &$) m$(rice) ($mbi/+ 3*+ci"+$+ &$) ",er$ci"+e) m$(em.(ic$) e&eme+($&e). A)?

>12 ans = !0 !6 42 @@ B1 C@ 102 12@ 1?0


6i se quiere operar en los elementos de la matriz, uno por uno, se pone un punto antes del operador. 6i se quiere ele#ar al cuadrado cada uno de los elementos de M, entonces

>#12 ans = 1 4 1@ 2? 3@ 4C @4 B1
2lgunas 3*+ci"+e) de"inidas sobre matrices&

det determinante in. matriz in#ersa pol polinomio caracterstico $


transpuesta 0 9P$r$ m.) i+3"rm$ci5+: help el%at:

1olinomios
$n Matlab los polinomios se representan por #ectores cu(as componentes son los coe"icientes del polinomio. 6e$ E)(e ,"&i+"mi" )e re,re)e+($ ,"r *+ 'ec("r ,

p=;1 /3 +2< p= 1 -! 2 roots(p) ans = 2 1

Para .allar las races del polinomio, se .ace

( si se quiere .allar el #alor de P +! para un determinado #alor de + por e%emplo, para +NL!

poly7al(p*0) ans = 2

Lic. Patricia Rodrguez

Matemtica Computacional II

2r3icos
Cmo presentar datos con Matlab. L$) ,")ibi&i1$1e) 1e M$(&$b )"+ m*0 -r$+1e). Se i+1ic$ $ c"+(i+*$ci5+ c5m" re$&i<$r -r.3ic") )e+ci&&"). P$r$ m.) i+3"rm$ci5+4 " ,$r$ c"+"cer &$ 'er)$(i&i1$1 1e M$(&$b: c$,?(*&" Handle Graphics Object 1e& @e&, De)A4 e& m$+*$& Using MATLAB Graphics " &$ $0*1$ e+ &?+e$ help "raph2d. Ve$m") c5m" )e ,*e1e re,re)e+($r &$ 3*+ci5+ )e+" e+(re 0 C . P$r$ em,e<$r creem") *+$ '$ri$b&e > 2*e '$0$ 1e cer" $ C :

x=090#19105
0 $ c"+(i+*$ci5+4 c$&c*&em") )i+9>: $&m$ce+$+1" e& re)*&($1" e+ &$ '$ri$b&e 0:

y=s!n(x)5
P$r$ (r$<$r e& -r.3ic"4 )e em,&e$ &$ 3*+ci5+

plot:

plot(x*y)
0 )e "b(ie+e e+ "(r$ 'e+($+$ e& -r.3ic":

E+(re &") m*c#") c"m$+1") 2*e )e ,*e1e+ *(i&i<$r ,$r$ m"1i3ic$r &") -r.3ic")4 e) m*0 7(i& e& em,&e$1" ,$r$ c$mbi$r &$ e)c$&$ 1e &") e=e). L$ "r1e+ e)

ax!s(;x1 x2 y1 y2<)
1"+1e >C4 >2 )"+ &") &?mi(e) i+3eri"r 0 )*,eri"r 1e& e=e >4 e 0C e 02 &") 1e& e=e 0. P$r$ re,re)e+($r *+") 1$(") c"+ )?mb"&") 1e c"&"re)4 )e $;$1e $& c"m$+1" plot4 e+(re $,5)(r"3e)4 &$ e),eci3ic$ci5+. V$m") $ cre$r *+$ '$ri$b&e c"+ 1") 3i&$) 2*e c"+(e+-$ &") +7mer") 1e& C $& C e+ &$ ,rimer$ 3i&$4 0 e& 1"b&e 1e e)") +7mer") e+ &$ )e-*+1$4 0 1ib*=$r&") c"+ ,*+(") r"="):

x(1*9)=09105 x(2*9)=20x(1*9)5 x
P

Lic. Patricia Rodrguez

Matemtica Computacional II

x= 0 1 2 ! 4 5 6 7 " 10 0 2 4 @ B 10 12 14 1@ 1B 20 plot4x41,56,x42,56,0ro06

9,$r$ 'er &$) e),eci3ic$ci"+e) ,")ib&e)4 (ec&e$r help plot. P"r e=em,&"4 =ro= e)($b&ece *+ -r.3ic" 1e c"&"r r"=": r 0 1e ,*+("): ".: Si +" )e i+1ic$ +$1$4 e& -r.3ic" )e (r$<$ c"+ *+$ &?+e$ $<*&. O(r$) 3*+ci"+e) m*0 7(i&e): -ri14 2*e (r$<$ *+$ c*$1r?c*&$4 xla8el(=tDtulox=)e yla8el(=tDtuloy=)4 2*e )ir'e+ ,$r$ ,"+er *+ (?(*&" e+ &") e=e). P$r$ im,rimir *+$ 3i-*r$4 b$)($ )e&ecci"+$r ,ri+( del men de la ig!ra"

78cripts7
2rc.i#os de rdenes& programar en Matlab. Re$&i<$r *+ ,r"-r$m$ e+ M$(&$b e) 3.ci&. B$)($ $brir *+ e1i("r 1e (e>(" 9c"m" e& B&"c 1e N"($) 1e Di+1"E): 0 e)cribir &") c"m$+1") *+" $ c"+(i+*$ci5+ 1e "(r". L*e-" e)e 3ic#er" 1e (e>(" 1ebe -*$r1$r)e c"+ &$ e>(e+)i5+ .m4 0 $ e)" )e &e &&$m$ *+ script:

Lic. Patricia Rodrguez

Matemtica Computacional II

U+$ 'e< -*$r1$1" e& 3ic#er" 9e+ e& e=em,&"4 +1$($.m: e+ e& 1irec("ri" $c(*$&4 1e)1e &$ &?+e$ 1e c"m$+1") 1e M$(&$b b$)($ e)cribir +1$($ ,$r$ 2*e )e e=ec*(e e& ,r"-r$m$. A ,$r(ir 1e $2*?4 )e $bre+ &$) ,")ibi&i1$1e) 1e &$ ,r"-r$m$ci5+ c"+ *+ &e+-*$=e )e+ci&&". P*e1e 'er)e *+$ ,.-i+$ Deb 1e i+(r"1*cci5+ $ &$ ,r"-r$m$ci5+ $2*?.

Clc%lo simb9lico
Matemticas en el ordenador. B$)($ $#"r$4 &$) ",er$ci"+e) 2*e )e #$+ m")(r$1" )e #$+ re$&i<$1" c"+ +7mer"). E& toolbox 1e c.&c*&" )imb5&ic" ,ermi(e re$&i<$r clculos abstractos:

d!&&(=s!n(x)=) ans = cos4x6


Las e+presiones simblicas se introducen entre apstro"es. A c"+(i+*$ci5+ )e 1$ *+$ ($b&$ c"+ $&-*+$) 3*+ci"+e) 1e e)(e (""&b">4 =*+(" c"+ *+ e=em,&" 1e c$1$ *+$:

di33 int

deri#ada integral

di3340sin4x606 int40x:206 sol.e40x:2!;x+2=006 e<plot40exp4x606

sol.e resolucin de ecuaciones e<pl gr"icos ot

E'i1e+(eme+(e4 &$) e>,re)i"+e) ,*e1e+ )er ("1" &" c"m,&ic$1$) 2*e )e 2*ier$ ...

sol7e(=x=:os(x)=) ans = .7! 0"51!!215160641655!120"767!"7 int404x:4+4;x:!+11;x:2+12;x+"6= 44x:2+2;x+!6:2;4x+16606 ans =


>L

Lic. Patricia Rodrguez

Matemtica Computacional II

log4x+16+1=";4-4;x-"6=4x:2+2;x+!61=4;2:41=26;atan41=4;42;x+26;2:41=266

>ntrod%cci9n a la programaci9n con +atlab


Esta pgina pretende ser#ir de gua para dar los primeros pasos en la programacin. Para aprender, el lengua%e que se emplee es 1.asta cierto punto1 irrele#ante& lo ms importante son los conceptos. 'na #ez conocido un lengua%e, pasar a otro no suele resultar di"cil. Como Matlab es un lengua%e simple, resulta idneo para los comienzos. 'n programa consiste en una serie de instrucciones que se e%ecutan secuencialmente una detrs de otra!. Por lo tanto, es requisito pre#io conocer esas instrucciones, ( cmo escribirlas correctamente sintaxis!. 2lguna in"ormacin al respecto puede encontrarse en la pgina -eb Introduccin a Matlab. $specialmente necesario es .aber con"eccionado pre#iamente un script all se indica cmo .acerlo!. $ste documento consta de los siguientes apartados& Hociones preliminares Control del "lu%o Condiciones Rami"icaciones Eucles $stilo $%ercicios ( soluciones 2rc.i#os para descargar 6ugerencias

?ociones preliminares
2ntes de empezar ... La elaboracin de un programa para Matlab es mu( sencilla. Easta abrir un documento de te+to se puede .acer con cualquier editor, Matlab trae uno incorporado!, escribir las instrucciones tal como se pondran en la #entana de comandos ( guardar el documento con la e+tensin .m por e%emplo& miprog.m!. Matlab reconoce automticamente los "ic.eros que tienen e+tensin .m& si en la #entana de comandos se introduce

miprog

las rdenes almacenadas en el "ic.ero miprog.m se e%ecutarn, una tras otra. 2 ese recorrido a tra#s de las instrucciones se le conoce con el nombre de flujo. Los comandos de un programa se denominan tambin sentencias. $l .ec.o de guardar una serie de instrucciones el cdigo! en un "ic.ero tiene de por s algunas #enta%as& e#ita el repetir las rdenes en la #entana de comandos. Pero la potencia de un programa se pone de mani"iesto si en l se contienen instrucciones que controlan qu sentencias se e%ecutan en cada circunstancia. 2s, un programa puede 5decidir5, llegado a un punto, e%ecutar unos comandos u otros en "uncin del #alor que tome una #ariable, por poner un caso.

Control de 3l%@o
2l proceso de toma de decisiones se le llama control del "lu%o Antes de ponerse a escribir el programa, sobre todo si es un poco largo o comple%o, es =til trazar un esquema, en lengua%e corriente, de lo que se quiere .acer. 2 eso se le denomina >>

Lic. Patricia Rodrguez

Matemtica Computacional II

un 1i$-r$m$ 1e 3&*=". 6i lo que se pretende est claro, escribir el programa se reduce a traducir el diagrama de "lu%o del castellano al lengua%e de Matlab. 3eamos un caso simple. Constru(amos el diagrama de "lu%o de un programa que esco%a un n=mero al azar del L al Q ( nos pida que lo adi#inemos. 'na #ez escogido el n=mero, el programa debe in"ormar si .emos acertado o no. $l diagrama de "lu%o correspondiente es

Diagrama de flujo $n un diagrama de "lu%o .a de buscarse la claridad, la concisin, el rigor. Con un buen diagrama de "lu%o, gran parte del traba%o est .ec.o. Puede ser tentador comenzar a escribir directamente el programa en el editor, con la esperanza de .acerlo todo bien a la primera. 6uele ser ms e"icaz, sin embargo, escribir antes el diagrama de "lu%o, para luego intentar pasarlo al lengua%e in"ormtico elegido.

Condiciones
6on las preguntas bsicas a las que se puede responder s o no Para implementar el control del "lu%o, son mu( =tiles unas e+presiones que permiten comparar dos #ariables entre s o una #ariable con un #alor "i%o. $n un programa, a #eces es necesario preguntarse& !es x ma"or #ue "$ %ues si x es ma"or #ue "& entonces & " si no , < o bien& caso de #ue la variable x sea menor #ue cero& hacer tal cosa . Las condiciones se constru(en con ",er$1"re) re&$ci"+$&e), como son los siguientes&

A ma(or que B menor que = igual que = C di"erente que = B menor o igual que = A ma(or o igual que =
>7

Lic. Patricia Rodrguez

Matemtica Computacional II

'na condicin, como se .a indicado, slo admite dos respuestas& #erdadero o "also. 2s, a la pregunta Res x ma(or o igual que $S, que en el lengua%e de Matlab se e+presa xA=$, slo caben dos respuestas posibles& s, es cierto, x es ma(or o igual que $< o bien, no, es "also, x no es ma(or o igual que $. ?os obser#aciones. La primera& el operador relacional igual #ue se constru(e con dos smbolos ==. $l moti#o es el siguiente& si se escribe x=!, el resultado es que se le asigna a x el #alor !. Ho se .ace ninguna pregunta. 6i lo que se desea es preguntar Res x igual a !S, no se puede escribir x=!, pues en este caso x tomara el #alor !, independientemente de lo que #aliera antes. $n cambio, x==! es el anlogo en lengua%e in"ormtico a la pregunta& Res x igual a !S. *ras la pregunta x==! la #ariable x sigue #aliendo lo mismo que antes.La segunda obser#acin es una pequeDa astucia& la tilde T del operador diferente #ue se consigue apretando la tecla 2lt ( 1sin soltarla1 escribiendo con el teclado el n=mero >7M. $n algunos sistemas operati#os, tambin sir#e apretar 2lt4r (, sin soltarla, apretar la tecla G. Las condiciones se pueden agrupar en construcciones lgicas& condici9n1 D condici9n2, condici9n1 E condici9n2, etctera. Cons=ltese el manual de Matlab en lo relati#o a este tpico. $n resumen& con las e+presiones relacionales se pueden realizar preguntas de respuesta un#oca #erdadero o "also!, que permitan luego tomar una decisin.

Fami3icaciones
?ependiendo de una condicin, el programa decide el curso que seguir El resultado de una condicin permite tomar una decisin, es decir, si la condicin es #erdadera se e%ecutan determinadas sentencias. $l diagrama de "lu%o se rami"ica&

'amificacin i La rami"icacin ms simple, e+presada en este diagrama de "lu%o, se obtiene con la siguente sinta+is& i3 4condicin6

sentencias end
>C

Lic. Patricia Rodrguez

Matemtica Computacional II

lo que #a en cursi#a, .a( que sustituirlo por las e+presiones adecuadas< i3 ( end son palabras clave del lengua%e in"ormtico, ( no se pueden utilizar para otra cosa, p. e%. una #ariable no puede 1no debera1 llamarse i3!. 'n caso concreto&

i34lengt'4sitios6A16
recta=pol$3it4x,$,16G

end
Ledo en lengua%e corriente& si la longitud del #ector sitios es ma(or que >, se realiza el a%uste lineal indicado en la instruccin recta=pol$3it4x,$,16. Caso contrario si la longitud del #ector sitios es menor o igual a >! esa instruccin no se e%ecuta ( el programa sigue en la instruccin que #enga despus de end!. $+iste la posibilidad de e%ecutar ciertas sentencias si la condicin es #erdadera, ( otras di"erentes si la condicin es "alsa& i3 4condicin6

sentencias A else
sentencias B

end
dic.o de otra manera& si la condicin se cumple, se e%ecutan las e%ecutan las sentencias B.

sentencias A< si no, se

Diagrama de flujo de una ramificacin if ( else 'na #ez se .a(an e%ecutado las sentencias que correspondan las sentencias # si la condicin es #erdadera, las sentencias H en caso contrario! el programa contin=a con las instrucciones que #engan despus de end. $s de seDalar que las rami"icaciones se pueden anidar una condicin dentro de otra& dentro de las sentencias A o de las sentencias B en el anterior diagrama de "lu%o!. $l cdigo se #uel#e ms comple%o. *ambin se pueden construir rami"icaciones con #arias posibilidades& la sinta+is .ace uso de las palabras cla#e i3 = elsei3 = elsei3 = ... = else = end. 6e remite para una e+plicacin ms detallada a la a(uda de Matlab trmino de b=squeda& elsei"!. ,tra posibilidad de rami"icacin m=ltiple la o"rece la construccin )Ei(c#. La sinta+is es& >G

Lic. Patricia Rodrguez

Matemtica Computacional II

s(itc' variable case valor1,


sentencias A case valor2, sentencias B

case ... ... end


Como antes, lo escrito en cursi#a debe sustituirse por las e+presiones adecuadas!. Las palabras cla#e son s(itc', case, end. La rami"icacin s/itc. opera de la siguiente manera. 2l llegar a la e+presin s(itc' variable, si variable tiene el #alor valor1 se e%ecutan las sentencias A< si variabletoma el #alor valor2, las sentencias B< ( as sucesi#amente. $s importante notar que la #ariable slo debe tomar unos pocos #alores& valor1, valor2, etc. para que el programa se rami"ique en unas pocas ramas. Ho tiene sentido intentar una rami"icacin s/itc. con una #ariable que pueda tomar un n=mero in"inito de #alores.

H%cles
R3arias secuencias que se e%ecutan repetidas #ecesS 'n bucle @a( ocasiones en las que es necesario repetir el mismo con%unto de instrucciones muc.as #eces, cambiando algunos detalles. Pongamos un caso. 6ea un #ector x4i6 con n componentes< se quiere construir la 5media m#il5 de x con tres elementos, que consiste en ir tomando la media aritmtica de cada tres puntos consecuti#os. $s decir& desde i=2 .asta n-1, media4i-16=4x4i6+x4i-16+x4i+166=!. ?etalles& se empieza a contar en i=2 porque para el primer elemento de x no e+iste el elemento anterior< ( se acaba en n-1 por anloga razn< adems, el primer componente de media es el correspondiente a i=2, de a. que se asigne el resultado a media4i-16!. $so es lo que se consigue con un bucle 3"r, cu(a sinta+is es& 3or contador=inicio5paso5fin, sentencias

end
Las palabras cla#es son 3or ( end. $ste bucle pone en marc.a una #ariable llamada contador que #a desde inicio .asta fin de paso en paso. Cada #ez que las sentencias se e%ecutan, contador aumenta en un #alor paso que si se omite, se le asigna automticamente el #alor >!. Cuando contador llega al #alor fin, el bucle se acaba ( el programa contin=a con las sentencias que .a(a ms all de end.

>K

Lic. Patricia Rodrguez

Matemtica Computacional II

Diagrama de flujo de un bucle for ,bsr#ese que un bucle como el indicado se implementa un n=mero "i%o de #eces& desde inicio .asta 3in de paso en paso. $n ocasiones, sin embargo, no se sabe de antemano cuntas #eces .abr que e%ecutar las sentencias del bucle. Por e%emplo& si es necesario repetir una serie de sentencias .asta que se cumpla una determinada condicin, ( no se sabe a priori cuntas #eces ser necesario realizar esas operaciones. $n ese caso se emplea un bucle E#i&e& ('ile4condicin6, sentencias

end
$ste bucle e%ecuta las sentencias mientras la condicin sea #erdadera.

Diagrama de flujo de un bucle while >M

Lic. Patricia Rodrguez

Matemtica Computacional II

$s posible sustituir la condici9n por una #ariable. $n e"ecto& una #ariable que toma el #alor cero corresponde a una condicin "alsa. 6i la #ariable toma un #alor di"erente de cero, es equi#alente a una condicin #erdadera. 2s, se puede escribir

x=10G ('ile4x6
sentencias

x=x-1G end Para x=10, &$ 8c"+1ici5+8 e) 'er1$1er$ ,*e)(" 2*e + e) 1i3ere+(e 1e cer". N5(e)e 2*e e&
c"+($1"r + #$0 2*e m"1i3ic$r&" m$+*$&me+(e 9&?+e$ +N+1>: ,*e)(" 2*e4 $& re'/) 2*e &" 2*e "c*rre c"+ e& b*c&e 3"r4 e)(e +" -e)(i"+$ +i+-7+ c"+($1"r. E+ c*$+(" + ("me e& '$&"r cer"4 &$ 8c"+1ici5+8 e) 3$&)$ 0 e& b*c&e $c$b$. A(e+ci5+: e) 3.ci& c$er e+ b*c&e) i+3i+i("). E+ e& e=em,&" $+(eri"r4 )i 3$&($ &$ &?+e$ x=x-1 ( las sentencias +" m"1i3ic$+ e& '$&"r 1e x4 &$ 8c"+1ici5+8 )iem,re )er. cier($ pues x=10! ( e& ,r"-r$m$ +*+c$ )$&1r. 1e& b*c&e: e=ec*($r. *+$ 0 "(r$ 'e< &$) sentencias. E& ,r"-r$m$ )e 8c*e&-$84 0 #$0 2*e i+(err*m,ir&" 1e)1e e& (ec&$1" $,re($+1" &$) (ec&$) C(r&FC.

*stilo
'n programa elegante suele ser un buen programa Empecemos diciendo que, en general, para realizar una tarea particular se pueden emplear muc.os programas di"erentes que den el resultado correcto. RCul es el ms e"icienteS UHo es una pregunta tri#ialV Ba( que ir probando para me%orar la #elocidad. Con la prctica 1( el estudio1 se descubren las maneras ms rpidas de implementar las instrucciones entre todas las posibles. La con"eccin de programas se #uel#e "recuentemente una tarea rutinaria donde el orden "acilita las cosas. Repasar un programa una ( otra #ez, modi"icando poco a poco el cdigo para depurarlo, e+ige una cierta disciplina. 2unque cada uno tenga sus pre"erencias, es con#eniente desarrollar algunos .bitos. Me atre#o a recomendar algunos& $l programa debe resultar de 3.ci& &ec(*r$. 2s, pasado el tiempo, es ms sencillo re#isarlo. Los nombres de las #ariables, en la medida de lo posible, deben ser autoe+plicati#os. La siguiente porcin de cdigo, escrita de dos maneras equi#alentes, lo muestra. RPor qu llamar x o ? a una #ariableS Los nombres abstractos restan claridad al programa.

?=10G x=rand41,?6G $=<eros41,?6G 3or i=15?, $4i6=s%m4x415i66G end

n%mIpts=10G prob=rand41,n%mIpts6G probIac%m=<eros41,n%mIpts6G 3or indice=15n%mIpts, probIac%m4indice6=s%m4prob415indic e66G end

2mbos cdigos son equi#alentes ( se e%ecutarn igual de rpido los nombres largos de las #ariables no in"lu(en en la #elocidad de e%ecucin!. Introducir c"me+($ri") en el programa. Los comentarios son lneas que no se e%ecutan, en las que se escriben aclaraciones e+plicati#as. Para que una lnea no se e%ecute, basta escribir al principio de ella el smbolo W. 2s&

Jescala5 102 pixels = " mm dIm="=102G


>O

'n programa con comentarios es ms "cil de entender.

Lic. Patricia Rodrguez

Matemtica Computacional II

6uele ser bueno 1e3i+ir &$) '$ri$b&e) $& ,ri+ci,i". $llo e#ita tener que buscarlas a lo largo del cdigo para cambiar su #alor cuando sea necesario. 2dems, si es posible, es me%or de"inir los #ectores ( matrices al principio con su dimensin adecuada. $n el caso de que .a(a que ir rellenando los #alores de un #ector, el programa #a ms rpido si se de"ine el #ector #aco al principio con el comando ones o <eros! que ir aDadiendo componentes al #ector con"orme se #an calculando. Para #er dnde empiezan ( dnde acaban los bucles ( rami"icaciones, es costumbre i+1e+($r introducir una sangra! en las lneas contenidas en ellos. $so resulta de especial a(uda en los bucles ( condiciones anidados.

>P

Lic. Patricia Rodrguez

Matemtica Computacional II

*@ercicios $ sol%ciones
Los problemas ms interesantes suelen ser los que uno se encuentra en la #ida real ...

E# ,Fer:!:!os
$scribir un programa que tome un n=mero entero al azar entre el L ( el Q, pregunte un n=mero al usuario ( le in"orme si acert o no. $scribir un programa que tome un n=mero entero al azar entre el L ( el Q, ( le pregunte un n=mero al usuario .asta que acierte. $scribir una "uncin que de#uel#a el #alor absoluto del argumento. )ota.1 @a e+iste en Matlab& abs4x6!. $scribir una "uncin que de#uel#a el radio distancia al origen!, recibiendo como argumento las coordenadas cartesianas 4x,$6. $scribir un programa que, tras pedir al usuario un n=mero, le in"orme de si es par, impar o no entero. $scribir un programa que calcule las N primeras "racciones del tipo 1/i, tras pedir N al usuario. $scribir un programa que calcule los cuadrados de los n=meros enteros, .asta que el cuadrado sea ma(or o igual que >LL.

G# Hroye:tos
Realizar una criba de n=meros primos, esto es, elaborar un programa que calcule en el menor tiempo posible la ma(or cantidad de n=meros primos consecuti#os partiendo de los ms pequeDos.

>Q

Вам также может понравиться