Professional Documents
Culture Documents
NUMRICOS
Contenido
1. Resolucin de Problemas en MATLAB ................................................................................. 2
2. Escalares, Vectores y Matrices ............................................................................................. 5
3. Escalares................................................................................................................................ 5
4. Vectores............................................................................................................................... 13
5. Matrices en MATLAB .......................................................................................................... 30
1
2 Programacin y Mtodos Numricos: Gua N2
MATLAB es una poderosa herramienta para resolver problemas de ingeniera. Para usarlo de
manera efectiva, necesitar entender ms acerca de cmo funciona MATLAB.
Uso de Variables
Aunque es posible resolver muchos problemas al usar MATLAB como calculadora, usualmente
es ms conveniente dar nombres a los valores que utiliza.
Una variable est formada por un espacio en el sistema de almacenaje o memoria principal de
la computadora, que en MATLAB recibe el nombre de workspace, y un nombre simblico (un
identificador) que est asociado a dicho espacio. Ese espacio contiene una cantidad o
informacin conocida o desconocida, es decir un valor.
En programacin una variable puede ser utilizada en un proceso repetitivo: puede asignrsele
un valor en un sitio, ser luego utilizada en otro, ms adelante reasignrsele un nuevo valor para
ms tarde utilizarla de la misma manera. Procedimientos de este tipo son conocidos con el
nombre de iteracin.
MATLAB usa, para las variables, las convenciones de nomenclatura comunes a la mayora de los
programas de cmputo:
Todos los nombres deben comenzar con una letra. Los nombres pueden tener cualquier
longitud, pero en MATLAB 2013 (y versiones actuales) slo se usan los primeros 63
caracteres. (Use el comando namelengthmax para confirmar esto cuando instale
MATLAB.) Aunque MATLAB le permitir crear nombres de variable largos, la longitud
excesiva crea una significativa oportunidad de error. Un lineamiento comn es usar
letras minsculas y nmeros en los nombres de variable y usar letras maysculas para
los nombres de constantes. Sin embargo, si una constante tradicionalmente se expresa
como una letra minscula, sintase en libertad de seguir dicha convencin. Por ejemplo,
en los textos de fsica, la rapidez de la luz siempre es la letra c minscula. Los nombres
deben ser lo suficientemente cortos como para recordarlos y que sean descriptivos.
Los nicos caracteres permisibles son letras, nmeros y el guion bajo. Con el comando
isvarname puede verificar si se permite el nombre de la variable. Como es estndar en
2
3 Programacin y Mtodos Numricos: Gua N2
3
4 Programacin y Mtodos Numricos: Gua N2
Lo que regresa
Esto es claramente una prctica peligrosa, pues la funcin sin (es decir: seno) ya no est
disponible. Si intenta usar la funcin sobrescrita, obtendr un enunciado de error
(ndice supera dimensiones de matriz):
Puede verificar si una variable es una funcin MATLAB interna al usar el comando which:
La respuesta, es
4
5 Programacin y Mtodos Numricos: Gua N2
El tipo de datos bsico que se usa en MATLAB es la matriz. Un solo valor, llamado escalar, se
representa como una matriz 1 x 1. Una lista de valores, ordenados o en una columna o en una
fila, es una matriz unidimensional que se llama vector. Una tabla de valores se representa como
una matriz bidimensional. Aunque este captulo se limitar a escalares, vectores y matrices,
MATLAB puede manejar arreglos de orden superior.
En este ejemplo, A es una matriz 1 x 1 (escalar), B es una matriz 1 x 2 (vector) y C es una matriz
2 x 2. La ventaja de usar representacin matricial es que todos los grupos de informacin se
pueden representar con un solo nombre. La mayora de personas se sienten ms cmodas al
asignar un nombre a un solo valor, as que se comenzar por explicar cmo MATLAB maneja los
escalares y luego se avanzar a matrices ms complicadas.
3. Escalares
Operaciones
MATLAB maneja operaciones aritmticas entre dos escalares en forma muy parecida a como lo
hacen otros programas de cmputo e incluso su calculadora. En la tabla 2.1 se muestra la sintaxis
para la suma, resta, multiplicacin, divisin y exponenciacin. El comando
Entonces
5
6 Programacin y Mtodos Numricos: Gua N2
En MATLAB, un solo signo igual (=) se llama operador asignacin. El operador asignacin hace
que el resultado de sus clculos se almacenen en una ubicacin de memoria de la computadora.
En el ejemplo anterior, a x se le asigna un valor de 8. Si usted ingresa el nombre de la variable
Subsecuentemente, despus de que realiza cambios, vuelve a guardar su archivo, pero todava
le asigna el mismo nombre. Las versiones primera y segunda no son iguales: slo asign una
nueva versin de su documento a una ubicacin de memoria existente.
6
7 Programacin y Mtodos Numricos: Gua N2
Primero realiza los clculos adentro de parntesis, desde el conjunto ms interno hasta
el ms externo.
A continuacin, realiza operaciones de exponenciacin.
Luego realiza operaciones de multiplicacin y divisin de izquierda a derecha.
Finalmente, realiza operaciones de suma y resta de izquierda a derecha.
Para entender mejor la importancia del orden de las operaciones, considere los clculos que se
involucran al encontrar el rea de un cilindro circular recto.
El rea es la suma de las reas de las dos bases circulares y el rea de la superficie curva entre
ellas, como se muestra en la figura.
Si la altura (h) del cilindro es 10 cm y el radio (r) es de 5 cm, se puede usar el siguiente cdigo
MATLAB para encontrar el rea (sup_area):
El cdigo regresa
En este caso, MATLAB realiza primero la exponenciacin y eleva el radio a la segunda potencia.
Luego trabaja de izquierda a derecha y calcula el primer producto y luego el segundo producto.
Finalmente, suma los dos productos.
7
8 Programacin y Mtodos Numricos: Gua N2
En este caso, MATLAB primero encuentra la suma del radio y la altura y luego realiza las
multiplicaciones, trabajando de izquierda a derecha. Si olvida incluir los parntesis, tendra
En cuyo caso el programa primero tendra que calcular el producto de 2*pi*r*r y luego sumar h,
lo que obviamente resulta en la respuesta incorrecta. Note que fue necesario incluir el operador
multiplicacin antes de los parntesis, porque MATLAB no supone operador alguno e
interpretara la expresin
Como la funcin r con entrada (r + h). Puesto que no hay funcin radio en MATLAB, esta
interpretacin resultara en un enunciado de error.
Otra forma de hacer ms legible un cdigo de cmputo es descomponer las expresiones largas
en mltiples enunciados. Por ejemplo, considere la ecuacin:
Sera muy fcil cometer un error de tecla en esta ecuacin. Para minimizar la posibilidad de que
ello ocurra, descomponga la ecuacin en muchas piezas. Por ejemplo, primero asigne valores
para x, a, b y c:
8
9 Programacin y Mtodos Numricos: Gua N2
Sugerencia
9
10 Programacin y Mtodos Numricos: Gua N2
Los tneles de viento (vase la figura) juegan un importante papel en la comprensin del
comportamiento de las aeronaves de alto rendimiento. Con la finalidad de interpretar los
datos del tnel de viento, los ingenieros requieren entender cmo se comportan los gases. La
ecuacin bsica que describe las propiedades de los gases es la ley del gas ideal. La ley
establece que:
=
Donde
=
= 3
=
. 3
= , 8.314
.
= , []
Adems, se sabe que el nmero de kmoles de gas es igual a la masa del gas dividida por la
masa molar (tambin conocida como peso molecular) o
= /
Donde
=
= /
En las ecuaciones se pueden usar diferentes unidades si el valor de R se cambia en
concordancia.
Suponga ahora que usted sabe que el volumen de aire en el tnel de viento es de 1000 m 3.
Antes de que el tnel de viento se encienda, la temperatura del aire es de 300 K, y la presin
es de 100 kPa. La masa molar (peso molecular) promedio del aire es aproximadamente 29
kg/kmol. Encuentre la masa del aire en el tnel de viento.
Para resolver este problema, use la siguiente metodologa para resolucin de problemas:
10
11 Programacin y Mtodos Numricos: Gua N2
Salida
Masa m= ? Kg
3. Desarrolle un ejemplo a mano
Trabajar el problema a mano (o con una calculadora) le permite subrayar un algoritmo,
que usted puede traducir ms tarde a cdigo MATLAB. Debe elegir datos simples que
hagan fcil la comprobacin de su trabajo. En este problema, se conocen dos ecuaciones
que relacionan los datos:
=
=
Resuelva la ley del gas ideal para n y sustituya los valores dados:
= /
= (100 10003 )/(8.314 . 3 300)
= 40.0930
Convierta moles a masa al resolver la ecuacin de conversin para la masa m y sustituya
los valores:
= = 40.0930 29 /
= 1162.70
4. Desarrolle una solucin MATLAB.
Primero, limpie la pantalla y la memoria:
11
12 Programacin y Mtodos Numricos: Gua N2
Existen muchas cosas que usted debe notar acerca de esta solucin MATLAB. Primero,
puesto que no se utilizaron puntos y comas para suprimir la salida (m), los valores de las
variables se repiten despus de cada enunciado de asignacin. Note tambin el uso de
parntesis en el clculo de n. Son necesarios en el denominador, pero no en el
numerador. Sin embargo, usar parntesis en ambos hace al cdigo ms fcil de leer.
12
13 Programacin y Mtodos Numricos: Gua N2
4. Vectores
Usar MATLAB como una calculadora est bien, pero su verdadera fortaleza est en las
manipulaciones matriciales y vectoriales. Como se describi anteriormente, la forma ms simple
de definir una matriz y un vector, es usar una lista de nmeros, llamada lista explcita. El
comando
Recuerde que, al definir este vector, puede hacer la lista de valores con o sin comas.
Una nueva fila se indica mediante un punto y coma, de modo que un vector columna se
especifica como
y una matriz que contiene tanto filas como columnas se creara con el enunciado
Y regresara
13
14 Programacin y Mtodos Numricos: Gua N2
Aunque una matriz y un vector complicados tienen que ingresarse a mano, las matrices y
vectores con intervalos regulares se pueden ingresar mucho ms fcilmente. El comando
Y el comando
(Los corchetes son opcionales.) El incremento por defecto es 1, pero si usted quiere usar un
incremento diferente, colquelo entre el primero y ltimo valores en el lado derecho del
comando. Por ejemplo,
Si usted quiere que MATLAB calcule el espaciamiento entre los elementos, puede usar el
comando linspace. Especifique el valor inicial, el valor final y cuntos valores quiere en total.
Por ejemplo,
14
15 Programacin y Mtodos Numricos: Gua N2
Los vectores se pueden usar en muchos clculos con escalares. Si a = [1 2 3] se puede sumar 5 a
cada valor en la matriz con la sintaxis
Este enfoque funciona bien para suma y resta; sin embargo, la multiplicacin y la divisin son un
poco diferentes. En matemticas matriciales, el operador de multiplicacin (*) tiene un
significado especfico. Puesto que todas las operaciones MATLAB pueden involucrar matrices y
vectores, es necesario un operador diferente para indicar multiplicacin elemento por
elemento. Dicho operador es .* (que se llama multiplicacin punto). Por ejemplo,
a.*b
(Haga las operaciones para convencerse de que son las respuestas correctas.)
Slo usar * implica una multiplicacin matricial, que en este caso regresara un mensaje de error
porque a y b no satisfacen aqu las reglas para multiplicacin en lgebra matricial. La moraleja
es: tenga cuidado al usar el operador correcto cuando quiera realizar multiplicacin elemento
por elemento (tambin llamado arreglo).
15
16 Programacin y Mtodos Numricos: Gua N2
La misma sintaxis se cumple para la divisin elemento por elemento (./) y la exponenciacin (.^)
de elementos individuales:
a./b
a.^2
La capacidad matricial de MATLAB hace fcil realizar clculos repetitivos. Por ejemplo, suponga
que tiene una lista de ngulos en grados que le gustara convertir a radianes.
Primero ponga los valores en una matriz. Para ngulos de 10, 15, 70 y 90, ingrese
Este comando regresa una matriz llamada radians, con los valores en radianes. (Intntelo!) En
este caso, podra usar o el operador * o el .*, porque la multiplicacin involucra una sola matriz
(degrees) y dos escalares (pi y 180). Por lo tanto, podra haber escrito
16
17 Programacin y Mtodos Numricos: Gua N2
Otro operador matricial til es la transposicin. El operador transpuesto cambia filas a columnas
y viceversa. Por ejemplo,
Esto facilita la creacin de tablas. Por ejemplo, para crear una tabla que convierta grados a
radianes, ingrese
que le pide a MATLAB crear una matriz llamada table, en la que la columna 1 es degrees (grados)
y la columna 2 es radians (radianes).
Si traspone una matriz bidimensional, todas las filas se convierten en columnas y todas las
columnas se convierten en filas. Por ejemplo, el comando
17
18 Programacin y Mtodos Numricos: Gua N2
Los datos cientficos, como los que se recolectan de los tneles de viento, usualmente estn en unidades
SI (Systme International). Sin embargo, mucha de la infraestructura fabril de Estados Unidos se nomin
en unidades inglesas (a veces llamadas Ingeniera Americana o Estndar Americano). Los ingenieros
necesitan estar familiarizados con ambos sistemas y deben ser especialmente cuidadosos cuando
comparten datos con otros ingenieros. Acaso el ejemplo ms notorio de los problemas de confusin de
unidades es el Mars Climate Orbiter (ver figura), que fue el segundo vuelo del programa Mars Surveyor.
La nave espacial se quem en la rbita de Marte, en septiembre de 1999, debido a una tabla de
referencia incrustada en el software de la nave. La tabla, probablemente generada a partir de las
pruebas en el tnel de viento, usaba libras fuerza (lbf) cuando el programa esperaba valores en newtons
(N).
En este ejemplo, se usar MATLAB para crear una tabla de conversin de libras fuerza a newtons. La
tabla comenzar en 0 e ir hasta 1000 lbf, en intervalos de 100 lbf. El factor de conversin es
1 = 4.4482216
1. Establezca el problema.
Cree una tabla que convierta libras fuerza (lbf) a newtons (N).
Entrada
Salida
Puesto que se crear una tabla, tiene sentido verificar algunos valores diferentes. Al elegir nmeros
para los que la matemtica sea sencilla hace que el ejemplo a mano sea simple para completar, pero
todava valioso como comprobacin:
0 * 4.4482216 = 0
18
19 Programacin y Mtodos Numricos: Gua N2
Siempre es una buena idea limpiar tanto el rea de trabajo como la ventana de comandos antes
de comenzar un nuevo problema. Note en la ventana del rea de trabajo (figura) que lbf y N son
matrices de 1 x 11 y que ans (que es donde se almacena la tabla creada) es una matriz de 11 x 2.
La salida de los primeros dos comandos se suprimieron al agregar un punto y coma al final de
cada lnea. Sera muy fcil crear una tabla con ms entradas al cambiar el incremento a 10 o
incluso a 1. Note tambin que necesitar multiplicar los resultados que se muestran en la tabla
por 1000 para obtener las respuestas correctas. MATLAB le dice que esto es necesario
directamente arriba de la tabla, donde se muestra el factor de escala comn.
19
20 Programacin y Mtodos Numricos: Gua N2
Factor de escala
comn
20
21 Programacin y Mtodos Numricos: Gua N2
Cuando se crea un vector, por ejemplo x=[3,6,9,12,15,18]; la tabla muestra los ndices del x y los
valores que guardan los elementos del vector.
ndice 1 2 3 4 5 6
Valor 3 6 9 12 15 18
En general, un vector fila tiene la forma [r1r2r3 ....rn]. Para acceder a un elemento i del
vector r, ri se escribe r(i). Para acceder la primer elemento se escribe r(1). Para acceder al ltimo
se escribe r(end). La funcin length devuelve el nmero de elementos del vector.
Con el operador : podemos acceder a ms de un elemento del vector. Cuando escribimos v(m:n)
se accede a los elementos del vector v desde las posiciones m hasta n. Es la forma de extraer un
vector de otro vector. Por ejemplo, creamos un vector u con los elementos comprendidos entre
las posiciones 3 y 7 ambas incluidas, de un vector v que tiene 10 elementos
21
22 Programacin y Mtodos Numricos: Gua N2
Podemos tambin crear un vector u a partir de otro vector de subndices. Por ejemplo, crear un
vector u tomando el elemento quinto, primero, cuarto y octavo elemento del vector v, en este
orden.
22
23 Programacin y Mtodos Numricos: Gua N2
Si se sobrepasa la dimensin del vector que era 10, se le aade el elemento de ndice 12, al
elemento de ndice 11 se le asigna automticamente cero.
Creamos un vector a partir de otros dos vectores, insertamos un escalar (vector de dimensin
1) al principio de un vector o en medio del vector.
23
24 Programacin y Mtodos Numricos: Gua N2
24
25 Programacin y Mtodos Numricos: Gua N2
MATLAB dispone de la funcin dot(u,v) para calcular el producto escalar de dos vectores u y v.
A partir de la definicin del producto escalar podemos calcular el ngulo entre los vectores u y
v
25
26 Programacin y Mtodos Numricos: Gua N2
Existen muchas situaciones en las que se requieren operaciones elemento a elemento, similares
a las que se lleva a cabo con la suma o la diferencia de dos vectores de las mismas dimensiones
Por ejemplo:
26
27 Programacin y Mtodos Numricos: Gua N2
En MATLAB, podemos utilizar las operaciones elemento a elemento para evaluar una funcin
para un conjunto de valores de la variable x, y esto nos va a ser de mucha utilidad en las
representaciones grficas.
27
28 Programacin y Mtodos Numricos: Gua N2
28
29 Programacin y Mtodos Numricos: Gua N2
Caracteres Especiales
29
30 Programacin y Mtodos Numricos: Gua N2
5. Matrices en MATLAB
Conforme resuelva problemas cada vez ms complicados con MATLAB, encontrar que
necesitar combinar pequeas matrices con matrices ms grandes, extraer informacin de
matrices grandes, crear matrices muy grandes y usar matrices con propiedades especiales.
Definicin de Matrices
En MATLAB, una matriz se puede definir al escribir una lista de nmeros encerrados entre
corchetes. Los nmeros se pueden separar mediante espacios o comas, a discrecin del usuario.
(Incluso puede combinar las dos tcnicas en la misma definicin de matriz.) Las nuevas filas se
indican con punto y coma. Por ejemplo,
MATLAB tambin le permite definir una matriz en trminos de otra matriz que ya se haya
definido. Por ejemplo:
30
31 Programacin y Mtodos Numricos: Gua N2
El operador dos puntos es un operador muy poderoso para definir nuevas matrices y modificar
las existentes.
El operador dos puntos tambin se puede usar para extraer datos de las matrices, una
caracterstica que es muy til en anlisis de datos. Cuando en una matriz se usan dos puntos
como referencia en lugar de un nmero ndice especfico, los dos puntos representan toda la fila
o columna.
Esta sintaxis se puede leer como todas las filas en la columna 1. Puede extraer cualquiera de
las columnas en una forma similar. Por ejemplo,
31
32 Programacin y Mtodos Numricos: Gua N2
No tiene que extraer toda una fila o toda una columna. El operador dos puntos tambin se puede
usar para significar desde fila _ hasta fila _ o desde columna _ hasta columna _. Para extraer
las dos filas inferiores de la matriz M, escriba
Y se lee filas 2 a 3, todas las columnas. De manera similar, para extraer slo los cuatro nmeros
en la esquina inferior derecha de la matriz M,
En MATLAB, es vlido tener una matriz que est vaca. Por ejemplo, los siguientes enunciados
generarn cada uno una matriz vaca:
32
33 Programacin y Mtodos Numricos: Gua N2
De manera alternativa, puede usar un solo nmero ndice. El valor en la fila 2, columna 3 de la
matriz M es el elemento nmero 8. (Cuente la columna 1, luego la columna 2 y finalmente en la
columna 3 hasta el elemento correcto.) El comando MATLAB asociado es
33
34 Programacin y Mtodos Numricos: Gua N2
Todos los clculos realizados hasta el momento han usado slo una variable. Desde luego, la
mayora de los fenmenos fsicos puede variar con muchos factores diferentes. En esta seccin
se considera cmo realizar los mismos clculos cuando las variables se representan mediante
vectores.
Ahora vea lo que ocurre si x es una matriz unidimensional (vector) y y todava es un escalar:
Regresa cinco valores de x. Dado que y todava es un escalar con slo un valor (5).
Este enunciado de error (las dimensiones internas de matriz deben concordar) le recuerda que
el asterisco es el operador para multiplicacin matricial, que no es lo que se quiere. Se quiere el
operador punto-asterisco (.*), que realizar una multiplicacin elemento por elemento. Sin
embargo, los dos vectores, x y y, necesitarn tener la misma longitud para este propsito. En
consecuencia:
34
35 Programacin y Mtodos Numricos: Gua N2
Y si quiere conocer el resultado para el elemento 3 del vector x y el elemento 5 del vector y?
Obviamente, este enfoque no da todas las posibles respuestas. Se quiere una matriz
bidimensional de respuestas que corresponda a todas las combinaciones de x y y. Con la
finalidad de que su respuesta, A, sea una matriz bidimensional, los vectores de entrada deben
ser matrices bidimensionales. MATLAB tiene una funcin interna llamada meshgrid, que le
ayudar a lograr esto, e incluso x y y no tienen que ser del mismo tamao.
35
36 Programacin y Mtodos Numricos: Gua N2
Luego se usar meshgrid para crear una nueva versin bidimensional de x y y que se llamarn
new_x y new_y:
El comando meshgrid toma los dos vectores de entrada y crea dos matrices bidimensionales.
Cada una de las matrices resultantes tiene el mismo nmero de filas y columnas. El nmero de
columnas se determina por el nmero de elementos en el vector x, y el nmero de filas se
determina mediante el nmero de elementos en el vector y. Esta operacin se llama mapeo de
vectores en un arreglo bidimensional:
Note que todas las filas en new_x son las mismas y todas las columnas en new_y son las mismas.
Ahora es posible multiplicar new_x por new_y y obtener la retcula bidimensional de resultados
que realmente se quiere:
36
37 Programacin y Mtodos Numricos: Gua N2
Probablemente ha experimentado estar de pie en lo alto de una colina o montaa y sentido que puede
ver hasta el infinito. Realmente cun lejos puede ver? Depende de la altura de la montaa y del radio
de la Tierra, como se muestra en la figura. La distancia hasta el horizonte es muy diferente en la Luna
que en la Tierra, porque el radio es diferente para cada una.
2 + 2 = ( + )2
Y despejar d produce = 2 + 2
A partir de esta ltima expresin, encuentre la distancia hasta el horizonte en la Tierra y en la Luna, para
montaas desde 0 hasta 8000 metros. (El monte Everest tiene 8850 metros de alto.) El radio de la Tierra
es 6378 km y el de la Luna es de 1737 km.
1. Establezca el problema.
Encontrar la distancia hasta el horizonte desde lo alto de una montaa en la Luna y en la Tierra.
37
38 Programacin y Mtodos Numricos: Gua N2
Ejecutar el archivo-m precedente regresa una tabla de las distancias hasta el horizonte tanto en
la Luna como en la Tierra:
38
39 Programacin y Mtodos Numricos: Gua N2
Por ejemplo:
Se pueden multiplicar matrices de dimensiones (m, k) (k, n) para obtener una matriz de
dimensin (m, n).
39
40 Programacin y Mtodos Numricos: Gua N2
Por ejemplo:
Cuando una matriz se multiplica por un nmero, cada elemento de la matriz se multiplica por
dicho nmero.
40
41 Programacin y Mtodos Numricos: Gua N2
Existen muchas situaciones en las que se requieren operaciones elemento a elemento similares
a las que se lleva a cabo con la suma o la diferencia de dos matrices de las mismas dimensiones.
41
42 Programacin y Mtodos Numricos: Gua N2
MATLAB utiliza los operadores de divisin para la resolucin de sistemas de ecuaciones lineales.
Por su gran importancia, estos operadores requieren una explicacin detenida. Considrese el
siguiente sistema de ecuaciones lineales:
=
Donde x y b son vectores columna, y A una matriz cuadrada invertible. La resolucin de este
sistema de ecuaciones se puede escribir en las 2 formas siguientes (Atencin a la 2 forma,
basada en la barra invertida (\), que puede resultar un poco extraa!):
= ()
= \
Por ejemplo:
42
43 Programacin y Mtodos Numricos: Gua N2
Matrices Especiales
sdsf
43