Está en la página 1de 22

7.

2 SECCION

MATLAB y algebra lineal 781

7.2 MATLAB y algebra lineal


M ATLAB es un potente paquete computacional interactivo que trabaja sobre arreglos matriciales direc tamente; de hecho sus siglas signican Matrix Laboratory. Esta es la principal ventaja que tiene este sistema, pues le permite resolver muchos problemas t ecnicos computacionales en una fracci on del tiempo que se necesitar a para escribir un programa en un lenguaje como C o FORTRAN. Las capacidades de nicamente con arreglos matriciales. M ATLAB es un lenguaje este paquete van m as all a de trabajar u de alto rendimiento que integra computaci on, visualizaci on y programaci on en un ambiente amigable que utiliza la notaci on matem atica como base. Entre las muchas aplicaciones que tiene M ATLAB est an el desarrollo de algoritmos, modelaci on, simulaci on, an alisis de datos, gr acas, matem aticas y compu reas, M ATLAB ha desarrollado las llamadas taci on. Para resolver necesidades espec cas en diversas a toolboxes; que son conjuntos de herramientas disenados convenientemente para satisfacer esas necesidades. Las versiones para estudiantes por lo general incluyen tres toolboxes: Signal Processing Toolbox, ltima es una caja de herramientas que permite Control System Toolbox y Symbolic Math Toolbox. Esta u realizar matem aticas en forma simb olica. El espacio que ocupa en la memoria de una computadora es relativamente pequeno en comparaci on con otros paquetes y su precio comercial es m as econ omico. La programaci on en M ATLAB es muy sencilla y una enorme ventaja es la interface gr aca que con ella puede utilizarse. Estas bondades y las cajas de herramientas han hecho de M ATLAB un paquete de gran uso en ingenier a y ciencias. Adem as de las versiones para estudiantes, tambi en existen las versiones profesionales que, como es natural, son m as poderosas (y m as caras); en este texto utilizaremos una nicamente lo que concierne a la parte de a lgebra lineal en un versi on para estudiantes y trataremos u contexto muy b asico.

con MATLAB y almacenamiento de informacion 7.2.1 Interaccion


Una vez que se ha instalado una de las versiones del paquete en la computadora y se ha activado el mismo, la computadora desplegar a (si el sistema operativo trabaja sobre Windows) una ventana como la que se muestra en la gura 7.40 (<Student Edition> M ATLAB Command Window). Este es el medio con el cual el usuario interact ua con M ATLAB; las instrucciones que a trav es del teclado se escriban aparecer an despu es de EDU en esa ventana. De esta manera, si se escribe con el teclado el n umero 3 y se oprime la tecla ENTER (INTRO) de la computadora: EDU 3 ans = 3 EDU

Figura 7-40

la computadora habr a almacenado el valor 3 con la etiqueta (nombre) ans; que es el nombre que por defecto asigna M ATLAB a ese objeto. Esto signica que si en lugar de ello se hace

Page (PS/TeX): 4 / 781, COMPOSITE

TULO 7 782 CAPI

a Uso de tecnolog

EDU a=5 a = 5 EDU en la memoria de la calculadora habr a quedado almacenado el valor 5 con el nombre a. Este valor quedar a todo el tiempo con esa etiqueta asignada hasta que el usuario le reasigne un nuevo valor a dicha etiqueta. Pero, si se desactiva M ATLAB (escribiendo en la ventana la palabra exit y oprimiendo despu es la tecla ENTER, o simplemente cerrando la ventana de comandos de M ATLAB), entonces todos los objetos almacenados quedar an borrados de la memoria y, cuando nuevamente el usuario utilice M ATLAB, ya no podr a hacer uso de ellos. Sin embargo, con la instrucci on save, se pueden almacenar permanentemente los objetos en la memoria de la computadora y, con la instrucci on load, podr a cargarlos otra vez para utilizarlos. La sintaxis para cada uno de estos comandos es:
save nombre del objeto load nombre del objeto

Supongamos, por ejemplo, que vamos a cerrar M ATLAB y deseamos almacenar el objeto a; escribimos en la ventana de M ATLAB y despu es oprimimos la tecla ENTER de la computadora: EDU save a EDU Si salimos del paquete y despu es escribimos las instrucciones EDU load a EDU la variable a volver a a cargarse para utilizarla nuevamente. on s olo si despu es de escribirla en su ventana se opri Nota 7.5 1. M ATLAB ejecuta una instrucci me la tecla ENTER. Ya no haremos expl cito este detalle de aqu en adelante. 2. Est a permitido usar cualquier car acter alfanum erico, incluso el gui on bajo, para nombrar objetos en M ATLAB (sin dejar espacios en blanco). usculas y min usculas; por ejemplo, las etiquetas meNor 3. La sintaxis de M ATLAB es sensible a may y menor son distintas en este programa. Podemos saber las variables (objetos) que tenemos almacenadas en cada sesi on utilizando el comando who: EDU who Your variables are: a EDU y ver las variables que tenemos permanentemente almacenadas con el comando what:

Page (PS/TeX): 1 / 782, COMPOSITE

