You are on page 1of 29

En estas breves notas, desarrolladas por Juan-Antonio Infante y Jos Mara Rey, profesores del Departamento de Matemtica Aplicada

de la niversidad !omplutense de Madrid, se pretende dar un primer paso en el aprendi"a#e del uso de MA$%A&' En lo (ue si)ue, se supone (ue el usuario teclea lo (ue aparece en color ro#o *de +ec+o, lo ,ptimo sera (ue el aprendi" de MA$%A& reprodu#era stos y parecidos e#emplos por s mismo- y precedido del smbolo .., (ue +ace el papel del prompt de la m(uina' En color ne)ro aparecer la respuesta de MA$%A& a la instrucci,n tecleada' %os comentarios aparecern en color verde' Antes de comen"ar, +a)amos al)unas consideraciones )enerales/ MA$%A& distin)ue entre may0sculas y min0sculas' %a comilla 1 es la (ue, en un teclado estndar, se encuentra en la tecla de la interro)aci,n'

%os comentarios deben ir precedidos por 2 o, lo (ue es lo mismo, MA$%A& i)nora todo lo (ue vaya precedido por el smbolo 2' %a ayuda de MA$%A& es bastante 0til3 para acceder a la misma basta teclear help' Es recomendable usarlo para obtener una informaci,n ms precisa sobre la sinta4is y diversas posiblidades de uso de los comandos'

A )randes ras)os, los temas a(u introducidos son/ 5eneralidades' 6ectores y matrices'

7peraciones con vectores y matrices' 6ariables l,)icas' 8olinomios' Derivadas y primitivas' 5rficas de funciones' 8ro)ramaci,n con MA$%A&'

%os clculos (ue no se asi)nan a una variable en concreto se asi)nan a la variable de respuesta por defecto (ue es ans *del in)ls, answer-/
>>2+3 ans =

9in embar)o, si el clculo se asi)na a una variable, el resultado (ueda )uardado en ella/
>>x=2+3 x = 5

8ara conocer el valor de una variable, basta teclear su nombre/


>>x x = 5

9i se a:ade un punto y coma *;- al final de la instrucci,n, la m(uina no muestra la respuesta'''


>>y=5*4;

''' pero no por ello de#a de reali"arse el clculo'


>>y y = 20

%as operaciones se eval0an por orden de prioridad/ primero las potencias, despus las multiplicaciones y divisiones y, finalmente, las sumas y restas' %as operaciones de i)ual prioridad se eval0an de i"(uierda a derec+a/
>>2/4*3 ans = 1.5000 >>2/(4*3) ans = 0.1667

9e pueden utili"ar las funciones matemticas +abituales' As, por e#emplo, la funci,n

coseno,
>>cos(pi) % pi es ans = (1 na !a"ia#le con !alo" p"e$e%e"&ina$o 3.1415'...

o la funci,n e4ponencial
>>exp(1) ans = 2.71-3 % ) nci*n exponencial e!al a$a en 1+ es $eci"+ el n,&e"o e

Adems de la variable pi , MA$%A& tiene otras variables con valor predeterminado3 ste se pierde si se les asi)na otro valor distinto' 8or e#emplo/
>>eps p"ecisi*n ans = 2.2204e(016 % .psilon $e la &/0 ina. 1#s2"!ese 0 e 345647 %"a#a8a en $o#le

