programaciÓ en matlab sessió pràctica 1 · 2012-07-24 · programació en matlab sessió...

11
Programació en Matlab Sessió Pràctica 1 1 PROGRAMACIÓ EN MATLAB Sessió pràctica 1 Objectius Aquesta sessió pràctica té dos objectius. D'una banda, es presentaran les característiques principals de l'entorn que proporciona Matlab. D'altra banda, es veuran les bases del llenguatge de programació d'aquest programa. MATLAB MATLAB és un programa que permet realitzar càlculs d’una forma ràpida i fiable. A diferència de programes com el Maple o el Mathematica, Matlab no és un manipulador algebraic i només pot operar amb variables reals i complexes. Matlab és el nom abreviat de ‘MATrix LABoratory’. Tal i com el seu nom indica, és un programa pensat per a treballar amb matrius de manera que permet implementar còmodament i ràpidament qualsevol algoritme que les utilitzi. Descripció de l'entorn Matlab En arrencar Matlab s'obre una finestra similar a la mostrada a la Figura 1. Fig. 1: Finestra inicial de Matlab. Es poden distingir tres pantalles que engloben els quatre entorns de treball de Matlab següents: Command Window: és la part on s'executen les comandes. El símbol >> indica que el programa està preparat per rebre instruccions.

Upload: others

Post on 14-Mar-2020

28 views

Category:

Documents


0 download

TRANSCRIPT

Programació en Matlab Sessió Pràctica 1 1

PROGRAMACIÓ EN MATLAB Sessió pràctica 1

Objectius Aquesta sessió pràctica té dos objectius. D'una banda, es presentaran les característiques principals de l'entorn que proporciona Matlab. D'altra banda, es veuran les bases del llenguatge de programació d'aquest programa. MATLAB MATLAB és un programa que permet realitzar càlculs d’una forma ràpida i fiable. A diferència de programes com el Maple o el Mathematica, Matlab no és un manipulador algebraic i només pot operar amb variables reals i complexes. Matlab és el nom abreviat de ‘MATrix LABoratory’. Tal i com el seu nom indica, és un programa pensat per a treballar amb matrius de manera que permet implementar còmodament i ràpidament qualsevol algoritme que les utilitzi. Descripció de l'entorn Matlab En arrencar Matlab s'obre una finestra similar a la mostrada a la Figura 1.

Fig. 1: Finestra inicial de Matlab. Es poden distingir tres pantalles que engloben els quatre entorns de treball de Matlab següents:

• Command Window: és la part on s'executen les comandes. El símbol >> indica que el programa està preparat per rebre instruccions.

Programació en Matlab Sessió Pràctica 1 2

• Current Directory: és la finestra on es mostren els arxius del directori

que es té actiu. • Workspace: mostra les variables que s'han definit i el seu valor. • Command History: mostra les últimes comandes executades a la

Command Window. Una cosa important a l’hora de començar a treballar amb Matlab, és modificar el directori de treball Current Directory de manera que en aquest directori hi tinguem tots els fitxers que utilitzarem. És útil saber que dins de l'entorn Current Directory podem utilitzar el botó dret del ratolí per a crear carpetes. A més, podem esborrar i crear fitxers com en qualsevol carpeta de l'ordinador. Exercici: Genereu un nou directori de nom introduccio_matlab i feu que aquest nou directori sigui el directori de treball de Matlab. Com a la majoria d'aplicacions de Windows, a la part superior de la finestra de Matlab apareixen diverses pestanyes. Entre elles, cal destacar:

• Desktop: dóna accés a diferents mòduls de Matlab que es poden tenir instal·lats. De la mateixa manera que accionant el botó Start que es troba a l'extrem inferior esquerre.

• Help: Matlab disposa d'un Help molt potent i útil. A la pestanya del Help es

poden trobar, entre altres, les següents opcions: Matlab Help: Anant a l'apartat de cerca (Search), es pot trobar

com implementar qualsevol instrucció. Demos: Dóna accés a alguns exemples resolts amb Matlab. About Matlab: Proporciona la informació del programa que es té

instal·lat. Per a sortir de Matlab es pot utilitzar l'opció Exit Matlab del menú File o bé escriure directament en la línia de comandes la instrucció quit. També l'accés ràpid Ctrl+Q ens permet sortir de Matlab. Finalment, si volem parar l'execució d'un càlcul, cal que ens posem sobre la Command Window i premem les tecles d'accés ràpid Ctrl+C. Aquesta opció ocasiona, en la majoria dels casos, que s'interrompi el procés actual i que ens aparegui de nou el prompt (símbol >>). Per conèixer millor com funciona el Help de Matlab o altres aspectes sobre l'entorn de treball podeu consultar el llibre “Aprenda Matlab 7.0 como si estuviera en primero”.