7.2 SECCION

MATLAB y algebra lineal 783

EDU what MAT-files in the current directory C:\MATLAB\BIN\libro a EDU El paquete indica el directorio donde est a almacenada la variable a directorio en curso donde se debe estar trabajando para poder tener acceso a esa variable, en nuestro caso C:\MATLAB\BIN\libro . De no ser as , se debe cambiar de directorio desde la ventana de M ATLAB (consulte la gu a del usuario). nicamente se pueLas instrucciones que se den a M ATLAB en una sesi on no se pueden almacenar, u den guardar objetos num ericos y algebraicos. Para ver las variables que se encuentran en el directorio en curso se escribe el comando dir. Para borrar una variable se utiliza la instrucci on delete seguida (con un espacio) del nombre del archivo; as , delete a.mat borrar a de la memoria el objeto a. nicamente para registrar por escrito, o en forma Existen formas de almacenar ya sea en forma de texto, u de gui on, para ejecutar y modicar cuantas veces sea necesario un conjunto de instrucciones. La primera es la instrucci on con sintaxis diary nombre de archivo con extensi on txt y la segunda es utilizando un archivo m que veremos m as adelante.

Uso del punto y coma para evitar despliegue de informacion


til en la sintaxis de M ATLAB. Para cerrar este apartado es conveniente se! nalar una caracter stica muy u Cuando se escribe un punto y coma despu es de una instrucci on, el programa la ejecuta, pero no la ste es evidentemente un rasgo muy u til de M ATLAB cuando no se desea visualizar en despliega; e la pantalla informaci on innecesaria. EDU valor_de_X=3.1618; EDU

7.2.2 Escritura de matrices y operaciones basicas


Para escribir una matriz, se encierran entre par entesis rectangulares las componentes de la matriz separadas por un espacio cada una (o por una coma) y las las en distintas l neas o separadas por el car acter punto y coma EDU A=[ 1 -2 3 2 1 1 -1 1 0] A = 1 -2 3 2 1 1 -1 1 0 EDU EDU A=[1,2,3;2,1,1;-1,1,1] A = 1 2 3 2 1 1 -1 1 1 EDU

Page (PS/TeX): 2 / 783, COMPOSITE

TULO 7 784 CAPI

a Uso de tecnolog

Las operaciones b asicas en M ATLAB utilizan la notaci on usual de una calculadora:


+ para la suma a+b.

- para la diferencia a-b. / para la divisi on a/b. * para el producto a*b.

sqrt para la ra z cuadrada sqrt(a) =


b

a.

para elevar a una potencia a b = a .

\ para la divisi on a\b = b/a.

EDU -3+5 ans = 2 EDU 4*sqrt(2) ans = 5.6569 EDU 4/2 ans = 2 EDU 4\2 ans = 0.5000 EDU 2 (1.8) ans = 3.4822 EDU A=[1 -1 2; -2 1 3]; B=[0 1 -1; 1 2 1]; EDU C=[-1 1 3; 2 2 1; -3 2 1]; EDU 3*A-2*B ans = 3 -5 8 -8 -1 7 EDU A*C ans = -9 3 4 -5 6 -2 EDU C 2 ans = -6 7 1 -1 8 9 4 3 -6 EDU D=3*C 3;E=(A-2*B)*D E = 381 -291 -48 -54 -423 21 EDU Una caracter stica muy importante de M ATLAB es que no se requiere declarar el tipo de variables con las que se trabaja; as , se puede hacer c alculos con n umeros reales y complejos en el mismo ambiente sin hacer ning un cambio o declaraci on inicial.

Page (PS/TeX): 3 / 784, COMPOSITE

7.2 SECCION

MATLAB y algebra lineal 785

EDU (3 2-25) (1/2) ans = 0.0000+ 4.0000i EDU

7.2.3 Formatos y modo simbolico


M ATLAB tiene distintos formatos para desplegar informaci on num erica. Algunos son:
format short e: cinco d gitos m as exponente; por ejemplo, 3.5833+e01.

format long: 16 d gitos.

format bank: 2 d gitos decimales; por ejemplo 12.45.

format long e: 16 d gitos m as exponente.

format rat: aproximaci on racional; por ejemplo 13/125.

format o format short: el formato que por defecto tiene M ATLAB y que es con el que se hicieron los c alculos del apartado precedente.

EDU 1/3 ans = 0.3333 EDU format short e EDU 1/3 ans = 3.3333e-001 EDU format rat EDU 4/128 ans = 1/32 EDU format long EDU 1/3 ans = 0.33333333333333 EDU format EDU 4/128 ans = 0.0312 EDU Las versiones para estudiantes de M ATLAB contienen el toolbox de matem atica simb olica. Para hacer operaciones en modo simb olico, requerimos declarar las literales que se van a utilizar con el comando syms, separando cada literal con un espacio en blanco: EDU syms x EDU J=[x x 2 -x 2*x]

Page (PS/TeX): 4 / 785, COMPOSITE

TULO 7 786 CAPI

a Uso de tecnolog