pero'''
>>eps=7 eps = 7

7tro e#emplo de funci,n matemtica/ la ra" cuadrada3 como puede verse, traba#ar con comple#os no da nin)0n tipo de problema' %a unidad ima)inaria se representa en MA$%A&como i o 8, variables con dic+o valor como predeterminado/
>>s0"%((4) ans = 0+ 2.0000i

El usuario puede controlar el n0mero de decimales con (ue aparece en pantalla el valor de las variables, sin olvidar (ue ello no est relacionado con la precisi,n con la (ue se +acen los clculos, sino con el aspecto con (ue stos se muestran/
>>1/3

ans = 0.3333 >>9o"&a% lon: >>1/3 ans = 0.33333333333333 >>9o"&a% % ; el!e al 9o"&a%o es%/n$a" 0 e es el $e 4 ci9"as $eci&ales

8ara conocer las variables (ue se +an usado +asta el momento/


>><ho =o " !a"ia#les a"e> ans eps x y

o, si se (uiere ms informaci,n *obsrvese (ue todas las variables son arrays-/


>><hos ?a&e ans eps x y @iAe 1x1 1x1 1x1 1x1 7y%es Blass #le a""ay #le a""ay #le a""ay #le a""ay sin: 32 #y%es

$o $o $o $o

C"an$ %o%al is 4 ele&en%s

8ara des+acerse de una variable


>>clea" y >><ho =o " !a"ia#les a"e> ans eps x

6olver al ndice )eneral

8ara definir un vector fila, basta introducir sus coordenadas entre corc+etes/
>>!=D1 2 3E != 1 2 3 >><=D4 5 6E; % ;ec%o" $e 3 coo"$ena$as

El operador F es el de trasposici,n *en realidad trasposici,n y con#u)aci,n-/


>><F ans = 4 5 6

9i (ueremos declarar un vector de coordenadas e(uiespaciadas entre dos dadas, por e#emplo, (ue la primera val)a ;, la 0ltima <; y la distancia entre coordenadas sea <, basta poner/
>>!ec%1=0>2>20 !ec%1 = 0 2 4 6 - 10 12 14 16 1- 20

E(uivalentemente, si lo (ue conocemos del vector es (ue la primera coordenada vale ;, la 0ltima <; y (ue tiene == en total, escribiremos/
>>!ec%2=linspace(0+20+11) !ec%2 = 0 2 4 6 - 10 12 14 16 1- 20

A las coordenadas de un vector se accede sin ms (ue escribir el nombre del vector y, entre parntesis, su ndice/
>>!ec%2(3) ans = 4

y se pueden e4traer subvectores, por e#emplo/


>>!ec%2(2>5) ans= 2 4 6 -

o,
>>!ec%1(>) ans= 0 2 4 6 10 12 14 16 120

%as matrices se escriben como los vectores, pero separando las filas mediante un punto y coma3 as una matri" >4>/
>>3=D1 2 3;4 5 6;7 - 'E 3 1 4 7 = 2 3 5 6 - ' % @ %"asp es%a (s a$8 n%a)

>>3F ans =

1 4 7 2 5 3 6 ' >>&a%=D!;<;0 0 1E &a% 1 2 4 5 0 0 = 3 6 1 % 5a&#i2n es na &a%"iA 3x3

A los elementos de una matri" se accede sin ms (ue escribir el nombre de la matri" y, entre parntesis, los respectivos ndices/
>>&a%(1+3) ans = 3 % Gle&en%o en la p"i&e"a 9ila y %e"ce"a col &na $e la &a%"iA &a%

$ambin se puede acceder a un fila o columna completas,


>>&a%(>+2) ans = 2 5 0 >>&a%(2+>) ans = 4 5 6 % @ se: n$a 9ila % @e: n$a col &na $e &a%

acceder a la matri" como si fuera una columna,


>>3(2>7) ans = 4 7 2 5 3 % 6os ele&en%os se: n$o a s2p%i&o $e la &a%"iA co&o col &na

o acceder a cual(uiera de sus submatrices


>>&a%(2>3+D1 3E) % @ #&a%"iA 9o"&a$a po" los ele&en%os 0 e es%/n en % H%o$asH las 9ilas 0 e hay en%"e la se: n$a y la %e"ce"a y % en las col &nas p"i&e"a y %e"ce"a

ans = 4 6 0 1

E4isten al)unas matrices definidas previamente3 por e#emplo, la matri" identidad,


>>eye(5) ans 1 0 0 1 0 0 0 0 0 0 = 0 0 1 0 0 % eye se p"on ncia en in:l2s co&o I

0 0 0 1 0

0 0 0 0 1

la matri" nula,
>>Ae"os(3) ans 0 0 0 0 0 0 = 0 0 0

o la matri" cuyos elementos valen todos =/


>>ones(4) ans 1 1 1 1 1 1 1 1 = 1 1 1 1

1 1 1 1

9e puede conocer el tama:o de una matri" y la lon)itud de un vector/


>>siAe(&a%) % Ji&ensiones $e la &a%"iA &a% (n,&e"o $e 9ilas y $e col &nas)

ans = 3 3 >>siAe(!) ans = 1 3 >>len:%h(!) % 6on:i% $ $el !ec%o" (n,&e"o $e coo"$ena$as) ans = 3

E4isten comandos (ue permiten crear de forma sencilla matrices' 8or e#emplo/
>>$ia:(!) ans 1 0 0 2 0 0 = 0 0 3 % 3a%"iA $ia:onal c ya $ia:onal es el !ec%o" !

>>$ia:($ia:(3)) % 3a%"iA $ia:onal con la $ia:onal $e 3. 6a sen%encia $ia:(3) $a % el !ec%o" 9o"&a$o po" la $ia:onal $e la &a%"iA 3 ans 1 0 0 5 0 0 = 0 0 '

>>$ia:(ones(1+4)+1)+$ia:(ones(1+4)+(1) % 3a%"iA %"i$ia:onal 5x5 con 0 en la $ia:onal % p"incipal y 1 en la s # y s pe"$ia:onal ans 0 1 1 0 0 1 0 0 0 0 = 0 1 0 1 0

0 0 1 0 1

0 0 0 1 0

>>%"il(3) % 3a%"iA 9o"&a$a po" la pa"%e %"ian: la" in9e"io" $e 3. ans =

1 0 0 4 5 0 7 - ' >>%"i (3) % 3a%"iA 9o"&a$a po" la pa"%e %"ian: la" s pe"io" $e 3. ans 1 2 0 5 0 0 = 3 6 '

6olver al ndice )eneral

%as funciones matemticas elementales estn definidas de forma (ue se pueden aplicar sobre arrays' El resultado es el array formado por la aplicaci,n de la funci,n a cada elemento del array' As/
>>lo:(!) ans = 0 0.6'31 1.0'-6 >>p=(0>0.1>1)*pi % ;ec%o" $e9ini$o co&o el p"o$ c%o $e escala" p = Bol &ns 1 %h"o :h 7 0 0.3142 0.62-3 0.'425 1.2566 1.570- 1.--50 Bol &ns - %h"o :h 11 2.1''1 2.5133 2.-274 3.1416 >>x=sin(p) n !ec%o" po" n

x = Bol &ns 1 %h"o :h 7 0 0.30'0 0.5-7- 0.-0'0 0.'511 1.0000 0.'511 Bol &ns - %h"o :h 11 0.-0'0 0.5-7- 0.30'0 0.0000

%as operaciones +abituales entre arrays *suma, resta y producto escalar de vectores3 suma, resta, producto y potencia de matrices- se representan con los operadores +abituales/
>>!+< ! 1 < 4 = 2 3 = 5 6 % L"o$ c%o escala" (p"o$ c%o $e &a%"ices 1x3 po" 3x1) % Keco"$a&os los !alo"es $e ! y <

>>A=!*<F A = 32 >>M=<F*! M 4 5 6 = - 12 10 15 12 1-

% L"o$ c%o $e &a%"ices 3x1 po" 1x3 = 3a%"iA 3x3

>>!*<

% 6os !ec%o"es ! y < no se p e$en & l%iplica"

NNN G""o" sin: ==> * Inne" &a%"ix $i&ensions & s% a:"ee. >>&a% &a% 1 2 4 5 0 0 = 3 6 1 % 3a%"iA &a% ele!a$a al c a$"a$o % Keco"$a&os el !alo" $e la &a%"iA &a%

>>&a%O2 ans = ' 12 124 33 40 0 1

$ambin pueden efectuarse multiplicaciones, divisiones y potencias de arrays, entendindolas como elemento a elemento *como, de +ec+o, se reali"an la suma y la resta-' El operador utili"ado para ellas es el +abitual precedido por un punto3 es decir/
>>!.*< % ;ec%o" 9o"&a$o po" los p"o$ c%os $e las "espec%i!as coo"$ena$as> % ans(i)=!(i)*<(i) ans = 4 10 1>><./! % ;ec%o" 9o"&a$o po" el cocien%e $e ca$a coo"$ena$a $e < en%"e la % coo"$ena$a co""espon$ien%e $e !> ans(i)=<(i)/!(i)

ans = 4.0000 2.5000 2.0000 >>&a%.O2 % 3a%"iA c yos ele&en%os son los $e &a% ele!a$os % al c a$"a$o> ans(i+8)=&a%(i+8)O2 ans = 1 4 ' 16 25 36 0 0 1

?inalmente, pueden calcularse determinantes/


>>$e%(&a%) ans = (3

y resolverse sistemas de ecuaciones lineales con el verstil comando P/


>>&a%P!F ans = 2.6667 (5.3333 3.000

6olver al ndice )eneral

$ambin e4isten variables l,)icas (ue toman los valores ; *falso- o = *verdadero- ' 8or e#emplo/
>>a#s(!)>=2 % ;ec%o" l*:ico c yas coo"$ena$as !alen 1 si la coo"$ena$a % co""espon$ien%e $e ! es >= 2 y 0 si no lo es

ans = 0 1 1 >>!ec%o"=!(a#s(!)>=2) % ;ec%o" 9o"&a$o po" la coo"$ena$as $e ! 0 e % !e"i9ican la $esi: al$a$ !ec%o" = 2 3 >>!2=D3 2 1E !2 = 3 2 1 >>lo:ica=!==!2 % 4si:naci*n $e n !alo" l*:ico (el $o#le si:no i: al es el % i: al l*:ico)

lo:ica = 0 1 0 >>lo:ic2=!Q=!2 lo:ic2 = 1 0 1 % Jis%in%o (Q es el ope"a$o" $e ne:aci*n)

6olver al ndice )eneral

9e puede traba#ar con polinomios/ basta tener en cuenta (ue un polinomio no es ms (ue un vector' El orden de los coeficientes es de mayor a menor )rado, por e#emplo/
>>p=D1 0 2 0 3E p = 1 0 2 0 3 >>0=D2 1 0E 0 = 2 1 0 % Lolino&io 2*xO2+x % Lolino&io xO4+2*xO2+3

MA$%A& tiene funciones especficas para polinomios como/


>>poly!al(p+(1) ans = 6 >>p"o=con!(p+0) p"o = 2 1 4 2 6 3 0 >>$econ!(p"o+p) ans = 2 1 0 >>"oo%s(p"o) ans = 0 0.6050+1.16--i 0.6050(1.16--i (0.6050+1.16--i (0.6050(1.16--i % KaRces $el polino&io p"o % Bocien%e en%"e p"o y p; o#!ia&en%e el "es l%a$o es 0 % L"o$ c%o $e los polino&ios p y 0 % G!al aci*n $el polino&io xO4+2xO2+3 en x=(1

(0.5000 >>poly(Di (i 1/2 piE) % Lolino&io &*nico 0 e %iene po" "aRces a los % n,&e"os i+ (i+ 0.5 y pi

ans = 1.0000 (3.6416 2.570- (3.6416 1.570-

6olver al ndice )eneral

Dentro del m,dulo *toolbox- de matemtica simb,lica, se utili"a el pro)rama de clculo simb,lico MA8%E' !on estas +erramientas, se puede traba#ar con funciones,
>>9=Fsin(x)F 9 = sin(x) % ) nci*n sin(x) $e9ini$a &e$ian%e na ca$ena $e ca"ac%e"es

calcular derivadas,
>>$i99(sy&(9)) ans = cos(x) >>$i99(sy&(9)+2) ans = (sin(x) % Je"i!a$a se: n$a $e 9

o encontrar primitivas'

>>in%(sy&(Flo:(x)F)) % L"i&i%i!a $e la 9 nci*n lo:a"i%&o ans = x*lo:(x)(x >>$i99(sy&(Fx*lo:(x)(xF)) % Bo&p"o#aci*n ans = lo:(x)

6olver al ndice )eneral

MA$%A& tiene un )ran potencial de +erramientas )rficas' 9e pueden dibu#ar los valores de un vector frente a otro *de la misma lon)itud-/
>>x=pi*((1>0.1>1); >>y=x.*sin(x); >>plo%(x+y) % Lo" $e9ec%o poli:onal

ne los p n%os (x(i)+y(i)) &e$ian%e

na

!omo se ve, con pocos puntos la )rfica tiene un aspecto demasiado lineal a tro"os' 8ara @en)a:ar@ al o#o, basta tomar ms puntos'
>>x=pi*((1>0.01>1); >>y=x.*sin(x); >>plo%(x+y)

$ambin pueden dibu#arse funciones' As/


>>9plo%(Fsin(x)F+D0 2*piE) in%e"!alo D0+2*piE % Ji# 8a la 9 nci*n seno en el

>>hol$ on an%e"io"es >>9plo%(Fcos(x)F+D0 2*piE) 9 nci*n cos(x)

% 3an%iene en la !en%ana :"/9ica los $i# 8os

% Ji# 8a so#"e la :"/9ica an%e"io" la

>>hol$ o99 an%e"io"es

% Bon es%o ol!i$a los $i# 8os % y $i# 8a en na !en%ana n e!a

>>9plo%(FxO2*sin(1/x)F+D(0.05 0.05E)

% Ji# 8a la 9 nci*n xO2*sin(1/x)

$ambin puede usarse el verstil comando eAplo% *se lee como easy plot- (ue permite dibu#ar funciones,
>>eAplo%(Fexp(x)F) a la 9 nci*n % Ji# 8a la 9 nci*n exponencial en n in%e"!alo a$ec a$o

curvas en paramtricas,
>>eAplo%(Fsin(%)F+Fcos(%)F+D0 piE)

e implcitas
>>eAplo%(FxO2 ( yO2 ( 1F)

$ambin permite dibu#ar superficies' %a forma ms sencilla es mediante el comando eAs "9+
>>eAs "9(Fsin(x*y)F+D(2 2 (2 2E)

aun(ue se pueden reali"ar )rficas ms sofisticadas/


>>%=0>0.001>0.00'; >>!='00>1025; >>D5 ;E=&esh:"i$(%+!); >>a x1=16*piO2*(5.O2).*((;('1-).O2).*((;(1011).O2); >>a x2=a x1+(2*;(1'2').O2; >><=5./a x2; >>A=35000000*<; >>s "9l(%+!+A); % Gs%e co&an$o $i# 8a la s pe"9icie c"ea$a &e$ian%e las >>sha$in: in%e"p; % o"$enes an%e"io"es. 6os si: ien%es si"!en pa"a &o$i9ica" >>colo"&ap(pinS); % el $i# 8o o#%eni$o >>"o%a%e3$; % @i"!e pa"a :i"a" la 9i: "a &e$ian%e el "a%*n

6olver al ndice )eneral 8ara escribir un pro)rama con MA$%A& +abr (ue crear un fic+ero (ue ten)a e4tensi,n .& y conten)a las instrucciones' Esto se puede +acer con cual(uier editor de te4tos, pero tiene al)unas venta#as usar el editor propio de MA$%A& llamado &e$i%' MA$%A& traba#a con memoria dinmica, por lo (ue no es necesario declarar las variables (ue se van a usar' 8or esta misma ra",n, +abr (ue tener especial cuidado y cerciorarse de (ue entre las variables del espacio de traba#o no +ay nin)una (ue se llame i)ual (ue las de nuestro pro)rama *proveniente, por e#emplo, de un pro)rama previamente e#ecutado en la misma sesi,n-, por(ue esto podra provocar conflictos' A menudo, es conveniente reservar memoria para las variables *por e#emplo, si se van a utili"ar matrices muy )randes-3 para ello, basta con asi)narles cual(uier valor' Del mismo modo, si se est usando muc+a memoria, puede ser conveniente liberar parte de ella borrando *clea"- variables (ue no se vayan a usar ms' n pro)rama escrito en MA$%A& admite la mayora de las estructuras de

pro)ramaci,n al uso y su sinta4is es bastante estndar' En los si)uientes e#emplos se muestra la sinta4is de al)unas de estas estructuras * i9, 9o", <hile,'''-' Ejemplo 1: !alcular la suma de los n primeros trminos de la sucesi,n =, <4, >4A<, B4A>, '''
n=inp %(FTB /n%os %2"&inos 0 ie"es s &a"N x=inp %(FJa&e el !alo" $el n &e"o x F); s &a=1; 9o" i=2>n s &a=s &a+i*xO(i(1); en$ $isp(FGl !alo" pe$i$o esF) $isp(s &a) F);

Ejemplo 2: Decidir si un n0mero natural es primo'


n=inp %(F?,&e"o na% "al 0 e $eseas sa#e" si es p"i&o F); i=2; p"i&o=1; <hile iU=s0"%(n) i9 "e&(n+i)==0 % Kes%o $e $i!i$i" n en%"e i p"i&o=0; #"eaS en$ i=i+1; en$ i9 p"i&o $isp(FGl n,&e"o $a$o es p"i&o.F) else $isp(FGl n,&e"o $a$o no es p"i&o.F) $isp(FJe hecho+ es $i!isi#le po">F) $isp(i) en$

Ejemplo 3: Escribir un n0mero natural en una base dada *menor (ue die"-'
n=inp %(FJa&e el n,&e"o 0 e 0 ie"es ca&#ia" $e #ase F); #ase=inp %(FTGn 0 2 #ase 0 ie"es exp"esa"loN F); i=1; <hile n>0 c(i)="e&(n+#ase); n=9ix(n/#ase); % La"%e en%e"a $e n/#ase i=i+1; en$ $isp(F6a exp"esi*n en la #ase $a$a es>F) i=i(1;

$isp(c(i>(1>1))

8or 0ltimo, tambin pueden pro)ramarse funciones' %a primera instrucci,n de un fic+ero (ue conten)a una funci,n de nombre 9 n debe ser/
9 nc%ion Da": &en%os $e sali$aE=9 n(a": &en%os $e en%"a$a)

Es conveniente (ue el fic+ero (ue conten)a la funci,n se llame como ella3 as, la funci,n anterior debera )uardarse en el fic+ero 9 n.&3 por e#emplo, si se desea pro)ramar una funci,n (ue calcule, mediante el al)oritmo de Euclides, el m4imo com0n divisor de dos n0meros naturales, basta escribir un fic+ero e cli$es.& cuyo contenido sea/
9 nc%ion &=e cli$es(a+#) % B/lc lo $el &/xi&o co&,n $i!iso" $e $os n,&e"os na% "ales % &e$ian%e el al:o"i%&o $e G cli$es i9 aU# c=#; #=a; a=c; en$ <hile #>0 c="e&(a+#); a=#; #=c; en$ &=a;

9i, una ve" escrito el fic+ero anterior, en el espacio de traba#o o en un pro)rama se escribe la instrucci,n
&c$=e cli$es(33+121)

en la variable &c$ se almacenar el valor ==' %as variables de una funci,n son siempre locales' 8or tanto, aun(ue en el seno de la funci,n se modifi(uen los ar)umentos de entrada, el valor de las variables correspondientes (ueda inalterado' 8or e#emplo, en la funci,n e cli$es.& se modifica el valor de los ar)umentos de entrada, pero, sin embar)o/
>>x=15; >>&c$=e cli$es(x+3); >>x

x = 15

You might also like