Programació en Matlab Sessió Pràctica 1 3

Operacions bàsiques Encara que el programa està pensat per treballar amb vectors i matrius, també es pot utilitzar com un llenguatge de programació escalar. Les operacions algebraiques s'executaran segons la següent prioritat:

1. potències: ^ 2. productes i divisions d'esquerra a dreta: *, / 3. sumes i restes d'esquerra a dreta: +, -

Aquesta prioritat es pot alterar mitjançant la utilització de parèntesis. Exemple 1: » 2+3*2 ans = 8 Exemple 2: » (2+3)*2 ans = 10 Exemple 3: » (2/3^2*5)*(3-4^3)^2 ans = 4.1344e+003 Exercici: Realitzeu el següent càlcul

utilitzant el mínim nombre de parèntesis possible. És usual quan es treballa amb Matlab voler tornar a executar o modificar una comanda introduïda anteriorment. Això es pot fer de manera ràpida utilitzant qualsevol de les dues opcions següents:

• Command History: podem seleccionar la comanda que volem executar i/o modificar. Per executar-la de nou només cal fer doble clic sobre ella. Mitjançant el botó dret del ratolí podem també copiar-la i enganxar-la de nou per a poder-la modificar.

• Tecles ↑ i ↓ del teclat: si es premen les tecles ↑ i ↓ sobre la línia de

comandes (>>) Matlab ens va mostrant les comandes que hem executat anteriorment.

Exercici: Realitzeu el següent càlcul

aprofitant l'exercici anterior. Es pot canviar el format d'escriptura dels resultats numèrics mostrats al Command Window. La manera usual de fer aquesta modificació és mitjançant les comandes format short i format long que s'utilitzen directament des de la línia de comandes i que permeten ensenyar els nombres amb 4 o 15 decimals

Programació en Matlab Sessió Pràctica 1 4

respectivament. Alternativament, també es pot canviar el format de visualització dels resultats mitjançant l'opció Preferences del menú File, anant a l'apartat Command Window i modificant el format numèric, Numeric Format. Les opcions short i long són equivalents a format short i format long respectivament. Exercici: Mostreu el resultat de l'últim exercici amb 15 decimals. Assignació de variables Quan interessa guardar un valor o el resultat d'una operació per poder utilitzar-lo posteriorment, aquests s'assignen a una variable. La instrucció bàsica en Matlab és

variable = expressió; El ";" al final de la sentència serveix únicament per suprimir la resposta per pantalla. Exemple 4: » x=3.4; » y=2.7; » z=x+y z = 6.1000 Quan definim una variable, aquesta ens apareix al Workspace. En aquest entorn, podem mirar el valor de la variable i també podem esborrar-les, reanomenar-les, canviar el seu valor... Quan s'escriu directament l'expressió, el resultat s'emmagatzema en una variable anomenada ans. Com a nom de les diferents variables es pot utilitzar qualsevol seqüència de caràcters alfanumèrics sempre que comencin per una lletra. Matlab utilitza els primers 31 caràcters del nom de la variable i distingeix entre majúscules i minúscules. Hi ha alguns noms especials que convé no utilitzar perquè corresponen a valors ja definits en el programa (eps, pi, realmax, realmin...). La instrucció who proporciona un llistat de les variables que s'estan utilitzant, i per saber l'espai que ocupen en memòria cadascuna d'aquestes variables es té la instrucció whos. Finalment, la instrucció clear seguida del nom d'una variable esborrarà el seu contingut i si s'executa únicament clear o bé clear all s'esborraran totes les variables. Funcions de Matlab Matlab disposa de diverses funcions que ja estan programades i es poden utilitzar. Exemple 5: » a=sqrt(4) a = 2 » b=log(a)

Programació en Matlab Sessió Pràctica 1 5