J = [ x, x2] [ -x, 2*x] EDU J2 ans = [ x2-x3, 3*x3] [ -3*x2, -x3+4*x2] EDU El comando sym transforma una expresi on al modo simb olico y todo lo que se opere con ella estar a en modo simb olico. Para ilustrarlo, emplearemos la matriz A que tenemos almacenada en la memoria. EDU S=sym(A) S = [ 1, -1, 2] [ -2, 1, 3] EDU sqrt(2)*S ans = [ 2(1/2), [ -2*2(1/2), EDU

-2(1/2), 2(1/2),

2*2(1/2)] 3*2(1/2)]

En ocasiones es dif cil leer las expresiones en este modo, se puede utilizar un comando que ayuda un poco a visualizar mejor la informaci on desplegada; el comando pretty: EDU pretty(ans) [ 1/2 [ 2 [ [ 1/2 [-2 2 EDU 1/2 -2 1/2 2 1/2] 2 2 ] ] 1/2] 3 2 ]

basica de matrices 7.2.4 Matrices especiales, informacion y edicion


Matrices especiales
Para no tener que escribir una matriz como la matriz cero o la matriz identidad, M ATLAB tiene algunos comandos disenados para este prop osito, algunos son:
Matriz cero de orden m n: zeros(m,n). Matriz de unos: ones(m,n)

Matriz identidad de orden n: eyes(n).

Page (PS/TeX): 5 / 786, COMPOSITE

7.2 SECCION

MATLAB y algebra lineal 787

EDU zeros(2,3) ans = 0 0 0 0 EDU eyes(3) ans = 1 0 0 1 0 0 EDU ones(3,2) ans = 1 1 1 EDU 1 1 1 0 0

0 0 1

basica de matrices Informacion y edicion


El comando size sirve para conocer el tamano de una matriz; mientras que el comando length se utiliza para conocer el n umero de componentes de un vector. EDU M=[1 -1 2; 2 1 1]; u=[1;2;3;4]; v=[1,-1,2,0,1]; EDU size(M) ans = 2 3 EDU size(u) ans = 4 1 EDU size(v) ans = 1 5 EDU length(u) ans = 4 EDU length(v) ans = 5 EDU Si se ha etiquetado una matriz con el nombre M, entonces se tienen los siguientes comandos para visualizar componentes, las y columnas de esta matriz:
M(i,j): despliega la informaci on que contiene la componente que se encuentra en la la i y en la columna j de la matriz M. M(i,:) despliega la la i de la matriz M. M(:,j) despliega la columna j de la matriz M.

Page (PS/TeX): 6 / 787, COMPOSITE

TULO 7 788 CAPI

a Uso de tecnolog

EDU M=[-1 2 3 4 -1 1 2 3 0 1 1 1] M = -1 2 -1 1 0 1 EDU M(2,3) ans = 2 EDU M(3,:) ans = 0 1 EDU M(:,4) ans = 4 3 1 EDU Por supuesto, se puede editar una entrada o una columna o una la de la matriz M con estas instrucciones. EDU M(1,2)=-5 M = -1 -5 -1 1 0 1 EDU M(2,:)=[-1 M = -1 -1 0 EDU -5 0 1 3 1 1 4 1 1 3 4 2 3 1 1 0 1 1] 1 1 3 2 1 4 3 1

til en la edici Un detalle que puede resultar u on de matrices, es que en M ATLAB es muy simple adjuntar una matriz a otra para ampliar la primera. Utilizando la matriz M que ya tenemos escrita, vamos a ampliarla con la matriz M2 que tenemos que escribir en la ventana de M ATLAB. EDU M2=[ -3 1 2 2 0 1] M2 = -3 2 0 1 2 1

Page (PS/TeX): 7 / 788, COMPOSITE

7.2 SECCION

MATLAB y algebra lineal 789

EDU K=[M M2] K = -1 -1 0 -5 1 1 3 2 1 4 3 1 -3 2 0 1 2 1

con MATLAB 7.2.5 Operaciones de renglon


Con los comandos descritos antes se puede llevar a cabo operaciones de rengl on para encontrar, por ejemplo, una forma escalonada equivalente. EDU M(1,:)=-1*M(1,:) M = 1 5 -3 -4 -1 0 1 1 0 1 1 1 EDU M(2,:)=M(1,:)+M(2,:) M = 1 5 -3 -4 0 5 -2 -3 0 1 1 1 EDU M(3,:)=M(2,:)-5*M(3,:) M = 1 0 0 EDU El intercambio de las es un poco m as laborioso: EDU M1=[1 5 -3 -4 0 5 -2 -3 0 1 1 1] M1 = 1 5 -3 -4 0 5 -2 -3 0 1 1 1 EDU I=M1(2,:);J=M1(3,:); EDU M1(2,:)=J; M1(3,:)=I M1 = 1 0 0 EDU 5 1 5 -3 1 -2 -4 1 -3 5 5 0 -3 -2 -7 -4 -3 -8

Page (PS/TeX): 8 / 789, COMPOSITE

TULO 7 790 CAPI

a Uso de tecnolog

