Professional Documents
Culture Documents
TAREA:
UNIDAD 1. PROGRAMACION CON SOFTWARE MATEMTICO
UNIDA 2. GRFICAS CONSOFTWARE MATERMTICO
UNIDAD 3. LGEBRA LINEAL
GRUPO: 4B
>>quit
En Macintosh o Windows, haga clic en el icono de MATLAB o de STUDENT
MATLAB.
El procedimiento para salir de MATLAB es similar al que se sigue para salir de
cualquier otra aplicacin en Macintosh o Windows.
Ayuda: Si no entiende bien el signicado de un comando, teclee
nombre del comando en cuestin. El comando
help
help
y el
concisa pero precisa de los comandos; tal vez no resulte til para los principiantes,
pero ser uno de los comandos que utilice con mayor frecuencia. Por ejemplo, he
aqu una traduccin de las respuestas a help quit y a help help:
>>help quit
QUIT Terminar MATLAB.
QUIT termina MATLAB.
>>he1p help
HELP Documentacin en lnea.
HELP, sin ms, presenta una lista de todos los temas de ayuda primarios. Cada tema
primario corresponde a un nombre de directorio en MATLABPATH.
HELP tema proporciona ayuda sobre el tema especificado. El tema puede ser el nombre
de un comando o de un directorio; en el primer caso, HELP exhibe informacin acerca de
ese comando; en el segundo caso, HELP muestra la Tabla de Contenido del directorio
especificado.
No es necesario proporcionar el nombre de camino completo del directorio; basta con el
ltimo componente o algunos de los ltimos componentes.
Por ejemplo, tanto help general" y "help matlab/general" exhiben la Tabla de Contenido
del directorio toolbox/matlab/general.
LOOKFOR XYZ busca la cadena XYZ en la primera lnea de comentario del texto de
HELP de todos los archivos M que se encuentren en MATLABPATH. Para todos los
1
what
nombredirectorio
en el
especicar el nombre completo de la ruta del directorio; basta con el o los ltimos
componentes. Por ejemplo, tanto what general como what matlab/ general listan los
archivos M- del directorio tool-box/matlab/ general.
Quin: El comando
who
variable;
who
Ans=
1.0e+03 *
1.9950 0.0030 0.0050 0.0150 0 .0140 0.0091
El primer nmero, 1.0e+ 03, es un multiplicador; los nmeros de
la segunda lnea
fix (clock).
La
ans =
1995
15
19
56
Lo que indica que la fecha fue el ao 1995, tercer mes, quinto da, 15 horas, 19
minutos y 56 segundos, aproximadamente seis minutos despus de que se
imprimi el primer ejemplo de clock. Podemos medir con clock el tiempo que tarda
una ejecucin. Por ejemplo, asigne
t_1=clock
2
t_0=clock
t_1-t_0
tic
toc
para medir el
tiempo transcurrido.
El comando date proporciona informacin similar, pero en un formato ms breve:
ans =
5 -Mar 95
path imprime la ruta de bsqueda vigente de MATLAB. El
comando p = path devuelve una cadena p que contiene la ruta. El comando path
(p0) cambia la ruta a p0, que es una cadena que contiene la nueva nata. El
comando path (p1, p2) cambia la ruta a la concatenacin de las dos cadenas de
ruta p1 y p2. Por tanto, path (path, p3) anexar un directorio nuevo p3 a la ruta
vigente y path (p3, path) antepondr una ruta nueva.
Camino: El comando
getenv (MATLABPATH)
MAT-LAB vigentes.
diary on
Diario: El comando
diary y
diary off termina la escritura. Si ya existe el archivo diary, las salidas de la pantalla
se anexarn a ese archivo. Se puede especicar un nombre de archivo distinto de
diary escribindolo despus de la palabra diary. Si no se incluyen las palabras on u
off,
el comando
diary
diary on
diary off.
El archivo puede
MATLAB. Con este signo, se tiene acceso al directorio fuera de MATLAB. Por
ejemplo, suponga que abri MATLAB desde un shell de Unix; entonces, podr
emitir un comando de Unix desde dentro de MATLAB escribiendo dicho comando
despus del signo de escape. Por ejemplo, es posible abrir desde MATLAB
software de edicin de textos como el editor
vi
tecleando
!vi nombrearchivo.
demo
Volumen =
Los comandos que debemos teclear son:
Listado 1.1a
r = 2;
vol = (4/3)*pi*r 3;
Donde pi = : en MATLAB. Cada linea se teclea adelante de la indicacin >> y se
oprime la tecla return (o intro) al nal de la lnea. Observe que en el guin anterior
cada lnea es un comando y termina con un signo de punto y coma. El circunejo
despus de r es el operador de exponente.
Cuando trabajamos en la ventana de comandos, la computadora calcula la
respuesta de cada comando inmediatamente despus de pulsarse la tecla return.
Por tanto, el valor de vol ya est en la computadora; cmo podemos hacer que
aparezca en la pantalla?
La forma ms fcil de exhibir el resultado es teclear
computadora exhibir
vol
y pulsar return. La
vol =
33.510
Otra forma de imprimir el valor de vol es omitir el signo de punto y coma al nal del
segundo comando:
Listado 1.1b
r=2;
vol = (4/3) *pi*r 3
Si falta el punto y coma, el resultado se imprimir inmediatamente despus de
calcularse. Sin embargo, como casi nunca resulta cmodo ir imprimiendo todos los
resultados, por lo general se coloca un punto y coma despus de cada comando.
r = 2, vol = (4/3)*pi*r 3
Se imprimirn los valores de r y de vol, pero si escribe
r = 2; vol = (4/3)*pi*r 3;
no se imprimirn resultados.
Es posible dividir un comando largo en varias lneas. En Fortran, esto se hace con
una marca de continuacin en la columna 6. En MATLAB, la marca de
continuacin es y se coloca al nal de la lnea que se desea continuar; por
ejemplo,
Listado 1.2
r=2;
vol = (4/3) *3 . 14159...
*r 3 ;
La indicacin > no aparecer en la lnea que siga a la marca de continuacin.
Operadores aritmticos: Los operadores aritmticos como +, -, * y / son los
mismos que los de lenguajes de programacin tradicionales como Fortran y,
respectivamente, ms, menos, multiplicar y dividir. MATLAB emplea un operador
no tradicional, \, que puede llamarse divisin inversa. Este operador produce el
recproco de la divisin; o sea, a \ b produce b / a. Por ejemplo,
c = 3\1
c=
0.3333
No es conveniente que los lectores utilicen este operador en clculos ordinarios,
pero adquirir importancia en la unidad 3 cuando tratemos el lgebra lineal.
Enunciado if: El enunciado
por ejemplo,
Listado 1.3
r=2;
if r>0, vol = (4/3) * 3.14159 * r
5
3;
Listado 1.4
r=2;
if r==2, vol = (4/3) * pi * r
end
El operador diferente de se escribe
3;
=; por ejemplo,
Listado 1.5
r = 2;
if r = 3, vol = (4/3) * pi * r 3;
end
Los operadores mayor que, menor que, igual o mayor que e igual o menor que
son, respectivamente,
>
<
>=
<=
Los enunciados lgicos and y or se denotan con
ejemplo, la ecuacin condicional
&
y l, respectivamente. Por
disp
ventana de comandos sin tener que especicar un nombre de variable; as, puede
servir para exhibir mensajes o datos en la pantalla. Por ejemplo, tanto disp (pi)
X=
9
7
end=4
como
sin
cos
sin= 3;
cos = sin 2;
Los clculos procedern, pero
sin
cos
clear o se
abandone MATLAB.
Si aparece un mensaje de error relacionado con un conicto, es importante que el
lector investigue qu lo caus.
Es tradicional utilizar los smbolos i, j, k, I, m y n como variables enteras o
ndices. Al mismo tiempo, i y j se emplean para denotar el valor imaginario unitario
. En MATLAB, i y j se reservan para el valor imaginario unitario; por tanto, si
un clculo incluye varias variables complejas es aconsejable evitar el uso de i y j
como variables definitivas por el usuario, si es posible.
En la tabla 1.1 se presentan ejemplos de nombres de variable reservados que
tienen signicado especial. Se puede vericar la existencia de una variable o un
archivo con el comando exist.
for / end,
calculemos el volumen de
Listado 1.7
for r=1:5
vol=(4/3) * pi * r^3
disp ( [r, vol ] )
end
8
Listado 1.8
r=0;
while r < 5
r = r+1;
Vol = (4/3) *pi*1 ^ 3;
disp ( [r, vol])
end
El ndice del ciclo puede decrementarse as:
for r =5 : - 1 : 1
vol = (4/3) * pi * 1 ^3;
disp ( [r, vol])
end
En este ejemplo, el -1 entre los operadores de dos puntos es el decremento del
parmetro r despus de cada ciclo.
Podemos escribir ciclos dobles y triples; por ejemplo,
Listado 1.9
for r= 1 : 5
for s= 1 : r
vol = (4/3) * pi * (r^3 - s^3);
disp( [r, vol)
end
end
Formato: Por omisin, los nmeros se exhiben con cinco dgitos:
pi
ans =
3 . 1416
9
format long
pi
ans=
3.141592653589793
Si desea volver al formato corto, utilice
while 1
.
.
if x > xlimit, break; end
.
.
end
10
clear x y z
Cmo borrar la ventana de comandos: Si desea borrar la ventana, utilice el
comando
clc
1.3 LECTURA Y ESCRITURA
Hay varias formas de pasar datos a y de MATLAB. Los mtodos pueden
agruparse en tres clases:
(a) Operacin interactiva mediante teclado o el ratn
(b) Lectura de o escritura en un archivo de datos
(c) Empleo de save o load
Lectura de entradas de un teclado: MATLAB puede aceptar datos de entrada
a travs del teclado mediante el comando input. Si se desea leer un nmero, un
enunciado bsico sera:
z = input(Teclee el radio:)
La parte Teclee el radio: es un mensaje de solicitud que se exhibe en la pantalla.
Cuando se teclee el valor del radio y se pulse la tecla return (intro), el dato se
guardar en z. Tambin es posible introducir cadenas desde el teclado. Un
enunciado bsico sera:
%12. 5f
es el formato y es similar a
formato_e: l.23452e+04
Si se escriben consecutivamente dos enunciados de impresin sin
\n
en el
formato_f: 93
12
fprintf
para escribir salidas con formato en un archivo. Para ello, se incluye el nombre del
archivo en el argumento; por ejemplo,
archivo_x.
Si no existe el archivo, se
fopen
fclose.
Si desea
ans =
0. 2
Una forma equivalente de denir la misma x es
for i=1:6
x(i) = (i-1)*0.1;
end
El tamao de un vector no tiene que declararse previamente, pues se ajusta
automticamente. El nmero de elementos de x puede incrementarse deniendo
elementos adicionales, por ejemplo,
x (7 ) = 0.6 ;
Otra forma de escribir una variable de arreglo de la con un incremento o
decremento jo es:
x = 2 = -0 . 4 = -2
que produce
13
z=
0
0. 1
0. 2
0. 3
0. 4
0. 5
Si se dene un solo elemento de un arreglo c, por ejemplo,
c ( 8) = 11 ;
se supondr c (i) = 0 para i=1 hasta 7. Por tanto, si teclea c como comando obtendr
C=
0 0 0 0 0 0 0 11
Cuando y y x tienen la misma longitud y la misma forma (la o columna), los
vectores y y x se pueden sumar, restar, multiplicar y dividir empleando los
operadores aritmticos de arreglos:
z=x+y
z=xey
z=x.*y
z=x./y
que equivalen respectivamente a
Listado 1.12
for i=1:6; z(i) = x(i) + y(i); end
for i=1:6; z(i) =x(i) -y(i); end
for i=1:6; z(i) = x(i) *y(i); end
for i=1:6; z(i) = x8i) /y(i); end
14
g=z.^1.2;
donde z es un vector de longitud 6, se coloca un punto antes del operador ^ y g se
convierte en un vector de la misma longitud. El enunciado anterior equivale a
x=
2 3
El comando que sigue anexa 5 a x y hace que su longitud sea 3:
x = [x , 5]
Lo que devuelve
x=
2 3 5
Podemos anexar un nmero, un vector o varios vectores a un vector de columna.
Suponga que y es un vector de columna,
y=
2
3
entonces
y = [y ; 7]
produce
y=
2
3
7
15
x=
9 2 3 5
donde x del lado derecho se deni previamente. De forma similar,
[-1 ; y] produce
y=
-1
2
3
7
Un procedimiento inverso consiste en extraer una parte de un vector. Con la
anterior,
w = y (3 : 4)
dene a w que equivale al tercer y cuarto elementos de y, a saber:
w=
3
7
Si no recuerda el tamao de un vector, pregntelo a la computadora. Para un
vector
x = [9 , 2 , 3 , 5]
la consulta
length (x)
recibe la respuesta
ans =
4
La respuesta es la misma para un arreglo de columna. Denamos
y = *9, 2 ,3+;
entonces, length (y) devolver ans = 3. Por otro lado, si adems de la longitud
se desea saber si el vector es de columna o de la, se debe usar
16
v = * g , 1 , a, c , i , a , r]
La variable v puede convertirse en una cadena de columna con
v = v
que es
g
l
a
c
i
a
r
Variables de arreglo bidimensional: Un arreglo bidimensional, que es lo mismo
que una matriz en MATLAB, se puede denir especicando sus elementos. Por
ejemplo, un arreglo de 3 por 3 se puede denir mediante
Listado 1.13
m(1 , 1)=0.l;
m(1 , 2)=0.2;
m(1 , 3)=0.3;
m(2 , 1)=0.4;
m (2 , 2 ) =0.5;
m ( 2 , 3 ) =0.6;
m (3 , 1 ) =0.7;
m(3 , 2)=0.8;
17
m=
0.1000 0.2000 0.3000
0.4000 0.5000 0.6000
0.7000 0.8000 0.9000
Podemos expresar una columna o una la completa de un arreglo bidimensional
empleando un signo de dos puntos. Por ejemplo, m (1 , : ) y m ( : , 3) son la primera
la de
Por ejemplo,
c (1 , :) = m( 3 , :);
c (2 , :) = m(2 , :);
c (3 , :) = m(1 , :);
producen
c=
0.7000 0.8000 0.9000
0.4000 0.5000 0.6000
0.1000 0.2000 0.3000
Los arreglos bidimensionales se pueden sumar, restar, multiplicar y dividir con los
operadores aritmticos de arreglos:
Listado 1.14a
c=a+b.
c=a-b
c = a .* b
c = a ./ b
Aqu, a y b son arreglos bidimensionales del mismo tamao. Los enunciados
anteriores equivalen a, respectivamente,
Listado 1.14b
for i=1 : 3
for j=1 : 3
c(i , j) = a(i , j) + b(i , j );
end
end
for i=1 : 3
18
g=a.^3
equivale a
for i=1 : 3
for j=1 : 3
g(i , j) = a (i , j) ^ 3;
end
end
Los vectores de columna y los de la son casos especiales de matrices; por tanto,
los operadores de arreglos funcionan igual con los vectores que con las matrices.
El empleo de los operadores aritmticos de arreglos tiene dos ventajas. En primer
lugar, los programas son ms cortos. En segundo lugar, la eciencia
computacional de MATLAB es mayor con la forma corta que cuando se escribe lo
mismo empleando ciclos.
Enunciados
if
tamao:
a = ' equidna
b = tapir
b = 'albatross
d = ' petrel
'
'
'
'
t1 = 'digitalis'
t2 = 'nicotiana'
t3 = 'basilicum'
t4 = ' lychnis'
t5 = ' chrysantemum'
Entonces, podemos organizar las variables en una sola matriz de cadenas con
s = str2mat ( t1 , t2 , t3 , t4 , t5)
La primera la de s se convierte en t1, la segunda en t2, y as sucesivamente, con
longitudes idnticas porque se aaden espacios en blanco a las cadenas ms
cortas.
1.5 FUNCIONES MATEMATICAS EN SOFTWARE
Al igual que otros lenguajes de programacin, MATLAB tiene numerosas
funciones matemticas, desde las elementales hasta las de alto nivel. Las
funciones elementales pueden agruparse en tres categoras:
20
cos ( 2 + 3 * i )
donde i es el numero imaginario unitario, equivalente a la raz cuadrada de -1. La
respuesta es
ans =
-4.1896 - 9.l092i
En otro ejemplo, consideremos la funcin arco
coseno, que es el inverso de la funcin coseno
denido por
y = acos(x) = cos1(x)
El comando
acos (0 . 5)
produce
ans=
1.0472
argumento x
de
acos(x)
Acos(3)
entonces
ans=
0 + 1 . 7627 i
Argumentos de arreglo: La mayor parte de las funciones de MATLAB puede
aceptar vectores y matrices como argumentos. Por ejemplo, si
x=
1 2 3
9 8 7
entonces sin (x) producir
ans =
0.8415 0.9093 0.1411
0.4121 0.9894 0.6570
21
Listado 1.18
for i=1 : 2
for j =1 : 3
x(i , j) = sin( x ( i , j))
end
end
Si
sin (x)
se convierte en un arreglo de
es una matriz, el
sort( [ 2 1 5 ] )
ans =
1 2 5
sort ( [2 1 , 5)
ans =
l
2
5
Sort ( [ 9 1 5 ; 2 8 4 ] )
ans =
2 1 4
9 8 5
Sumatoria: sum (x) calcula la sumatoria de los elementos de un vector o matriz x.
Para los vectores tanto de la como de columna, sum calcula el total de los
elementos. Si x es una matriz, se calcula la sumatoria de cada columna y se
22
sum ( [ 2 1 5] )
ans=
8
sum( [ 2 1 5} ' )
ans =
8
sum([ 2 1 5 ; 9 8 5 ])
ans =
11 9 10
Mximo y mnimo:
max (x)
min (x)
sort
sum.)
Nmeros aleatorios: Podemos generar nmeros aleatorios con
bsica de la funcin es
rand (n),
donde
rand. La forma
n = 1,
23
esfera
como un
comando; incluso puede ejecutarse desde otro archivo M incluyendo esfera en ese
archivo. Otra forma de ejecutar el archivo en Macintosh es hacer clic en SAVE and
on, los enunciados se exhibirn. De este modo, el usuario puede ver cul parte del
archivo M se est ejecutando. Para desactivar el eco, teclee echo of f.
Enunciados de comentario: El signo
24
x=rand (1)
c=clock
asigna a
el ao.
El siguiente archivo M determina una carta cada vez que se ejecuta. El juego se
repite respondiendo a la solicitud con r y termina si se teclea cualquier letra distinta
de r. Este archivo M se guarda con el nombre List1_19 . m, as que puede
ejecutarse desde la ventana de comandos tecleando
List1_19.
Listado 1.19
c=clock;
k=c(2)*c(3)*c(4)*c(5)*c(6);
rand ( ' seed ' , k )
for k=1 : 2 0
n = ceil (13 * rand (1) ) ;
fprintf ( Nmero de carta sacada: % 3.0 f \ n , n)
disp ( )
disp ( ' Teclee r y pulse Return para repetir ')
r = input ( ' o cualquier otra letra para terminar ' , ' s ' );
if r ~= 'r, break, end
25
Listado 1.20
function y = demof_ (x)
y = ( 2 * x. ^ 3 + 7 * x . ^ 2 + 3 * x-1) ./ ( x. ^2 3 * x + 5 * exp (-x) );
Observe que el nombre del archivo M es idntico al nombre de la funcin, que
aparece a la derecha del signo de igual. En el archivo M se utilizan los operadores
aritmticos de arreglos, as que el argumento x puede ser un escalar, un vector o
una matriz. Una vez que se guarda demof_ . m como archivo M, se puede utilizar
desde la ventana de comandos o en otro archivo M. El comando
y = demof_ ( 3)
produce
y=
502 .1384
Si el argumento es una matriz, por ejemplo,
demof_ ( [ 3 , 1 ; 0 , -1 ] )
El resultado tambin es una matriz:
ans =
5 0 2 . 1 3 8 4 -6 8 . 4 9 2 0
-0. 2 0 0 0
0. 0 5 6 8
Funcin que devuelve mltiples variables: Una funcin puede devolver ms
de una variable. Supongamos una funcin que evala la media y la desviacin
estndar de una serie de datos. Para devolver las dos variables utilizamos un
vector en el miembro izquierdo del enunciado de la funcin; por ejemplo,
Listado 1.21
function [media , dvstd] = media_ds (x)
26
x=[ 1 5 3 4 6 5 8 9 2 4 ];
[ m , d ] = media_ds(x)
produce
m=
4.7000
s=
2 . 3685
Funcin que utiliza otra funcin: El argumento de una funcin puede ser el
nombre de otra funcin. Por ejemplo, supongamos una funcin que evala la
media ponderada de una funcin en tres puntos como
( )
( )
( )
donde ( ) es la funcin que se nombrar en el argumento. El siguiente guin
ilustra una funcin f_av . m que calcula la ecuacin 1.7.2:
Listado 1.22
function mp = f _ av ( nombre _ f , a , b , c )
mp = ( feval ( nombre _ f , a ) + 2 * feval ( nombre _ f , b) ...
+ feval(nombre_f)c))/4;
nombre_f (una variable de cadena) es el nombre de la funcin
( ). Si es la funcin seno, nombre_f ser ' sin . feval (nombre_f, x) es un comando
de MATLAB que evala la funcin llamada nombre_f para el argumento x. Por
ejemplo, y = feval('sin' ,x) equivale a y=sin(x).
En el guin anterior,
Ejemplo 1.2
Evale la ecuacin 1.7.2 para la funcin denida por la ecuacin 1.7.1 con a = 1, b =
27
y se muestra en el listado
f_av.m
comando
89 . 8976
El nmero de argumentos de entrada y de salida de
formato de la funcin
nombre__f.
feval
nombre_f
requiere
[ p , q , s] = feval (nombre_ f , u , v , w , z )
Depuracin de archivos M de funcin: La depuracin de archivos M de funcin es
ms dicil que la de archivos M de guin. Una de las causas es que no es posible
ver los valores de las variables tecleando los nombres de las variables a menos
que se utilicen rdenes de depuracin. El mtodo ms bsico pero ecaz para
crear un archivo M de funcin consiste en convertir en comentario el enunciado de
la funcin en la primera lnea colocando % antes de la palabra function y probar el
archivo M como guin. Cuando haya depurado exhaustivamente el archivo M,
reincorpore el enunciado de la funcin.
El empleo de comandos de depuracin slo se recomienda a usuarios avanzados
de MATLAB.
1.9 CMO GUARDAR Y CARGAR DATOS
Guardar y cargar: Si utiliza save slo, as:
save
matlab . mat. La orden
load es el inverso de save y recupera todas las variables guardadas por save.
Se puede especicar el nombre de archivo colocndolo despus de save; por
todas las variables se guardarn en el archivo por omisin
ejemplo,
save nombre_archivo
guarda todas las variables en el archivo llamado
nombre_archive . mat.
Cuando
load nombre_archivo
Si slo desea guardar ciertas variables, escriba sus nombres despus de
nombre_archivo; por ejemplo,
save nombre_archivo a b c
En este ejemplo, a, b y c se guardan en el archivo llamado nombre_archivo. No
separe nombre_archivo y las variables con una coma. Todas las variables se
28
load nombre_archivo
sin nombres de variables; a continuacin se recuperarn a, b y c.
Guardar y cargar en formato ASCII: Se puede utilizar save para escribir datos
en formato ASCII. Los comandos load y save con la opcin ASCII son importantes
porque permiten exportar datos de MATLAB e importarlos en MATLAB.
Si desea utilizar el formato ASCII, agregue -asciio /ascii despus de los nombres de
las variables; por ejemplo,
datos. tmp.
El
x= [ 1 , 2 , 3 , 4]
y = [ -1 , -2 , -3 ]
save dat1.tmp x y -ascii
Si abre el archivo M dat1 . tmp, se ver as:
1 . 0000000e+00 2. 0000000e+00 3 . 0000000e+00 4 . 0000000e+00
-l .0000000e+00
42.0000000e+00
-3 .0000000e+00
El comando load lee un archivo de datos y lo guarda en una variable, pero la carga
de un archivo en formato ASCII no es exactamente el inverso de save en formato
ASCII. La razn es que si bien save en ASCII puede escribir mltiples variables, load
lee todo el archivo de datos y lo coloca en una variable. Adems, el nombre del
archivo se convierte en el nombre de la variable. Por ejemplo, cargamos un
archivo llamado y_dat. e con
load y_dat . e
el contenido se carga en la variable llamada
tanto, el archivo de datos
y_dat
y_dat
de datos:
(1) un solo nmero
(2) un vector de la
(3) un vector de columna
(4) una matriz
Si tiene necesidad de cargar mltiples variables, cada una deber prepararse en
un archivo de datos ASCII individual.
29
30
Listado 2.1
x= 0: 0.05:10;
y = sin(x).*exp (-0. 4*x)
plot (x, y)
31
plot, como
x= (0:0.05:10);
y = sin(x).*exp (-0. 4*x);
plot (x, y)
xlabel ('x') ; y1abel(y' )
Los dos guiones anteriores producen la misma grca, que se muestra en la
gura 2.1. Los rtulos de los ejes se imprimen mediante los comandos xlabel y
ylabel, que se explicarn mayor detalle posteriormente. La gura 2.2 se graca con
el listado 2.3 que conecta una de puntos en un plano complejo.
Listado 2.3
Si desea gracar con un solo tipo de marca, coloque el smbolo de la marca como
una cadena despus de las coordenadas en los argumentos de plot. La grca
producida por el listado 2.4 se muestra en la gura 2.3.
32
El tipo de lnea por omisin es el continuo. Si desea gracar con un tipo de lnea
en particular, especique la marca de lnea despus de las coordenadas; por
ejemplo,
plot ( x , y , - -)
Se dispone de los siguientes colores:
33
Utilice el smbolo del color igual que los tipos de lnea en el argumento de plot; por
Ejemplo,
plot ( x , y , '+g)
graca los datos con marcas + de color verde.
Graficacin de funciones con fplot: Otra forma de gracar funciones
individuales es con fplot (' nombre_f [xmin, xmax] ), donde nombre es el nombre de
la funcin o del archivo M de funcin que se desea gracar y
clf
mientras que cla borra las curvas gracadas y redibuja los ejes.
Funciones implcitas: Si una funcin est en forma implcita, como por
ejemplo
( )
( )
No se puede expresar como en funcin de ni como en funcin de . No
obstante, la curva se puede gracar utilizando contour. En la seccin 2.3
detallaremos este procedimiento.
axis ( ' of f )
Este efecto se cancela con axis ( ' on ' ) .
El mximo y el mnimo de las coordenadas en la grca se pueden especicar con
grid off elimina la retcula. El empleo de grid por s solo activa y desactiva la retcula
alternadamente. El siguiente guin es un ejemplo del empleo de grid on:
Listado 2.5
X = (0:0.2:10)';
y=sin(x) .*exp(O.4*x);
plot (x, y)
grid on
xlabel ('x' ) , ylabel ( y )
(Vase la gura 2.5 producida por el listado 2.5.)
Grcas polares: Podemos gracar una funcin en coordenadas polares con
polar. La gura 2.6 se graca con el listado 2.6.
Listado 2.6
t = 0: .05:pi+.01;
y = sin (3*t) .*exp (0 . 3*t:);
polar (t , y)
title(Grfica polar) y
35
Listado 2.7
t= .1 : .1 :3 ;
x= exp(t);
y= exp(t.*sinh(t)) ;
loglog (x,y)
grid
xlabel (x); ylabel (y)
El listado 2.8 produce una grfica semilogaritmica con
en la escala logartmica
Listado 2.8
t = . 1: . 1 : 3;
semilogy (t, exp(t.*t))
grid
xlabel(' t ); ylabel ( 'exp(t. *t) ' );
De forma similar, el listado 2.9 produce una grca semilogartmica con
escala logartmica.
en la
Listado 2.9
t=.1:.lz3;
semilogx (t, exp (t . *t:))
gr i d
xlabel(t') ; ylabel('exp(t.*t)');
Mltiples curvas: Si quiere gracar dos o ms curvas con una sola orden plot,
escriba todos los conjuntos de coordenadas repetidamente en la orden plot:
Listado 2.10
x = 0 : O . O5 : 5 ;
36
Listado 2.11
x = 0 : 0 . 05 : 5;
y(1, : ) = sin(x);
y(2, :) = cos(x);
plot (x, y)
Listado 2.12
x = (0:0.05:5) ';
y( : , l) = sin(x);
y( : , 2) = cos(x);
plot (x , y)
Retencin: Hasta aqu hemos gracado todas las curvas en una sola
operacin con un solo comando plot. Sin
embargo, a menudo resulta deseable agregar
una curva a una grca que ya se traz. Esta
gracacin adicional puede realizarse con el
comando hold on (vase la gura 2.8).
37
Listado 2.14
Clear ; clf ; hold off
x = 0 : 0 . 05 : 5;
y = sin (x) ;
plot (x. y)
hold on
z = cos (X)
plot: (x, z)
hold off
Cuando se gracan varias curvas con
hold on,
es recomendable especicar
hold on
una grca que tarda mucho en dibujarse, por la siguiente razn: los comandos
para cambiar parmetros de las guras, como los ejes, el mapa de color, los
38
)
)
Listado 2.18
clear, cl f
xa = -2 : . 2 : 2 ;
ya = -2 : . 2 : 2 ;
[x,y] = meshgrid (xa,ya);
z = x .* exp(-x. ^ 2 - y. ^ 2);
mesh (x , y , z)
title ( sta es una gIfica 3D de z =
x * exp (x2 - y"2) ')
xlabel ('x' ); ylabel ( y ); zlabel ( ' z);
meshgrid para crear arreglos bidimensionales, y ,
donde x es un arreglo de las coordenadas de la retcula y y es un arreglo de las
coordenadas . Estos arreglos x y y sirven para calcular el arreglo bidimensional z.
En el listado 2. 1 8 utilizamos
39
x (j , i) , y (j , i) y z (j , i)
corresponden
/end.
El comando
de
mesh del guin anterior puede sustituirse por mesh (z) . El primer ndice
manual )
40
clabel ( h) .
Listado 2.19
clear , clc, clf, axis ( ' squane)
xm=-2: .2:2; ym=2: .2:2;
[x, y] = meshgrid (xm, ym);
z = x .* exp(-x.2 - y."2);
zmax=max(max(z) ); Zmin=min(min (z) ) ;
dz = (Zmax-zmin) /10;
nivel = zmin + O . 5*dz: dz: zmax;
h=contour (x, y, z , nivel); clabel (h, manual )
title(Grfica de contorno hecha con contou1(x,y, z,nivel) )
xlabel ('x' ); ylabel (y)
El comando contour puede servir para gracar una funcin implcita como
( )
( )
Para gracar la curva, reescribimos la_ ecuacin as:
(
)
( )
( )
y gracamos el contorno de un solo nivel que corresponde a f = 0 (vase la gura
2.15). El siguiente guin ilustra el procedimiento de gracacin:
Listado 2.20
clear , clf
41
quiver (x,y,u,v, s)
s
donde
Listado 2.21
% trazado de retcula triangular
cleaR: , clf
load cell_da
43
Listado 2.22
% Grfica de contorno en una retcula t]: iangular
clear , clf
load cell_da
load point_da
load f__da
tri_cont (cell_da , point_da , f_da , l . 8)
RETCULA CURVILNEA Y CONTORNOS
Suponga que los valores funcionales de
(
) estn dados en los puntos de una
retcula,
(
) Por
(
donde
son
ndices de puntos. El sistema de retcula es
una retcula cartesiana si sus lneas son
paralelas a los ejes de las coordenadas
cartesianas. Por otro lado, si la geometra
en cuestin es compleja podemos utilizar
puntos de retcula ajustados a fronteras
curvas, como se ilustra en la gura 2.18.
44
Listado 2.23
clear , clf
[x, y, f] = tcLdata;
f_max = max (max (f) )
f_1nin = min (min ( f) )
kmax = 2 0;
fOI k=l : kmax
ELV (k) = (k-l) /kmax* (f_maxef_min) *0 9999 + f_min;
end
g_cont (x, y, f, ELV)
O %Para responde: automticamente a la pregunta que hace
45
g_cont de F M 2.3
td_data
es un archivo M de
Listado 2.24
clear: , c l f
for i=1 : 4 % corresponde a la direccin
for j=1 :7 % corresponde a la direccin y
z(j,i) = sqrt(i"2 + j2);
end
46
mesh (z)
produce la grca de malla que se muestra en la gura 2.21.
Color por omisin: En una pantalla a color, las lneas que conectan los
puntos se colorean con el mapa de color por omisin hsv (iniciales en ingls de
matriz, saturacin, valor). Se asigna rojo a los valores tanto mximo como mnimo
de
z (i, j ) . Entre el mnimo el mximo, el mximo el color se determina
linealmente en el orden rojo, amarillo, verde, turquesa, azul, magenta, rojo.
2.5 GRFICOS INTERACTIVOS
El elemento fundamental de los grcos interactivos es la capacidad de un
programa para leer las coordenadas del apuntador del ratn en cualquier posicin.
Esto puede hacerse con ginput en uno de los siguientes formatos:
[x.y1 = ginput
[x,y,botn] = gnput
[x,y,botn] = ginput (n)
suponga que se hace clic con el ratn en cierto lugar dentro de una pantalla de
grcos. Entonces, [x , y] = ginput acumular un nmero ilimitado de puntos hasta
que se pulse la tecla return (intro), as que x y y se convertirn en vectores de
longitud igual al nmero de puntos acumulados. [x , y , botn] = ginput es lo mismo
excepto que tambin se registran los nmeros de botn del ratn. Los nmeros de
botn son l, 2 y 3, contando a partir del lado izquierdo del ratn. [x , y , botn] =
ginput (n) acumula n puntos, pero puede suspenderse pulsando la tecla retum.
El listado 2.31 ilustra el empleo de
ginput.
programa espera hasta que se hace clic con el ratn. Si se hace clic con el botn
izquierdo, se imprimir una marca + roja en la posicin del apuntador. De forma
47
Listado 2.31
clear: , clf , hold off
axis( [0, 10, 0, 10] )
hold on
plot([l.2.Z.l.1] , [2.2.3,3,2])
text (1, 1 .6 , Haga clic dentro del cuadro para terminar )
while 1
[x , y , boton] = ginput (l)
if boton=1, plot: (x,y, ' +x ' ) , end
if boton=2 , plot (x,y, ' oy ) , end
if boton=3 , plot: (x, y , *g) , end
if x>1 S x<2 & y>2 & y<3, bzealqend
end
hold off
UNIDAD 3: ALGEBRA LINEAL
En MATLAB, las matrices, los vectores de columna y los vectores de la se
introducen siguien las mismas reglas que los arreglos, mismas que se explicaron
en el captulo 1. Por ejemplo, lama
B= [
b= (1, 6; 5, 2);
48
c = *1 , 2+ ; (vector de la)
d = [1 ; 7] ; (vector de columna)
Podemos transponer una matriz en MATLAB colocando un apstrofo despus de
la matriz; por ejemplo, con
e=b'
la matriz e se convierte en la transpuesta de la matriz b. Una matriz identidad de m
por m se genera con
s = eye (m)
De forma similar, una matriz nula de m por m es
s = zeros (m)
Una matriz nula de m por n se genera con
s = zeros (m, n)
w = ones (m , n)
Si a es una matriz que ya existe,
producen,
g=
7
23
2
que corresponde al inciso (a) del ejemplo 3.2. La suma y la resta de matrices es
igual que en el de arreglos bidimensionales.
49
AB=IoBA=1
donde I es la matriz identidad, A y B estn en la relacin inversa; es decir, A es el
inverso de B y B es el inverso de A. Por ejemplo,
A=[
B=[
AB=[
= [
A = [1 6 ; 5 2] ,
entonces,
B = inv (A)
produce
50
B =[
A*B
ans =
[
B *A
ans =
[
El comando
A1.1x1 +a1,2x2+a1,3x3++a1nxn=y1
A2,1x1 +a2,2x2+a2,3x3+a2,nxn=y2
Am,1x1+am,2x2+am,3x3+am,nxn=ym
51
A =[
X=[
y=[
x = A\y
Un mecanismo equivalente es
x = inv (A) *y
Sin embargo, el primer mtodo es ms eciente desde el punto de vista
computacional (el tiempo de cmputo del segundo mtodo en MATLAB es
aproximadamente 50% ms largo que para el primero).
Si la ecuacin se escribe en la forma de la ecuacin 3.4.3, la solucin se obtiene
en MATLAB con
52
inv (A) *y
A ^ ( -1 ) *y
y ' * inv (A ' )
Los resultados de las primeras dos estn en forma de vector de columna, mientras
que el de la ltima est en forma de vector de la.
Ejemplo 3.4
Utilice MATLAB para obtener la solucin de
Donde
]
A=[
, Y=[
Solucin
Sea
A = [ 3 2 ; 1 -1 ] ;
Y = [-1 , 1] ';
Entonces,
x = A\y
produce
x=
0 . 2 000
-0 . 8 000
Tambin, si escribimos
z=y'/A'
Obtendremos la misma respuesta en forma de vector de la como
z=
53
-0 . 8000
3.3 DETERMINANTES
El determinante es una cantidad importante asociada a una matriz cuadrada. De
hecho, no podemos obtener una solucin nica de un conjunto no homogneo de
ecuaciones lineales si el determinante de la matriz de coecientes es cero. Esto se
debe a que, si por lo menos una ecuacin de un conjunto de ecuaciones lineales
no es linealmente independiente, el determinante es cero. Si el valor del
determinante es extremadamente pequeo o grande, es seal de que hay errores
graves en la solucin de las ecuaciones. El determinante de una matriz tambin
desempea un papel importante cuando se calculan los valores propios de una
matriz.
El determinante de la matriz A se denota por det(A) o
(3.61)
(3.62)
Es fcil memorizar la regla para una matriz de 3 por 3 como la regla del espagueti.
En la gura 3.3, cada una de las tres lneas continuas conecta tres nmeros. Los
productos a lo largo de las lneas continuas tienen signo positivo en la ecuacin
3.6.2. Los productos de los tres nmeros a lo largo de las lneas punteadas tienen
signo negativo en la ecuacin 3.6.2. Sin embargo, la regla del espagueti no puede
extenderse a una matriz dc 4 por 4 o mayor.
Una denicin formal del determinante
de una matriz A de orden n est dada
por
( ) (
)( )
(3.63)
54
A =[3 , 4 , 1; 0 , 2 , 7; 5 , 1 , 2];
d = det (A)
d=
163
3.4 ELIMINACION DE GAUSS-JORDAN
La eliminacin de GaussJordan es una variacin de la eliminacin de Gauss
mediante la cual se eliminan los nmeros que estn arriba y abajo de un pivote sin
distinguir la eliminacin hacia adelante de la sustitucin hacia atrs. No obstante,
55
a=
1.0000 -2.7857 0.5714 1.7857
-0.0400 0.0400 0.1200 3.0000
-0.2400 1.2400 0.2800
0
A continuacin se eliminan todos los elementos que estn debajo del primer pivote
restando (o sumando) un mltiplo de la primera la:
a=
1.0000 -2.7857 0.5714 1.7857
0 0.0714 0.1429 3.0714
0 0.5714 0.1429 0.4286
El segundo pivote se compara con los elementos que estn abajo. Puesto que la
magnitud del segundo pivote es menor que la del elemento que est abajo, es
necesario pivotear. Luego, la segunda la se divide entre su propio pivote:
a=
1.0000 2.7857 0.57l4 1.7857
0 1.0000 0.2500 0.7500
0 -0.07l4 0.1429 3.0714
Todos los elementos que estn arriba y abajo del segundo pivote se eliminan
restando (o sumando) un mltiplo de la segunda la:
a=
l.0000
0
0
0
1.0000
0
40.1250
-0.2500
0.1250
3.8750
0.7500
3.1250
56
0
1.0000
0
-0.1250 3.8750
40.2500 0.7500
1.0000 25.0000
Los elementos que estn arriba del tercer pivote se eliminan restando (o sumando)
la tercera la multiplicada por el nmero que se va a eliminar. Ahora, la matriz
aumentada es
a=
1.0000
0
0
0
0
1.0000
0
0 1.0000
7.0000
7.0000
25.0000
Aqu, las primeras tres columnas forman una matriz identidad, mientras que la
ltima columna es la solucin.
57