b = 0.6931 Encara que al Help de Matlab es poden consultar totes les funcions disponibles, presentem aquí algunes de les més freqüentment utilitzades en l'àrea de matemàtiques: abs valor absolut d'un nombre real o mòdul d'un nombre complex acos, asin, atan inversa del sinus, cosinus i tangent ceil arrodoneix al següent enter cos, sin, tan cosinus, sinus i tangent d'una angle expressat en radians exp exponencial floor arrodoneix a l'enter anterior gcd màxim comú divisor lcm mínim comú múltiple log, log2, log10 logaritme natural, en base 2 i en base 10 rem residu d'una divisió sqrt arrel quadrada Veure les referències [1], [2] i [3] per obtenir una llista detallada de les funcions disponibles a Matlab. A més, la comanda @ ens permet definir funcions senzilles que podrem avaluar de forma ràpida. En el següent exemple es defineix la funció f(x) = x2+8 i s'avalua en els punts 0 i 1. » f = @(x) x^2 + 8; » f(0) ans = 8 » f(1) ans = 9 Exercici: Definiu la funció següent funció

i avalueu-la en el punts 0 i 1. Vectors Com ja s'ha comentat, Matlab permet treballar còmodament amb vectors i matrius. Un dels avantatges que té Matlab a l’hora de treballar amb vectors i matrius és que per a definir-los no cal qui li diguem per avançat quina mida han de tenir. Això és un gran avantatge, ja que podem anar modificant-ne la mida a mesura que anem calculant. En aquest apartat veurem com es defineixen els vectors en Matlab i quines operacions es poden efectuar amb ells. Exemple 6: Per a definir un vector fila s’escriuen les seves components entre claudàtors, separades per comes o per espais en blanc.

Programació en Matlab Sessió Pràctica 1 6

» x=[1 2 5 -2 6] x = 1 2 5 -2 6 » x=[1,2,5,-2,6] x = 1 2 5 -2 6 » y=[-5:5] y = -5 -4 -3 -2 -1 0 1 2 3 4 5 » z=[0:0.5:2] z = 0 0.5000 1.0000 1.5000 2.0000 Exemple 7: Per a definir un vector columna s’escriuen les seves components entre claudàtors, separades per punts i coma o mitjançant salts de línia. » x=[2 3 -1 7] x = 2 3 -1 7 » y=[1;3;6;-9;0] y = 1 3 6 -9 0 Exemple 8: La comanda ' ens permet transposar vectors. » x=[1 2 5 -2 6]; » y=x' y = 1 2 5 -2 6 És important ressaltar que algunes operacions amb vectors poden canviar de significat segons estan definits aquests vectors. Exemple 9: Multiplicar un vector fila per un vector columna dóna com a resultat un escalar (producte escalar estàndard entre dos vectors). » x=[1 2 5 -2 6]; » y=[3;5;1;-2;0]; » x*y ans = 22

Programació en Matlab Sessió Pràctica 1 7

Exemple 10: Multiplicar un vector columna per un vector fila dóna com a resultat una matriu (en aquest cas el producte és el producte estàndard entre dues matrius). » y*x ans = 3 6 15 -6 18 5 10 25 -10 30 1 2 5 -2 6 -2 -4 -10 4 -12 0 0 0 0 0 A més de les operacions algebraiques, Matlab proporciona algunes operacions amb vectors component a component: Exemple 11: Per elevar al quadrat tots els components d'un vector utilitzem un punt davant del símbol ^ » y=[3;5;1;-2;0]; » y.^2 ans = 9 25 1 4 0 Exemple 12: Per multiplicar dos vectors component a component utilitzem un punt davant del símbol * » x=[1 2 3]; » y=[4 5 6]; » x.*y ans = 4 10 18 Exemple 14: Matlab ofereix un operador per transposar vectors. Concretament, en el següent exemple el vector x' és un vector columna de tres files. » x=[1 2 3]; » x'; ans = 1 2 3 Finalment, si apliquem una de les funcions internes de Matlab a un vector, automàticament aquesta s’aplica sobre totes les components del mateix. De la mateixa manera, també podem aplicar una funció definida per l’usuari a un vector, però cal recordar que les operacions que defineixin la funció han de poder ser aplicades a un vector. Exercici: Calculeu el valor de la funció

en els punts [100,98,96,...,2,0].

Programació en Matlab Sessió Pràctica 1 8

Per ampliar tota aquesta informació, consultar [2]. Gràfics 2D bàsics A continuació s'analitzaran alguns exemples de gràfics en 2D. Observeu que cal definir dos vectors. En el primer es guarden les abscisses dels punts i en el segon s'emmagatzemen les seves ordenades. Exemple 15: » x=linspace(0, 4*pi, 50); » y=sin(x)-cos(x); » plot (x,y); Observeu que s'ha definit el vector de les x mitjançant la funció linspace, obtenint així un vector de punts equiespaiats entre 0 i , prenent 50 passos. A més, per calcular la funció f(x)=sin(x)-cos(x) s'utilitzen les funcions sin i cos que proporciona Matlab. Aquestes funcions prenen com a argument un vector i tornen com a resultat un altre vector. Per tant, el vector y conté les imatges dels punts emmagatzemats en el vector x. Exemple 16: » x=-3 : 0.1: 3; » y=exp(-x.^2); » plot (x,y);