M as adelante veremos c omo es posible hacer las operaciones de rengl on en forma m as simple programando una funci on en M ATLAB. Nota 7.6 Con las teclas direccionales de la computadora es posible volver a colocar informaci on en on hacia arriba se obtiene la informaci on la pantalla de M ATLAB sin tener que teclearla; con la de direcci precedente en forma sucesiva y, con la tecla de direcci on hacia abajo, la informaci on posterior. Este til para repetir y editar instrucciones sin tener que escribirlas por completo. detalle resulta muy u

en MATLAB y operaciones de renglon 7.2.6 Funciones programadas por el usuario, programacion


En M ATLAB es posible que el usuario programe sus propias funciones. Para ello hay que editar el gui on del programa que dene la funci on en un editor y guardarlo, con extensi on m, en el directorio donde se vaya a utilizar. M ATLAB cuenta con un editor especial para este n; para activarlo, hay que hacer clic en la opci on FILE de la ventana de MATLAB, despu es en New y M-le como se ilustra en la gura 7-41(a); entonces se abrir a una nueva ventana con el editor de M ATLAB como se muestra en la gura 7-41(b).

(a)
Figura 7-41

(b)

En la gura 7-42 est a escrito un programa para calcular el polinomio caracter stico de una matriz de tamano 2 2 en el editor de texto que acompana a M ATLAB. A continuaci on explicamos a grandes rasgos las partes de las que est a formado este programa. 1. La palabra reservada function, instrucci on que se utiliza para indicar a M ATLAB que el programa es para denir una funci on. 2. Una etiqueta de salida, en este caso utilizamos la letra p, que sigue de la palabra reservada function. 3. Despu es del signo igual, que sigue de la etiqueta de salida (para este ejemplo p), viene el nombre de la funci on. Hemos llamado a esta funci on policarac. 4. Inmediatamente despu es del nombre que se usa para denir la funci on, entre par entesis se escriben nica las variables de las cuales va a depender la funci on, separadas por comas; en este ejemplo la u variable es A.

Page (PS/TeX): 9 / 790, COMPOSITE

7.2 SECCION

MATLAB y algebra lineal 791

Figura 7-42

on l ogica if y partes que lo conforman: else y end. 5. El comando de decisi 6. El comando de comparaci on l ogica ==. El comando if indica al programa que ejecute las ins l y antes de else si los miembros izquierdo y derecho de == son trucciones que est an debajo de e iguales; en caso contrario, el comando if indica al programa que ejecute las instrucciones que est an por debajo de else; en este caso desplegar el texto entre comillas. 7. La instrucci on q(1)=1 dene la primera componente del vector q igual a 1. 8. La instrucci on q(2)=-trace(A) dene la segunda componente del vector q igual a la evaluaci on de la funci on trace en la variable A. trace es una funci on de M ATLAB que calcula la traza de la matriz en la que se eval ua. 9. La instrucci on q(3)=det(A), dene la tercera componente del vector q igual a la funci on det evaluada en la variable A. det es una funci on de M ATLAB que calcula el determinante de la matriz en la que se eval ua. 10. La asignaci on del valor q a la variable p mediante la instrucci on p=q. 11. Todos los textos despu es del signo % son comentarios que no ejecuta el programa. Sin embargo, todo lo que se escriba despu es de ellos, al inicio del programa, se desplegar a en la ventana de M ATLAB si se ejecuta la instrucci on help policarac; por tanto, estos comentarios sirven para ayudar al programador a describir la funci on y su uso. ltimo, el archivo debe guardarse con el mismo nombre que tiene la funci Por u on con la extensi on, asignada por defecto en este editor, m ; en este caso policarac.m. Veamos c omo trabaja la funci on policarac.m : EDU help policarac La funci on policarac(A) calcula los coeficientes [a b c] del polinomio caracter stico a 2*r+b*r+c de la matriz A si esta es de tama! no 2x2.

Page (PS/TeX): 10 / 791, COMPOSITE

TULO 7 792 CAPI

a Uso de tecnolog

EDU C=[-1 3 1 2] C = -1 3 1 2 EDU policarac(C) ans = 1 -1 -5 EDU D=[1 1;-1 2; 3 1]; EDU policarac(D) ans = la matriz no es de tamano 2x2. EDU En el apartado 7.2.5 vimos c omo con M ATLAB es posible realizar manualmente las operaciones de rengl on Ri R j , Ri R j y Ri aRi + bR j ; lo que resulta muy laborioso hacer cada vez que se necesite. Los siguientes listados contienen la programaci on de tres funciones para este n; con ellas ser a m as sencillo ejecutar operaciones de rengl on; sin embargo, m as adelante vamos a construir un programa en M ATLAB que usar a estas funciones y que har a este proceso mucho m as amigable.

intercambiofilas Funcion
function m=intercambiofilas(A,i,j) %intercambiofilas(A,i,j) %intercambia la fila Ri con la fila Rj %de la matriz A. I=A(i,:); J=A(j,:); A(i,:)=J; A(j,:)=I; m=A;

