Sei sulla pagina 1di 29

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

PARTE V: INTRODUCCIN al MatLab


0. Dnde est el MatLab? Empezando 1. Introduccin. Nmeros. Operaciones con nmeros. 2. Variables. Funciones. 3. Representacin grfica. 4. Integrales definidas y otras cosas. 5. Matrices. Operaciones. 6. Sistemas de ecuaciones.

0. Dnde est el MatLab? Empezando


Lo normal es que este programa no se encuentre en el software de nuestros ordenadores. Pero eso no ser problema, ya que podemos acceder a l desde campus virtual. Para ello, a) Entramos en campus virtual b) En el men de la izquierda seleccionamos Recursos de Aprendizaje c) Seleccionamos entre las opciones que nos salen Aula Virtual y le damos a Acceder d) En la mitad izquierda de la pantalla aparecen unos programas con los que podremos trabajar como si estuvieran instalados en nuestro ordenador. Uno de ellos es MatLab R2008a. Pulsando sobre ese icono ya entramos en la aplicacin. e) Antes de acceder por primera vez a la aplicacin tenis que descargar un software cliente. Se puede hacer desde la pgina en la que estamos, en la media pantalla de la derecha. Os saldr un archivo llamado ica32web, que tendris que instalar (puede que sea un poco lento, pero creo que ser slo la primera vez que se use) f) Una vez instalado esto, pinchis en el icono

os bajar un fichero llamado launch.ica, lo abrs, le permits Full Acces y ya estis dentro de MatLab. Os aparecer una pantalla del siguiente estilo:
Professor: Josep E. Peris Ferrando

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

No hagis caso de los Warnings (avisos). Esta operacin podemos hacerla en cualquier aula de libre acceso de la universidad, o desde casa, o en ambos sitios. Lo que sea ms cmodo y/o conveniente.

1. Introduccin. Nmeros. Operaciones con nmeros.


MatLab es un sistema interactivo que sirve para resolucin de clculos numricos en aplicaciones matemticas, estadsticas, de ingeniera, de finanzas... Cuando entramos en MatLab, siempre nos encontraremos con el smbolo: >> y ah podremos empezar a definir/introducir nuestros datos. Las cuatro operaciones bsicas (suma, resta, producto y divisin: +, -, *, / ) las podemos introducir directamente (mejor desde el teclado numrico) y tras pulsar la tecla Intro, el programa nos dar la solucin. Por ejemplo, si introducimos >> (3*7)/(5.5*8) al pulsar Intro veremos: ans = 0.4773 >> y se queda esperando a la siguiente operacin. Notad que el decimal se pone con el punto (.) del teclado numrico, y no con una coma, arriba o abajo. Se pueden anidar operaciones, usando tantos parntesis como nos hagan falta. Cuidado con ponerlos bien. Si queremos calcular:

Professor: Josep E. Peris Ferrando

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

3 7+5 1 + 48 + 4 2

escribiremos lo siguiente: >> (((7+(3/5))/2)+4)*(8+(1/4)) y al pulsar el Intro obtendremos: ans = 64.3500 NOTA: la expresin anterior se podra escribir con menos parntesis, pero ms vale que os sobren a que os falten. Ejercicio: Calcula usando MatLab
7 3 1 3 1 4 2+ 3

Te da el siguiente resultado? Si no es as, revisa las operaciones que has introducido. ans = -0.2500 Tambin se pueden usar letras para guardar un valor numrico, o una expresin como las anteriores, que ser utilizado con posterioridad. Por ejemplo, si escribimos: >> a = 2 al pulsar Intro nos dar como respuesta: a= 2 y ahora cada vez que escribamos a tomar el valor de 2 (hasta que cambiemos, si queremos, el valor de a). Si despus de escribir a = 2 ponemos un punto y coma (;), guardar igualmente dicho valor, pero no nos dar respuesta al pulsar Intro y esperar a que le demos la siguiente instruccin. Por ejemplo: >> b = 36/15; >>

Professor: Josep E. Peris Ferrando

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