Programació en Matlab Sessió Pràctica 1 9

En aquest cas el vector de les 'x' s'ha definit mitjançant l'operador ":". Concretament, s'ha definit com un vector tal que la primera component val -3, l'última component val 3 i les components intermèdies s'incrementen de 0.1 a 0.1. Observeu que per calcular la funció f(x)=e-x2 s'ha utilitzat l'operador '.^' per fer el producte, component a component, del vector de les 'x'. Per a més informació de les opcions de representació en 2D, consultar el Help de Matlab o la bibliografia recomanada. Observacions i comentaris Els missatges d'error que el programa presenta quan s'ha implementat una operació incorrecta solen ser de gran ajuda. Per això és important llegir-los i interpretar-los correctament. Com a exemple, es mostren algun dels errors més freqüents:

• Error: ")" expected, "end of line" found. No tenim els parèntesis ben tancats. Matlab avisa de que ha trobat el final de la línia quan esperava trobar un parèntesi )

• Error: Missing operator, comma, or semicolon.

Error: Falta algun operador, coma o dos punts. Hi ha algun error en l’escriptura.

• ??? Error using ==> ^

Matrix must be square. Error a l’utilitzar l’operador ^. La matriu ha de ser quadrada. L'operador potència només es pot aplicar a escalars o matrius quadrades. Error que surt generalment quan es vol calcular una potència de tots els elements d'un vector i no hem posat .^ sinó només ^

• ??? Error using ==> *

Inner matrix dimensions must agree. Error freqüent a l'operar amb matrius/vectors. Probablement, estem intentant multiplicar dos vectors o matrius i les seves dimensions no concorden.

Bibliografia [1] “Aprenda Matlab 7.0 como si estuviera en primero” J. García Jalón, J.I. Rodríguez

i A. Brazález (www.tayuda.com) [2] “Introducción al Matlab”. Laboratori de Càlcul Numèric. UPC. [3] “Matlab Primer”. Kermit Sigmon. University of Florida.

http://math.ucsd.edu/~driver/21d-s99/matlab-primer.html [4] Ajuda on-line del programa Matlab a www.mathworks.com

Programació en Matlab Sessió Pràctica 1 10

Exercicis de coneixements bàsics - Bare Essentials • Comprovar utilitzant Matlab que els vectors a = (1, 3, 2) i b = (2, 0, -1) són

ortogonals. • Realitzeu l'exercici anterior mitjançant la comanda dot. Consulteu el Help de

Matlab aquesta instrucció per saber-la utilitzar. • Representar la funció

en l'interval [0,1].

Exercicis d'ampliació dels coneixements bàsics - An Expanded Core of Knowledge • Consultar al Help la instrucció plot. Concretament consultar com es modifica el

color o la trama d'una corba (opció 'LineSpec'). En particular, representar la funció

en l'interval [0,1] com es veu en la següent figura.

• Donat un vector fila x de longitud 100 es vol calcular la suma de totes les seves

components. Es vol realitzar aquesta suma en Matlab sense utilitzar cap bucle for i utilitzant només una línia de Matlab. Buscar a l'ajuda de la comanda ones com generar un vector columna ple d'uns i utilitzar aquest vector i el producte escalar entre vectors per a realitzar aquesta suma. Aplicar el procediment obtingut al vector x = (1, 2, 3, ... , 99, 100) i comprovar que el resultat obtingut és correcte.

• Llegir de l'apartat 2.2 fins al 2.6 (ambdós inclosos) de la referència [1]. Exercicis d'aprofundiment - Developing Mastery

Programació en Matlab Sessió Pràctica 1 11

• Mitjançant la definició d'un vector, adequadament escollit, i consultant l'ajuda de la comanda sum, realitzar el següent càlcul en una sola línia de codi

• Consultant l'ajuda de la comanda polar, realitzar les següents figures

tenint en compte que l'expressió de la corba de la dreta en polars és

• Consultant l'ajuda de la comanda diary, aprendre a guardar totes les comandes utilitzades en una sessió de Matlab.