cambio_de_escala Funcion
function m=cambio_de_escala(A,alpha,i) %cambio_de_escala(A,alpha,i) %multiplica la fila i de A %por el escalar alpha A(i,:)=alpha*A(i,:); m=A;

sumafilas Funcion
%sumafilas(matriz,filai,filaj,alpha,beta) %realiza la operacion de rengl on %R_i<--->alpha*R_i+beta*R_j} a la matriz A es decir, cambia la filai por alpha veces filai m as

Page (PS/TeX): 11 / 792, COMPOSITE

7.2 SECCION

MATLAB y algebra lineal 793

beta veces filaj matriz(filai,:)=alpha*matriz(filai,:)+beta*matriz(filaj,:); M=matriz; Recuerde que una vez que se hayan escrito cada una de estas funciones en el editor de texto de M ATLAB, se deben guardar con su respectivo nombre y con extensi on m. Veamos ahora c omo trabajan en M ATLAB: EDU M=[3 1 -1 2; 1 3 -1 1; -1 1 1 1] M = 3 1 -1 1 3 -1 -1 1 1 EDU M1=intercambiofilas(M1,1,2) M1 = 1 3 -1 3 1 -1 -1 1 1 EDU M1=sumafilas(M1,2,1,1,-3) M1 = 1 3 -1 0 -8 2 -1 1 1 EDU M1=sumafilas(M1,3,1,1,1) M1 = 1 3 -1 0 -8 2 0 4 0 EDU M1=sumafilas(M1,3,2,2,1) M1 = 1 3 -1 0 -8 2 0 0 2 EDU M1=cambio_de_escala(M1,1/2,3) M1 = 1 3 -1 0 -8 2 0 0 1

2 1 1

1 2 1

1 -1 1

1 -1 2

1 -1 3

1 -1 3/2

Note que a un se est an haciendo los c alculos en el formato rat de M ATLAB. Aunque lo precedente ya es de bastante ayuda para facilitar los c alculos, todav a resulta muy tedioso tener que teclear tanta informaci on. En el siguiente apartado disenaremos un programa que har a mucho m as amigable este proceso.

seleccionadas por el usuario Programa Gauss_Jordan con operaciones de renglon


Esta secci on incluye un programa muy elemental para llevar una matriz a una forma escalonada o a la forma escalonada reducida con M ATLAB, paso a paso y con operaciones de rengl on elegidas por el usuario. Este programa es interactivo e incluye una opci on para cancelar errores del usuario, que surgen naturalmente en este tipo de c alculos, evitando comenzar de nuevo todo el proceso. Para usuarlo, el

Page (PS/TeX): 12 / 793, COMPOSITE

TULO 7 794 CAPI

a Uso de tecnolog

lector tiene que reproducir el texto del programa, salvar el archivo con extensi on m, ejecutarlo en M ATLAB tecleando el nombre con el que lo guard o y oprimiendo la tecla ENTER. Sobra decir que el lector es libre de usarlo y modicarlo como le convenga. La gura 7-43 contiene el gui on del programa l se utilizar Gauss_Jordan; en e an las funciones intercambiofilas, cambio_de_escala y sumafilas que vimos en el apartado precedente; as que el lector interesado en usar este programa tiene tambi en que teclear esas funciones y guardarlas en el mismo directorio que el programa Gauss_Jordan. A continuaci on se describe grosso modo este programa:
%Programa Gauss_Jordan. %Este programa ejecuta las operaciones de rengl on %que el usuario desee aplicar para llevar una matriz %a una forma escalonada o a la forma escalonada reducida. %Las operaciones intercambio de filas: R_i<--->R_j, %cambio de escala: R_i<--->kR_i %y suma de filas: R_i<--->aR_i+bR_j, %se llevan a cabo pidiendo al usuario que introduzca %la informaci on necesaria en forma interactiva. %Para iniciar este programa basta teclear su nombre %en la ventana de matlab, oprimir la tecla enter %y seguir las indicaciones. clc;clear; fprintf( \n Autor: Juan Carlos Del Valle Sotelo ); fprintf( \n ***M etodo de Gauss-Jordan con operaciones de rengl on ); fprintf( \n definidas por el usuario***\n\n ); format rat; M=input( Escriba la matriz con la que desea trabajar: ) H=M; f=1; while f==1 respuesta1=input... ( \nElija: 1 intercambio de filas, 2 cambio de escala, 3 suma if respuesta1==1 respaldo=H; x=input( \nR_i<--->R_j: escriba la matriz [i j] : ); H=intercambiofilas(H,x(1),x(2)) elseif respuesta1==2 respaldo=H; v=input( \n R_i<--->kR_i: escriba la matriz [k i]: H=cambio_de_escala(H,v(1),v(2)) elseif respuesta1==3 respaldo=H; w=input( \nR_i<-->aR_i+bR_j: escriba la matriz [i j H=sumafilas(H,w(1),w(2),w(3),w(4)) end d=input( CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR if d==0 H=respaldo elseif d==1 f=1; elseif d==2 f=0; end end

de filas:

);

);

a b]:

);

oprimir 2:

);