ha guardado el valor de b. Si queremos saber cunto vale, basta que escribamos b y pulsemos el Intro. Obtendremos lo siguiente: >> b b= 2.4000 Si ahora queremos, podemos usar el valor de b, y el de a, para calcular otras expresiones. Podemos, por ejemplo, multiplicar a*b (que valdr 4.8, recuerda que a = 2, b = 2.4) escribiendo >> a*b y, al pulsar Intro obtenemos: ans = 4.8000 Se puede usar cualquier letra para guardar un dato, pero es conveniente ser ordenado (para no borrar un dato anterior). Una buena idea puede ser seguir el orden del abecedario (no uses ll, ). Cuando lleguemos a las variables (siguiente seccin) all tenderemos a usar t, u, v, x, y, z, Tambin se pueden usar combinaciones de letras, o palabras, para guardar valores. Pero intentad buscar lo ms sencillo. Si, por ejemplo, guardamos el 3 en la palabra armario: >> armario = 3; cada vez que lo necesite tendr que teclear toda la palabra armario (lo cual es incomodo): >> 2*armario ans = 6 Hay algunas letras (o combinaciones de letras) que estn reservadas, pero normalmente no las usaremos. Hay una que puede ser til: mirad que pasa si escribs pi y pulsis Intro: >> pi ans = 3.1416 Una buena opcin, para ser ordenado, es llamar a los nmeros que introducimos (o a las variables) con una letra y nmeros consecutivos para no borrar los anteriores. Por ejemplo: a1, a2, a3, a4, ; x1, x2, x3, ; y1, y2,
Professor: Josep E. Peris Ferrando

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

La siguiente operacin es la potencia (por ejemplo, para calcular 38 ). Esta operacin viene representada por el acento circunflejo (^) : si escribimos >> 3^8 (NOTA: no vers el ^ en pantalla hasta que no pulses el 8)

al dar al Intro obtenemos la respuesta: ans = 6561 luego ya sabemos que 38 = 6561 . De esta manera podemos calcular el valor de cualquier nmero elevado a cualquier otro. En particular, nos permite calcular races ya que, como sabemos, escribimos: >> 28^(1/2) ans = 5.2915 Con la misma tcnica podemos calcular races cbicas, cuartas, etc. Para la raz cuadrada tambin podemos usar directamente sqrt: >> sqrt(28) ans = 5.2915 Si queremos calcular >> 8^(3/5) y, al pulsar Intro nos dar: ans = 3.4822 Otras funciones que pueden ser interesantes (por orden alfabtico):
o abs o atan o cos o exp
5 3

x = x . Por ejemplo, para calcular

1 2

28 = (28)

1 2

83 = 8 5 escribiremos

calcula el valor absoluto calcula el arco-tangente calcula el coseno (el arco hay que darlo en radianes, no grados) calcula la exponencial exp(3) = e3 si ponemos exp(1) nos da el valor del nmero e >> exp(1) ans =

Professor: Josep E. Peris Ferrando

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

2.7183
o factorial calcula el factorial de un nmero natural: factorial(5) = 5! o log o max o min o sin o tan

calcula el logaritmo neperiano calcula el mximo de los nmeros que pongamos calcula el mnimo de los nmeros que pongamos calcula el seno calcula la tangente

Vamos a combinar algunas de ellas para calcular el valor de la siguiente expresin:


A = e2 sen(5) 8 ln(0'5) + 31.6 Escribiremos en MatLab: >> A=exp(-2)*sin(5)-sqrt(8)*log(0.5)+3^1.6; Como hemos puesto un punto y coma, no vemos ningn resultado. Sin ms que teclear A, y pulsar Intro obtenemos su valor, que ha quedado guardado con este nombre y podremos utilizar ms tarde si nos hace falta >> A A= 7.6303 Si escribimos, >> factorial(5) y pulsamos Intro, nos da el valor de 5! = 5 4 321 ans = 120 Una funcin especial de MatLab que nos puede ser til es roots. Esta funcin calcula las races de un polinomio, pero hay que escribirla de una forma un poco especial. Si tenemos el polinomio x 2 1 lo primero que hemos de hacer es escribir los coeficientes (sin las x) entre corchetes, lo que nos quedara

[1,0, 1] (1: coeficiente de

x 2 , 0: coeficiente de x, 1: coeficiente independiente).

Ahora escribimos en MatLab:


Professor: Josep E. Peris Ferrando

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

>> roots([1,0,-1]) y al pulsar el Intro obtenemos la respuesta (que ya conocemos): ans = -1.0000 1.0000 Otro ejemplo: clculo de las races del polinomio x3 + 4x 2 + x 6 : >> roots([1,4,1,-6]) ans = -3.0000 -2.0000 1.0000 Calculad aplicando Ruffini las races de este polinomio para comprobar que MatLab lo ha hecho bien (seguro que s).
NOTA: en vez de comas se pueden dejar espacios en blanco. Por ejemplo

>> roots([1 10 32 38 15]) ans = -5.0000 -3.0000 -1.0000 -1.0000 que nos dice que las races del polinomio x 4 + 10x3 + 32x2 + 38x + 15 son -5, -3, -1, -1.

NOTA: El uso de los cursores (flechas)


Pulsando la tecla

del teclado, vamos recuperando las sentencias

(instrucciones) que hemos ido introduciendo: desde la ltima, hasta la primera de todas, en este orden, pulsando sucesivas veces. Esto nos permite recordar nmeros (o variables) guardados, operaciones que hemos hecho (al pulsar Intro volver a hacerlas), etc. Si hemos guardado nuestras constantes con los nombres a1, a2, a3, si ahora escribimos >> a
Professor: Josep E. Peris Ferrando

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

y pulsamos al cursor , nos recuperar todas las sentencias que empiecen con la letra a, tambin en orden inverso a como las hemos introducido (desde la ltima a la primera). Una vez llegados a la que nos interesa (por ejemplo a7) ahora podemos modificarla antes de darle al Intro (por si nos hemos equivocado, o queremos cambiar el valor de un dato y variable). Por ejemplo, tenamos: >> a7= 4^(1/3) a7 = 1.59 (y hemos calculado la raz cbica de 4). Si ahora queremos calcular la raz cbica de -20, en vez de volver a teclear todos los datos, le damos al cursor y recuperamos la sentencia: >> a7= 4^(1/3) ahora, antes de darle al Intro la modificamos (movindonos con el cursor o

) y la cambiamos a:
>> a8= -20^(1/3) Al pulsar Intro obtenemos la respuesta: a8 = -2.71 Si queris borrar todos los datos (para empezar de nuevo, porque os habis equivocado, ) basta que seleccionis Edit en el men superior y pulsis en Clear Command History (os pedir confirmacin; si no es necesario no borris los datos)

NOTA: La precisin (cuntos decimales queremos)


El nmero de cifras decimales con las que trabajar MatLab depende de la versin que usis. Por ejemplo, puede ocurrir que cuando escribimos >> 2/3 ans = 0.67 veamos que trabaja con dos cifras decimales (redondeando el segundo decimal:
2 = 0.6666666666666... ) En ocasiones esto ir bien. Pero es mejor usar ms 3
Professor: Josep E. Peris Ferrando

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

cifras decimales. Por ejemplo, podemos acordar en trabajar con 4 cifras decimales. Para ello, escribiremos >> format('short') y pulsaremos Intro. Ahora obtenemos >> 2/3 ans = 0.6667 Si queremos trabajar con ms cifras decimales, escribiremos >> format('long') y obtenemos 15 decimales >> 2/3 ans = 0.666666666666667 Otra opcin es trabajar con fracciones (til para la solucin de sistemas de ecuaciones que veremos ms adelante). Por ejemplo, para calcular las races de un polinomio, si escribimos >> roots([1 -3 -6]) si estamos trabajando con format('short') nos devuelve la respuesta: ans = 4.3723 -1.3723 Si introducimos la siguiente sentencia, trabajar con fracciones y al volver a pedir lo mismo nos dar el resultado en fracciones: >> format('rat') >> roots([1 -3 -6]) ans = 1609/368 -505/368

Professor: Josep E. Peris Ferrando

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

2. Variables. Funciones.
Antes de poder calcular y representar una funcin, debemos aprender a introducir las variables. Para ello, elegimos el nombre de la variable (x, por ejemplo), decidimos un rango, o intervalo, de valores (entre -5 y 5, por ejemplo) y decidimos un incremento de x, es decir de cuanto en cuanto contamos desde -5 hasta 5. Normalmente ser un nmero pequeo (0.1, 0.01), pero podemos elegir incrementos ms grandes. Si, por ejemplo, elegimos un incremento de 1, lo que decimos es que vamos a contar de 1 en 1 desde -5 hasta 5. Esto lo escribiremos separando los datos por dos puntos (:) del siguiente modo: >> x=-5:1:5 x= -5 escribiremos >> x=-5:1:5; Si ahora elegimos un incremento menor, >> x=-5:0.1:5; contamos de 0.1 en 0.1; es decir, tendramos los valores de x: -5, -4.9, -4.8, -4.7, -4.6, (si no ponemos el punto y coma (;), se nos llenar la pantalla de nmeros: haced la prueba) Fijmonos que lo que estamos haciendo es coger unos determinados valores de la variable (no todos, pero al hacer el incremento muy pequeo estamos eligiendo valores muy cercanos unos de otros). Pregunta: cuntos valores de x consideramos al definir la variable del siguiente modo? >> x=-5:0.01:5; Ahora que ya tenemos la variable, definimos la funcin de manera parecida a como antes calculbamos con los nmeros. Por ejemplo (importante poner siempre el punto y coma): >> z=sin(x); >> y=exp(x); >> u=log(x+10); para que sea positivo el nmero y poder calcular el logaritmo sumo 10
Professor: Josep E. Peris Ferrando

[valor inicial: incremento: valor final;]

si damos al Intro nos saldrn todos los nmeros -4 -3 -2 -1 0 1 2 3 4 5

por eso es importante que pongamos un punto y coma despus. As,

10

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

En realidad, MatLab guarda los datos como vectores. Si escribimos >> x=-5:0.1:5; >> y=exp(x); tenemos guardados dos vectores x, y con 101 nmeros (componentes) cada uno de ellos.
CUIDADO:

Cuando ahora vayamos a definir funciones, hay que llevar cuidado con las operaciones bsicas producto (*), cociente (/) y potencia (^): estas ahora se pondrn con un punto previo: .* ./ .^ Para la suma y la resta no hay que poner el punto delante. Por ejemplo, para la funcin (polinomio) x3 + 4x 2 + x 6 escribimos: >> y=x.^3+4.*x.^2+x-6; (un fallo muy comn es escribir 4x, sin poner el smbolo de multiplicacin: nos dar un error) Para la funcin x+3 x2 1 escribiremos >> y=(x+3)./(x.^2-1); Si todava estamos en el intervalo desde -5 a 5, al pulsar Intro MatLab nos indicar la siguiente advertencia: Warning: Divide by zero. >> ya que cuando x = 1, x = -1, el denominador vale 0.
NOTA: en algunas versiones de MatLab no sale este aviso.

3. Representacin grfica.
Para representar grficamente una funcin (una vez la hemos definido) la instruccin es plot (dibujar, en ingls). Vamos a ir vindolo con un ejemplo que conocemos: la parbola y = x 2 .
Professor: Josep E. Peris Ferrando

11

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

1) definimos un intervalo de x, y los incrementos >> x=-5:0.1:5; 2) definimos la funcin >> parabola=x.^2; 3) ahora le decimos que dibuje los datos calculados >> plot(x,parabola); y nos aparece (en otra ventana) la siguiente figura:

En la parte superior izquierda tenemos el men que nos va a permitir mejorar y guardar la figura actual. Aqu est una ampliacin de dicho men:

NOTAS:

1. El llamar a la funcin parabola (no se ponen acentos) resulta incmodo ya que hay que teclear ms letras. Hubiera sido mejor poner >> y=x.^2; >> plot(x,y); 2. Ya podemos guardar esta figura, entrando en el desplegable File, seleccionando en Save As una carpeta donde guardarla, un Nombre (ahora s que podemos llamarla parbola, para luego saber cul es la grfica que tenemos guardada) y el Tipo: JPEG image es una buena eleccin. Si hacemos
Professor: Josep E. Peris Ferrando

12

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

esto, tendremos la siguiente figura guardada:

3. Si ahora definimos otra funcin en MatLab y le pedimos que la dibuje, borrar esta y har la nueva (aunque le hayamos puesto un nombre distinto: z, exponencial, tortuga, ) Si queremos que nos dibuje dos funciones (o ms) juntas, debemos escribir: hold on. As dibujar tantas como le digamos sin borrar las anteriores. Para desactivar esta opcin, escribiremos hold off. Por ejemplo: >> hold on >> z=sqrt(abs(x)); >> plot(x,z) Nos habr dibujado, junto a la parbola, la funcin que calcula la raz cuadrada del valor absoluto de x (entre -5, 5 ya que no hemos modificado el intervalo). Una vez guardada (con otro nombre) tendremos