Figura 7-43 Programa en M ATLAB para aplicar el m etodo de Gauss-Jordan paso a paso con operaciones de rengl on denidas por el usuario.

Page (PS/TeX): 13 / 794, COMPOSITE

7.2 SECCION

MATLAB y algebra lineal 795

1. El programa establece en el inicio el formato rat para trabajar con n umeros racionales. 2. La instrucci on input escribe un mensaje de texto en la pantalla de M ATLAB y asigna a la variable que est a a la izquierda del signo = el valor que el usuario teclee despu es de los dos puntos. 3. El ciclo while repite todas las instrucciones que est an por debajo de esta palabra en tanto que la armaci on l ogica f==1 sea verdadera. 4. El comando de decisi on if ya se explic o antes. 5. El comando elseif es similar al comando de decisi on else, que se describi o antes, pero ejecuta l si la condici las instrucciones que est an por debajo de e on que est a a su derecha es verdadera. 6. En el programa se utilizan las funciones ya programadas intercambiofilas , sumafilas y cambio_de_escala. 7. La opci on CANCELAR tiene el efecto de deshacer una operaci on de rengl on que el usuario haya realizado y considere no adecuada, regresando el programa a la matriz del paso inmediato anterior. 8. El programa debe guardarse con alg un nombre y con extensi on m en el mismo directorio donde se encuentran las funciones mencionadas antes. El nombre con el que se guard o en este caso fue Gauss_Jordan.m . es de la instrucci on input que est an por debajo del co Nota 7.7 Los tres puntos suspensivos despu nicamente para que el texto no se saliera de la caja que es visible para mando while, se escribieron as u este libro; sin embargo, los tres puntos suspensivos se utilizan para indicar, en la sintaxis de programaci on en M ATLAB, que la instrucci on contin ua en la siguiente l nea. Escribir as evita que en M ATLAB se genere un error si la instrucci on se corta para continuar en la siguiente l nea.Sin embargo, esto debe hacerse con cuidado porque una instrucci on no se puede interrumpir de esta manera en cualquier parte de la misma. Ilustremos c omo corre este programa:
EDU Gauss_Jordan Autor: Juan Carlos Del Valle Sotelo etodo de Gauss-Jordan con operaciones de rengl on ***M definidas por el usuario*** Escriba la matriz con la que desea trabajar: [3 -1 2 1; 1 2 -1 1; 2 -1 1 3] M = 3 -1 2 1 1 2 -1 1 2 -1 1 3 Elija: 1 intercambio de filas, 2 cambio de escala, 3 suma de filas: R_i<--->R_j: escriba la matriz [i j] : [2 3] H = 3 -1 2 1 2 -1 1 3 1 2 -1 1 CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR oprimir 2: 0 H = 3 1 2 -1 2 -1 2 -1 1 1 1 3 1

Elija: 1 intercambio de filas, 2 cambio de escala, 3 suma de filas: R_i<--->R_j: escriba la matriz [i j] : [1 2] H = 1 2 -1 1 3 -1 2 1 2 -1 1 3 CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR oprimir 2: 1

Page (PS/TeX): 14 / 795, COMPOSITE

TULO 7 796 CAPI

a Uso de tecnolog

Elija: 1 intercambio de filas, 2 cambio de escala, 3 suma de R_i<-->aR_i+bR_j: escriba la matriz [i j a b]: [2 1 1 -3] H = 1 2 -1 1 0 -7 5 -2 2 -1 1 3 CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR oprimir 2: Elija: 1 intercambio de filas, 2 cambio de escala, 3 suma de R_i<-->aR_i+bR_j: escriba la matriz [i j a b]: [3 1 1 -2] H = 1 2 -1 1 0 -7 5 -2 0 -5 3 1 CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR oprimir 2: Elija: 1 intercambio de filas, 2 cambio de escala, 3 suma de R_i<-->aR_i+bR_j: escriba la matriz [i j a b]: [3 2 -7 5] H = 1 2 -1 1 0 -7 5 -2 0 0 4 -17 CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR oprimir 2: Elija: 1 intercambio de filas, 2 cambio de escala, 3 suma de R_i<--->kR_i: escriba la matriz [k i]: [1/4 3] H = 1 2 -1 1 0 -7 5 -2 0 0 1 -17/4 CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR oprimir 2: Elija: 1 intercambio de filas, 2 cambio de escala, 3 suma de R_i<-->aR_i+bR_j: escriba la matriz [i j a b]: [2 3 1 -5] H = 1 2 -1 1 0 -7 0 77/4 0 0 1 -17/4 CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR oprimir 2: Elija: 1 intercambio de filas, 2 cambio de escala, 3 suma de R_i<-->aR_i+bR_j: escriba la matriz [i j a b]: [1 3 1 1] H = 1 2 0 -13/4 0 -7 0 77/4 0 0 1 -17/4 CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR oprimir 2: Elija: 1 intercambio de filas, 2 cambio de escala, 3 suma de R_i<--->kR_i: escriba la matriz [k i]: [-1/7 2] H = 1 2 0 -13/4 0 1 0 -11/4 0 0 1 -17/4 CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR oprimir 2: Elija: 1 intercambio de filas, 2 cambio de escala, 3 suma de R_i<-->aR_i+bR_j: escriba la matriz [i j a b]: [1 2 1 -2] H = 1 0 0 9/4 0 1 0 -11/4 0 0 1 -17/4 CANCELAR oprimir 0. CONTINUAR oprimir 1. TERMINAR oprimir 2: EDU

filas:

1 filas:

1 filas:

1 filas:

1 filas:

1 filas:

1 filas:

1 filas:

Page (PS/TeX): 15 / 796, COMPOSITE

7.2 SECCION

MATLAB y algebra lineal 797

lgebra lineal y matrices; a su M ATLAB tiene una serie de funciones especialmente dise nadas para a descripci on nos abocamos en lo que sigue.

7.2.7 Traza, determinante, rango, inversa y transpuesta


Las funciones de M ATLAB trace, det, rank, inv y transpose calculan, respectivamente, la traza, el determinante, el rango, la inversa y la transpuesta de una matriz. Si A es una matriz invertible, inv(A) y A (-1) producen el mismo efecto, calcular la inversa de la matriz A; mientras que con M! se obtiene el mismo resultado que con transpose(M), la transpuesta de la matriz M .
EDU A=[-9 2 1 3 5; 7 -9 2 3 1; 2 1 1 4 7; -1 1 1 2 3],... B=[-1 2 1 2;3 1 2 1;1 1 1 1; -3 0 1 2],... C=[1 2 1; 1 -2 3;3 2 5] A = -9 2 1 3 5 7 -9 2 3 1 2 1 1 4 7 -1 1 1 2 3 B = -1 3 1 -3 C = 1 2 1 -2 3 2 EDU trace(A), trace(B) ans = -15 ans = 3 EDU [rank(A),rank(B),rank(C)] ans = 4 EDU det(B) ans = 2 EDU det(C) ans = 0 EDU inv(B) ans = -1 3/2 2 -5/2 -1 1 3 -3 3 -3 -7 8 0 -1/2 0 1/2 4 2 1 3 5 2 1 1 0 1 2 1 1 2 1 1 2

Si en lugar de emplear la instrucci on inv(B), se ejecuta B (-1), se obtiene el mismo efecto.

Page (PS/TeX): 16 / 797, COMPOSITE

TULO 7 798 CAPI

a Uso de tecnolog

EDU B (-1) ans = -1 3/2 2 -5/2 -1 1 3 -3 3 -3 -7 8 0 -1/2 0 1/2

EDU M=[1 2 3; 4 5 6] M = 1 4 2 5 3 6

EDU N=transpose(M) N = 1 2 3 EDU N! ans = 1 4 2 5 3 6 4 5 6

Como se mencion o antes, en M ATLAB no es necesario hacer ninguna declaraci on especial de variables para trabajar con n umeros complejos:

EDU F=[1+i 2+3i 1; -1 -2i 1+3i; 1 -1 5i] F = 1 + -1 1 EDU det(F) ans = -13 EDU inv(F) ans = -19/697 267/1394 57/1394 EDU 212/697i 139/1394i 61/1394i -266/697 253/1394 101/1394 + 180/697i 145/1394i 157/1394i 14/41 -9/82 -1/82 + + 3/41i 1/82i 9/82i + 1i 2 0 -1 + 3i 2i 1 1 0 + + 3i 5i

35i

de sistemas 7.2.8 Forma escalonada reducida, solucion


M ATLAB tiene un comando para obtener de manera inmediata la forma escalonada reducida equivalente a una matriz. La instrucci on es rref.

Page (PS/TeX): 17 / 798, COMPOSITE

7.2 SECCION

MATLAB y algebra lineal 799

EDU A=[3 1 1 2 1; -2 2 1 1 4; -5 2 1 2 3; 7 1 -1 2 1] A = 3 1 1 2 1 -2 2 1 1 4 -5 2 1 2 3 7 1 -1 2 1 EDU rref(A) ans = 1 0 0 0 1/19 0 1 0 0 46/19 0 0 1 0 2/19 0 0 0 1 -16/19

Entonces, para resolver un sistema de ecuaciones Ax = b con M ATLAB, se escribe la matriz ampliada [A b], se lleva a forma escalonada reducida con el comando rref y se hace sustituci on regresiva en forma manual. Resolvamos con M ATLAB el sistema x1 x1 2x1 4x1
+

2x2 3x2 x2 5x2

+ + +

3x3 5x3 2x3 8x3

4x4 = 1 + x4 = 2 3x4 = 3 11x4 = 1

EDU A=[1 -2 3 -4; -1 3 -5 1; 2 -1 2 -3; 4 -5 8 -11] A = 1 -2 3 -4 -1 3 -5 1 2 -1 2 -3 4 -5 8 -11 b = -1 2 3 1 EDU AuG=[A b] AuG = 1 -1 2 4 EDU rref(AuG) ans = 1 0 0 0

-2 3 -1 -5

3 -5 2 8