Professor: Josep E. Peris Ferrando

13

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

Si queremos que ya no dibuje ms encima, escribiremos >> hold off Si tenemos una grfica y queremos ahora que nos dibuje otra en una nueva ventana, sin perder la que tenamos, escribiremos en MatLab la sentencia figure: >> figure y esto podemos hacerlo tantas veces como queramos, abriendo sucesivas ventanas. Vamos ahora a pedirle que dibuje la grfica del polinomio que habamos introducido antes: >> y=x.^3+4.*x.^2+x-6; >> plot(x,y) Si lo guardamos en un fichero, tendremos la siguiente grfica:

Vamos ahora a mejorar el aspecto de nuestra grfica, para lo que nos fijaremos de nuevo en la tabla de herramientas:

Pulsando con el ratn en la flecha, ahora el cursor nos permite situarnos encima de la curva, encima de los ejes, seleccionando lo que nos interese pulsando sobre ello. Por ejemplo, si hacemos doble-clic sobre la curva veremos:
Professor: Josep E. Peris Ferrando

14

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

Ampliando la parte inferior, vemos que nos permite cambiar la lnea (Line), poniendo puntos, ; permite cambiar el grosor de la lnea (en vez de 0.5, probad a poner 3); y el color (cambiamos a rojo)

Realizando estos cambios, nos quedara la grfica:

Professor: Josep E. Peris Ferrando

15

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

Tambin permite cambiar el tipo de dibujo (Plot Type): si seleccionamos Area tendremos la siguiente grfica:

En Plot Type volvemos a seleccionar lnea (Line) para regresar a la versin anterior. Si ahora hacemos clic sobre el fondo, estamos seleccionando los ejes (en el cuadro aparecern unos pequeos cuadrados siguiente men en la parte inferior: ) y nos va a dar el

Professor: Josep E. Peris Ferrando

16

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

Marcando el Grid, en X y en Y, nos saldr una cuadrcula. En los lmites de X podemos quedarnos slo con un trozo del intervalo (lo que nos dar una ampliacin de ese trozo). Con el grid queda bastante ms claro por donde pasa la grfica. Tambin podemos ponerle un ttulo a esta grfica; por ejemplo se puede llamar polinomio1. Para eso, escribimos polinomio1 en la ventana donde pone Title.

NOTA: Si al hacer doble-clic no nos aparece el men inferior (esto depende de

la versin de MatLab con la que trabajemos) se puede acceder a l desde Edit (men en la parte superior), eligiendo Figure Properties o Axes Properties. Por ltimo (se pueden hacer muchas ms cosas, pero nos vamos a quedar aqu) tambin se pueden dibujar puntos sueltos que nos interesen. Para ello se usa la funcin scatter. Vamos a poner varios puntos en la grfica anterior. Por ejemplo el (-4,50), el (0,100) y el (3,0). Para que no se borre la curva que ya tenemos, primero se pone hold on (si no recordamos si lo hemos puesto, no pasa nada por volver a ponerlo) y escribiramos: >> hold on >> scatter(-4,50) >> scatter(0,100) >> scatter(3,0) Ponindonos sobre cada punto, le podemos cambiar la forma (crculo, cuadrado, estrella, ) darle color de fondo, etc. Nos podra quedar esta grfica:
Professor: Josep E. Peris Ferrando

17

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

NOTA: Los puntos pueden ponerse todos a la vez, separando las primeras