-4 1 -3 -11

-1 2 3 1

0 1 0 0

0 0 1 0

-3 11 7 0

2 3 1 0

Al hacer sustituci on regresiva se obtiene: x3 = 1 7x4 ; x2 = 1 + 2x3 + 3x4 = 3 11x4 ; x1 = 1 + 2x2 3x3 + 4x4 = 2 + 3x4 . Esto es,
2 + 3r x1 x2 3 11r x3 = 1 7r ; r R, r x4

Page (PS/TeX): 18 / 799, COMPOSITE

TULO 7 800 CAPI

a Uso de tecnolog

7.2.9 Valores y vectores propios, polinomio caracter stico


M ATLAB tambi en tiene un comando para hallar los valores propios de una matriz y los vectores propios correspondientes y para encontrar el polinomio caracter stico:
eig(A) produce un vector con los valores propios de la matriz A. [V D]=eig(A) produce un par de matrices: una matriz diagonal D= diag(1 , 2 , . . . , n ), donde los i son los valores propios de la matriz A; y una matriz V con columnas vi , donde cada vi es un vector propio correspondiente al valor propio i . poly(A) genera un vector [an , an1 , . . . , a1 , a0 ], donde las componentes ak son los coecientes del nk polinomio caracter stico,2 p() = n , de la matriz A. k=0 ank

Ilustremos el uso de estos comandos. Con el formato rat : EDU A=[2 1 0;-1 0 1; 1 3 1]; EDU eig(A) ans = -1 2 2 EDU [V D]=eig(A) V = -1020/5201 919/1562 -1121/1429 D = -1 0 0 EDU poly(A) ans = 1 -3 0 4 -985/1393 0 -985/1393 0 2 0 -985/1393 0 -985/1393 0 0 2

Con el formato por defecto de M ATLAB (format) : EDU format EDU eig(A) ans = -1.0000 2.0000 2.0000 EDU [V D]=eig(A)
2 1 p() = det(In A).

Page (PS/TeX): 19 / 800, COMPOSITE

7.2 SECCION

MATLAB y algebra lineal 801

V = -0.1961 -0.7071 0.5883 0.0000 -0.7845 -0.7071 D = -1.0000 0 0 2.0000 0 0 EDU M=[1 1;-1 2] M = 1 1 -1 2 EDU eig(M) ans = 1.5000+ 0.8660i 1.5000- 0.8660i Podemos utilizar el modo simb olico de M ATLAB para calcular valores y vectores propios de la siguiente manera: EDU eig(sym(M)) ans = [ 3/2+1/2*i*3 (1/2)] [ 3/2-1/2*i*3 (1/2)] Y para visualizar un poco mejor el resultado, utilizamos el comando pretty que se describi o antes. EDU pretty(ans) ans= [ 1/2] [3/2 + 1/2 i 3 ] [ ] [ 1/2] [3/2 - 1/2 i 3 ] EDU [V D]=eig(sym(M)) V = [ 1/2-1/2*i*3 (1/2), 1/2+1/2*i*3 (1/2)] [ 1, 1] D = [ 3/2+1/2*i*3 (1/2), 0] [ 0, 3/2-1/2*i*3 (1/2)] EDU pretty(V) [ 1/2 [1/2 - 1/2 i 3 [ [ 1 1/2 + 1/2 i 3 1 1/2] ] ] ] -0.7071 0.0000 -0.7071 0 0 2.0000

No todos los comandos de M ATLAB pueden funcionar en el modo simb olico.

Page (PS/TeX): 1 / 801, COMPOSITE

TULO 7 802 CAPI

a Uso de tecnolog

QR y factorizacion LU 7.2.10 Factorizacion


Para hallar (num ericamente) la factorizaci on QR de una matriz S, se utiliza el comando qr(S,0) :
EDU S=[1 1 1;0 1 -1;1 1 0;0 0 1] S = 1 1 1 0 1 -1 1 1 0 0 0 1 EDU [Q R]=qr(S,0) Q = -0.7071 0 -0.7071 0 R = -1.4142 0 0 0.0000 -1.0000 0.0000 0 -1.4142 -1.0000 0 0.4082 0.0000 -0.4082 0.8165 -0.7071 1.0000 1.2247

(Cfr. ejemplo 4.33) La instrucci on [L U P]=lu(X) produce una matriz triangular inferior L, una matriz triangular superior U y una matriz de permutaci on P tal que P*X=L*U:
EDU X=[1 3 -1; 2 8 4; -1 3 4] X = 1 3 -1 2 8 4 -1 3 4 EDU [L U P]=lu(X) L = 1.0000 -0.5000 0.5000 U = 2.0000 0 0 P = 0 0 1 EDU P*X ans = 2 -1 1 EDU L*U ans = 2 -1 1 EDU 0 1.0000 -0.1429 8.0000 7.0000 0 1 0 0 0 1 0 0 0 1.0000 4.0000 6.0000 -2.1429

8 3 3

4 4 -1

8 3 3

4 4 -1

Page (PS/TeX): 2 / 802, COMPOSITE

También podría gustarte