coordenadas de las segundas: >> scatter([-4 0 3],[50 100 0]) Si nos fijamos en la ltima grfica, entre -3 y -2 parece que la funcin es constante (vale siempre cero) Vamos a ampliar un trozo, y para ello nos quedaremos con el intervalo desde -4 hasta 1. Eso lo haremos seleccionando los ejes (clic en el fondo) y en la pestaa de X Axis, ponemos en X Limits: -4 en un extremo y 1 en el otro. El cambio no se ver directamente, slo ser efectivo cuando vayamos a otro sitio. Seleccionamos la pestaa Y Axis, y ponemos -10 a 5 (mirando la grfica vemos entre qu valores est la Y, elegimos dos para que no se salga) La grfica que nos queda es la siguiente, que vemos claramente que no es constante:

NOTA: En Tools (men superior) tambin tenemos un zoom, pero no siempre

es fcil de manejar.
Professor: Josep E. Peris Ferrando

18

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

4. Integrales definidas y otras cosas.


Otra de las utilidades (fciles de manejar) es el clculo de integrales definidas

f(x)dx

MatLab calcula este valor de forma aproximada (para calcular una primitiva y aplicar la regla de Barrow, ver la pgina http://www.wolframalpha.com/input/?
(hay que poner integrate y, entre parntesis la funcin que se quiere integrar; tambin se puede usar para derivar).

El proceso para obtener el valor de una integral definida (que, en su caso, representar un rea) es el siguiente:
o primero hay que definir la variable en el intervalo de integracin, o uno

mayor, con la siguiente sentencia f=@(x)(funcin que se desea integrar)


o ahora usamos la funcin de MatLab que se llama quad

quad(f,a,b)
o al pulsar Intro nos devuelve el valor de esta integral (un nmero)

Ejemplo: >> x=-10:0.001:10; >> f=@(x)(x.^2); >> quad(f,0,2) ans = 2.6667 Ha calculado:
2

x3 8 x dx = = 0 = 2.6667 0 3 0 3
2 2

Ejercicio: calcula la siguiente integral

2x dx = x +4
2

te da el siguiente resultado? (fjate que le he puesto la instruccin para que d el resultado con muchas cifras decimales) ans = 0.693147129539388

Professor: Josep E. Peris Ferrando

19

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

5. Matrices. Operaciones.
El primer paso para trabajar con matrices es introducir la matriz como dato. Para ello se usan los corchetes. La forma es: [primera fila ; segunda fila; tercera fila ; ; ltima fila] Por ejemplo, para introducir la matriz 1 2 0 A = 1 1 3 5 0 8 escribiremos: >> A=[1 2 0;-1 1 3;5 0 8] A= 1 -1 5 2 1 0 0 3 8

(Los elementos de cada fila tambin se pueden poner separados por comas) Para sumar, restar o multiplicar matrices (cuando se puedan hacer estas operaciones) basta poner los smbolos, respectivamente, +, -, * (NOTA: ahora sin el punto previo) Por ejemplo, si ponemos >> B=[2 1 1;0 2 5]; y escribimos >> A+B ya sabemos que no se pueden sumar. La respuesta (de error) que nos da es: ??? Error using ==> plus Matrix dimensions must agree Sin embargo, >> B*A ans = 6 23 >> A*B ??? Error using ==> mtimes Inner matrix dimensions must agree
Professor: Josep E. Peris Ferrando

5 2

11 46

En el otro sentido, A*B, no se puede hacer. Nos dar el mensaje de error:

20

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

Cuando tenemos matrices cuadradas (como A) podemos calcular la traza, el determinante y la inversa (si existe). Estas funciones son:
o trace(A) o det(A) o inv(A)

En el ejemplo: >> trace(A) ans = 10 >> det(A) ans = 54 >> inv(A) ans = 0.1481 -0.2963 0.4259 -0.0926 0.1852 0.1111 0.0556 0.1481 -0.0556

Si pretendemos que calcule la inversa de una matriz que no tiene inversa, nos da los siguientes mensajes de error: >> det(B) ??? Error using ==> det Matrix must be square O, si una matriz cuadrada tiene determinante igual a cero (y, por tanto, no posee inversa), nos dice lo siguiente: >> C=[1 1 1;1 1 1;1 1 1] C= 1 1 1 >> inv(C) Warning: Matrix is singular to working precision
Professor: Josep E. Peris Ferrando

1 1 1

1 1 1

21

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

ans = Inf Inf Inf Inf Inf Inf Inf Inf Inf
NOTA: para la inversa, en vez de la funcin inv(A), podemos escribir tambin

>> A^-1 Otro clculo que podemos hacer con MatLab es el de la transpuesta de una matriz. Para ello, se utiliza la coma superior (). Por ejemplo: >> A' ans = 1 2 0 >> B' ans = 2 1 1 0 2 5 -1 1 3 5 0 8

o, con la matriz no cuadrada B,

Finalmente, tambin podemos multiplicar una matriz por un nmero, elevar una matriz cuadrada a una potencia, y combinar varias de estas operaciones: >> A^3-5*C+8*A ans = 28 136 390 13 55 28 232 95 601

NOTA: observa que tampoco ponemos un punto antes de la potencia; si lo

pusiramos, o lo pusiramos en el producto, MatLab no nos dara un error, pero estara calculando una cosa totalmente distinta a lo que hemos definido como producto de matrices: estara multiplicando componente a componente. Por ejemplo, si tenemos las matrices:
Professor: Josep E. Peris Ferrando

22

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

>> a1=[1 2;3 4] a1 = 1 3 a2 = 1 1 >> a1.*a2 ans = 1 3 >> a1.^2 ans = 1 9 4 16 2 4 1 1 2 4

>> a2=[1 1;1 1]

al escribir la multiplicacin con el punto (.*) tenemos

o, a escribir la potencia con el punto (.^)

Estas operaciones (.*, .^) aunque vlidas en MatLab no nos interesarn. Cuidado con no confundirse y usarlas para hacer un producto y potencia. Con matrices, el concepto de cuadrado de la matriz a1 sera el siguiente: >> a1^2 ans = 7 15 10 22

y, como se observa, el resultado es totalmente distinto. Lo mismo pasa con el producto de las matrices a1 y a2: >> a1*a2 ans = 3 7 3 7

Professor: Josep E. Peris Ferrando

23

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

NOTA: algunas matrices especiales

En MatLab hay algunas matrices predefinidas que pueden ser de utilidad. Una de ellas es la matriz identidad. sta se obtiene con la sentencia eye(n), donde n es el nmero de filas y columnas (el orden) que se quiere. Por ejemplo: >> eye(2) ans = 1 0 >> eye(4) ans = 1 0 0 0 1 0 0 0 1 0 0 0 0 1

Otra matriz es la que tiene unos en todas sus componentes. sta se obtiene con ones(n). As, >> ones(3) ans = 1 1 1 Si ponemos >> ones(3,1) ans = 1 1 1 Y podemos definir una matriz de unos del orden que queramos. Por ejemplo ones(3,6) nos dar una matriz toda de unos con 3 filas y 6 columnas. Si la matriz que queremos es cuadrada, slo es necesario dar el nmero de filas, aunque no pasa nada si ponemos ones(3,3). Totalmente anloga es la sentencia zeros: nos dar una matriz toda de ceros del orden que se le indique. Por ejemplo >> zeros(3);
Professor: Josep E. Peris Ferrando

1 1 1

1 1 1

>> zeros(3,1);

>> zeros(2,4);
24

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

6. Sistemas de ecuaciones.
Dado un sistema de ecuaciones Ax = b , con igual nmero de ecuaciones que de incgnitas, compatible determinado, la instruccin en MatLab para que lo resuelva es: >> x=pinv(A)*b Primero introduciremos la matriz A (en el ejemplo que hay a continuacin es la misma que tenamos) y luego el vector b. Un vector no es ms que una matriz con n filas y una columna (en este caso tres filas y una columna). Lo podemos introducir de dos maneras alternativas. Por ejemplo con el vector b todo de unos: >> b=[1;1;1]; (hemos introducido tres filas, separadas por (;) punto y coma); pero tambin podramos introducir el vector en fila y luego transponerlo: >> b=[1 1 1]'; Nos ahorramos los (;). Tambin podramos haber escrito >> b=ones(3,1); En cualquier caso, ahora escribimos >> x=pinv(A)*b y, al pulsar Intro nos da la solucin (nica) en forma del vector x x= -1/27 14/27 4/27
NOTA: Estamos con format(rat) y por eso la solucin nos la da en forma de

fracciones. Con los otros formatos que hemos visto, nos dara decimales. Es ms exacto darlo en forma de fracciones, as no usamos aproximaciones decimales. Para comprobar que lo hemos hecho bien, comprobamos si se cumple el sistema, esto es si Ax = b . Escribimos >> A*x y nos da la respuesta

Professor: Josep E. Peris Ferrando

25

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

ans = 1 1 1 Luego tenemos bien resuelto este sistema. Pero esto slo nos sirve para sistemas de este tipo. As que previamente lo que tenemos que ver es el tipo de sistema que tenemos. Antes de pasar al caso general, veamos ahora otro ejemplo muy sencillo que podemos resolver previamente: x1 + x 2 = 3 x1 x 2 = 1 SOLUCIN : x1 = 2; x2 = 1

Con MatLab hacemos lo siguiente: >> A=[1 1;1 -1]; >> b=[3 1]'; >> x=pinv(A)*b >> x=pinv(a)*b x= 2 1
CASO GENERAL: 1. Estudio del sistema

Dado el sistema Mx = b de m ecuaciones con n incgnitas (da igual si la matriz es cuadrada o no, o si tiene ms incnitas que ecuaciones que menos), sabemos que es compatible si Rango(M) = rango([M,b]) Pues esto mismo es lo primero que hemos de hacer con MatLab, usando la funcin rank. Una vez introducidas una matriz A y un vector b, escribiremos >> rank(M) >> rank([M,b]) y compararemos los resultados. Si:

Professor: Josep E. Peris Ferrando

26

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

o son iguales, e igual al nmero de incgnitas, sistema compatible

determinado (solucin nica)


o son iguales, pero menor al nmero de incgnitas, sistema compatible

indeterminado (infinitas soluciones)


o son distintos, sistema incompatible (no hay solucin)

Por ejemplo, si ponemos >> M = [1 4;2 5;3 6] M= 1 2 3 >> b = [1 2 4] b= 1 2 4 >> rank(M) ans = 2 >> rank([M,b]) ans = 3 Luego el sistema es incompatible: no tiene solucin.
2. Resolucin de sistemas compatibles

4 5 6

Una vez averiguado cmo es el sistema, ahora pasamos a resolverlo (cuando tiene solucin):
o si el sistema es compatible determinado, la solucin nica la obtenemos

introduciendo la sentencia: >> x=pinv(M)*b


o si el sistema es compatible indeterminado, obtenemos una solucin con

la misma instruccin, >> xp=pinv(M)*b


Professor: Josep E. Peris Ferrando

27

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

y obtenemos el resto de soluciones calculando el subespacio nulo de M con la sentencia >> z=null(M,'r') Esta sentencia nos dar una serie de vectores columna z1, z2, Entonces la solucin general (las infinitas soluciones) vendrn dadas por la expresin: x = xp + 1 z1 + 2 z2 + ... Con algunos ejemplos nos quedar ms claro. Ejemplo 1:
x1 3x2 = 1 2x1 + x 2 = 3 3x1 2x2 = 4 Introducimos en MatLab la matriz y el vector: >> M=[1 -3;2 1;3 -2]; >> b=[1 3 4]'; >> rank(M) ans = 2 >> rank([M b]) ans = 2 (luego el sistema es compatible determinado) >> x=pinv(M)*b x= 10/7 1/7 Por tanto, la solucin nica es:

x1 =

10 7

x2 =

1 7

Professor: Josep E. Peris Ferrando

28

MATEMTIQUES I

ADE/DADE/TADE/ECO

2010-11

Ejemplo 2: x1 + x 2 + x 3 = 1 2x1 x2 + x3 = 2 Introducimos datos en MatLab: >> M=[1 1 1;2 -1 1]; >> b=[1 -2]'; >> rank(M) ans = 2 >> rank([M b]) ans = 2 Luego el sistema es compatible indeterminado (infinitas soluciones): >> xp=pinv(M)*b xp = -3/7 9/7 1/7 >> z=null(M,'r') z= -2/3 -1/3 1 Solucin:
x1 3 / 7 2 / 3 + 1 / 3 x2 = 9 / 7 1 x 1/7 3

Professor: Josep E. Peris Ferrando

29

Potrebbero piacerti anche