View
204
Download
9
Embed Size (px)
DESCRIPTION
manual básico del Matlab
Citation preview
MATLAB - SIMULINK
2015 - I
2
Introduccin Los grandes avances de la ingeniera moderna se han apoyado enormemente en el uso de las herramientas computacionales, estas facilitan y agilizan los procesos iterativos de clculo, permiten realizar simulaciones y el manejo ptimo de gran cantidad de informacin. Aunque comercialmente se encuentran paquetes computacionales que realizan labores muy especializadas en ingeniera (AutoCAD, Solid Edge, Working Model, etc.) es necesaria la formacin de profesionales en el manejo de las estructuras bsicas de programacin. Estas le permiten solucionar problemas especficos y generar sus propios programas o algoritmos de solucin.
Las herramientas programables, tambin son muy tiles en el proceso de formacin del profesional, porque se reduce el tiempo de clculos manuales, permitiendo un mejor anlisis y comprensin de los problemas. Es normal cometer errores mientras se realiza cualquier calculo, por lo tanto es necesario revisar de nuevo el problema, y esto implica realizar de nuevo todas las operaciones del mismo, duplicando el tiempo necesario para realizar el ejercicio o resolver el problema. De esta forma, la aplicacin de algoritmos computacionales permite identificar fcil y rpidamente errores obtenidos en el proceso de anlisis; y en los procesos de diseo, permiten realizar iteraciones en busca de la mejor opcin (optimizacin).
MATLAB es un software para realizar clculos en ingeniera, ciencias y matemticas aplicadas. Este ofrece un potente lenguaje de programacin, excelentes grficas y un amplio rango de aplicaciones cientficas especializadas. MATLAB es publicado y una marca registrada de The MatWorks, Inc.
3
Contenido
Tema 1: Introduccin al Matlab
Tema 2: Uso de los comandos bsicos
Tema 3: Vectores y matrices. Conceptos Bsicos
Tema 4: Empezando a trabajar con ficheros .m
Tema 5: Introduccin a los grficos en 2 Dimensiones
Tema 6: Introduccin a los grficos en 3 Dimensiones
Tema 7: Programacin con Matlab
Tema 8: Tratamiento de datos. Ficheros
Tema 9: Otros temas de aplicacin
Tema 10: Simulink
4
Tema 1: Introduccin al Matlab
1. El programa Matlab
Matlab resulta un entorno de trabajo tcnico que permite el desarrollo
de clculo numrico y simblico muy adecuado para el mundo cientfico y de
ingeniera. Representa adems un lenguaje de programacin de alto nivel y se
completa con una amplia coleccin de paquetes especficos para aplicaciones
determinadas en campos de la ciencia y la tcnica. Son las toolboxes.
Se caracteriza por su apertura para relacionarse con otros entornos
entre los que podemos destacar el Excel o el C al que puede ser traducido de
forma inmediata. Como su nombre indica, MATLAB es el nombre abreviado de
MATrix LABoratory, MATLAB es un programa para realizar clculos numricos
con vectores y matrices. Puede tambin trabajar con nmeros tanto reales como
complejos, con cadenas de caracteres o con estructuras ms complejas.
Para ciertas operaciones es muy rpido, sobre todo si se aprovechan
sus capacidades de vectorizacin.
Destacar por Ultimo que el mdulo bsico de Matlab ofrece amplias
opciones a la hora de realizar grficos.
2. El entorno de trabajo En este texto nos centraremos en el Matlab 6.5. Destacar que el trabajo
con otras versiones es prcticamente igual y puede hacerse siguiendo este
texto.
MATLAB se puede arrancar como cualquier otra aplicacin de
Windows, clicando dos veces en el icono correspondiente en el escritorio o por
medio del men Inicio. Al arrancar MATLAB, despus de la aparicin de una
pantalla temporal, se abre otra del tipo de la indicada en la figura 1 donde se
pueden destacar los siguientes elementos (si no se obtiene esta pantalla
elegir del men View: Desktop Layout: Default):
5
Figura 1
1. La parte ms importante de la ventana inicial es la Command Window, que aparece a la derecha. En esta sub-ventana es donde se ejecutan los comandos de MATLAB. Esto se realiza a continuacin del prompt caracterstico (>>), que indica que el programa est preparado para recibir instrucciones.
2. En la parte superior izquierda de la pantalla aparecen dos ventanas tambin muy tiles (se puede cambiar de una a otra por medio de la pestaa) son la ventana Launch Pad, que se puede alternar con Workspace.
Launch Pad da acceso a todas las componentes de MATLAB que se tengan instalados: Help, Demos, etc.
El Workspace contiene informacin sobre todas las variables que se hayan definido en esta sesin. Esta pantalla resulta muy til a la hora de trabajar como se ir viendo en los sucesivos captulos.
3. En la parte inferior izquierda aparecen otras dos ventanas, Command History y Current Directory, con el mismo sistema de pestaas para cambiar de una a otra. En Command History se muestran los ltimos comandos ejecutados. Estos se pueden volver a ejecutar haciendo doble clic sobre ellos.
Current Directory muestra los ficheros del directorio desde el que se trabaja. Se puede alterar este directorio desde la propia ventana o desde la barra de herramientas, debajo de la barra de mens con los mtodos de navegacin de Windows. Como se estudiar, esta ventana resulta de gran utilidad para ejecutar desde ella ficheros creados por el usuario.
Nota: Si la pantalla obtenida no es exactamente la deseada, se pueden visualizar las
pestaas activando los correspondientes elementos en el men View.
6
2.1. La ventana de trabajo: Command Window
Esta ventana es la ms importante del programa. Comn a todas las versiones
del Matlab es donde se realizan las operaciones.
Las entradas a ejecucin se escriben a continuacin del smbolo >> y se
ejecutan pulsando Enter.
Debemos pensar que Matlab est creado para realizar tareas y guardar los
resultados o programas que nos llevan a ellos. No se trata de un editor donde ir
escribiendo el trabajo realizado. Por ello en esta pantalla no se nos permitir volver
atrs y rectificar. Todo lo realizado va quedando en ella hasta que decidamos borrarlo.
Existen maneras de recuperar lo escrito para no tener que volver a escribirlo si
deseamos corregir o volver a ejecutar:
- Puede hacerse con las flechas del teclado:
Con ellas se recupera lo escrito con
anterioridad en la lnea del >> pudindose corregir y volver a ejecutar.
- Pinchando dos veces en la lnea correspondiente del Command History.
Esto permite la ejecucin inmediata de lo elegido.
- Pinchando con el botn derecho del ratn sobre la sentencia ejecutada en
el Command Window. Esto permite volver a ejecutar dicha operacin,
copiarla, etc.
Si deseamos poner algn comentario lo haremos precedido de %.
Si de todas formas queremos guardar toda la sesin de trabajo realizada en un
determinado momento podemos seguir los caminos indicados en el tema 2, seccin 3.
La Ayuda en Matlab: El programa dispone de una ayuda completa a la que se puede acceder si la
hemos instalado. Lo podemos verificar desde el Launch Pad y desplegarla pinchando
dos veces sobre ella: Help (figura 2).
7
Figura 2
A este mismo navegador de ayuda del Matlab se puede acceder a travs de la tecla ?
(figura 3).
Figura 3
8
A veces es ms cmodo visualizar los bloque bsicos de la ayuda en la
pantalla de trabajo e ir accediendo a lo que buscamos desde ella. Esto puede hacerse
de la siguiente forma:
Al escribir help en la lnea de trabajo aparecen los tpicos de informacin
general:
>> help
Tecleando help seguido del nombre de alguna de ellas se accede a su
contenido. Por ejemplo:
>> help Matlab\elfun
Elementary math functions.
Trigonometric.
sin - Sine.
sinh - Hyperbolic sine. asin - Inverse sine.
asinh - Inverse hyperbolic sine.
cos - Cosine.
cosh - Hyperbolic cosine.
acos - Inverse cosine.
acosh - Inverse hyperbolic cosine. tan - Tangent.
tanh - Hyperbolic tangent. atan - Inverse tangent.
atan2 - Four quadrant inverse tangent.
atanh - Inverse hyperbolic tangent. sec - Secant.
sech - Hyperbolic secant.
asec - Inverse secant.
asech - Inverse hyperbolic secant. csc - Cosecant.
csch - Hyperbolic cosecant.
acsc - Inverse cosecant.
acsch - Inverse hyperbolic cosecant.
cot - Cotangent.
coth - Hyperbolic cotangent.
acot - Inverse cotangent.
acoth - Inverse hyperbolic cotangent.
Exponential.
exp - Exponential.
9
log - Natural logarithm.
log10 - Common (base 10) logarithm.
log2 - Base 2 logarithm and dissect floating point number.
pow2 - Base 2 power and scale floating point number.
realpow - Power that will error out on complex result. reallog - Natural logarithm of real number.
realsqrt - Square root of number greater than or equal to zero. sqrt - Square root.
nextpow2 - Next higher power of 2.
Complex. abs - Absolute value.
angle - Phase angle.
complex - Construct complex data from real and imaginary parts.
conj - Complex conjugate.
imag - Complex imaginary part.
real - Complex real part.
unwrap - Unwrap phase angle.
isreal - True for real array.
cplxpair - Sort numbers into complex conjugate pairs.
Rounding and remainder.
fix - Round towards zero.
floor - Round towards minus infinity.
ceil - Round towards plus infinity round - Round towards nearest integer.
mod - Modulus (signed remainder after division).
rem - Remainder after division. sign - Signum.
Tecleando help seguido del nombre de un comando concreto se obtiene
informacin sobre l. Por ejemplo:
>> help sin
SIN Sine.
SIN(X) is the sine of the elements of X.
Overloaded methods
2.2. Workspace Esta ventana del espacio de trabajo permite la visualizacin de las variables
almacenadas en memoria. Da una informacin completa sobre ellas: nombre, tipo,
tamao y clase
Pinchando dos veces en la variable se accede al Array editor donde se nos
10
permite modificar la variable en cuestin (figura 4).
Figura 4 Cuando se introduzcan las variables en el tema 2 volveremos sobre esta
ventana que ser de gran utilidad. Desde ella se pueden guardar las variables para
cargarlas en sucesivas sesiones de trabajo, borrar variables, etc.
3. Los distintos tipos de ficheros en Matlab A travs del men File, en el submen New, podemos ver que el programa nos
ofrece, entre otros, la posibilidad de trabajar con ficheros M-file o de Figure (figura 5).
En los captulos siguientes iremos desarrollando cada uno de estos ficheros y sus
funciones.
11
Figura 5
A modo introductorio decir que:
- En los ficheros Figure se guardarn las figuras que el programa nos permite
realizar. Sern ficheros con extensin .fig.
- Los ficheros M-Fife tienen gran utilidad en el programa. Se abren por defecto al
pinchar en el botn de nuevo fichero en la barra de herramientas. Son ficheros que
contienen conjuntos de comandos o definicin de funciones y al teclear su nombre
en la lnea de comandos y pulsar intro, se ejecutan uno a uno todos los comandos
contenidos en l. Siempre y cuando dicho fichero se encuentre en el directorio
actual o est incluido en el Path de Matlab.
- Existen otros ficheros de gran importancia, los de extensin .mat donde se
guardarn las variables deseadas que han sido creadas durante el trabajo.
12
Prctica 1: Introduccin al Matlab
1. Entrar en el programa Matlab. Preparar la pantalla con la ventana de trabajo o
Command Window, el Workspace, el Command History y el Current Directory.
2. Escribir el comentario: Empezamos a trabajar 3. Realizar las siguientes operaciones: 2+2, 2/5, 2x4 4. Volver a ejecutar 2+2 sin necesidad de volver a teclear la operacin.
5. Utilizar la ayuda para realizar las siguientes operaciones: sen(pi), log(3), sqrt(3) 6. Introducir una variable a con el valor 1.234
7. A travs del Workspace visualizar si dicha variable ha sido tomada por el
programa 13 y modificar su valor a 1.125.
13
14
Tema 2: Uso de los comandos bsicos
1. Nmeros y operaciones bsicas El programa trabaja con diferentes tipos de nmeros y expresiones numricas:
nmeros enteros, racionales, reales y complejos.
Operaciones bsicas Comenzaremos realizando con el programa las operaciones ms bsicas entre
nmeros. Trabajamos en la ventana de Command window y para ello se utilizan las
convenciones matemticas estndar.
Por ejemplo, para sumar (figura 6): >> 2+2
ans 4
Figura 6
15
Nota: La respuesta de Matlab se realiza a travs de una variable que va cambiando de
valor y que guarda el ltimo resultado ejecutado. Verificarlo en el workspace.
En general las operaciones bsicas a realizar se hacen segn la siguiente tabla
y con la jerarqua habitual entre ellas:
a+b Suma
a-b Resta
a*b Producto
a/b Divisin
a^b Potencia
Nota: Por defecto Matlab trabaja con unos dgitos de aproximacin para nmeros
decimales. Esto puede cambiarse.
Estableciendo la precisin de los clculos MATLAB trabaja siempre en doble precisin, es decir, guardando cada dato en
8 bytes, con 15 cifras decimales exactas. El formato con el que los datos aparecen en
pantalla es variable. Existen varios modos de trabajo, se indican a continuacin los
ms significativos:
format short punto fijo con 4 decimales format long punto fijo con 14 decimales format short e 4 decimales y forma exponencial. format long e 15 decimales y forma exponencial. format rat formato racional.
El modo de trabajo por defecto en MATLAB es format short.
Ejemplos:
>>3^100
5.1538e+047
>>5+pi
8.1416
16
>>format short e >>3^100
5.1538e+047
>>5+pi
8.1416 e+000
>>format long >>3^100
5.153775207320113e+047
>>5+pi
8.14159265358979
>>format long e >>3^100
5.153775207320113e+047
>>5+pi
8.141592653589793e+000
>> format rat
>> 5+pi
920/113
Tecleando format se vuelve al formato por defecto, es decir, format short.
Nmeros complejos Matlab integra perfectamente el trabajo con nmeros complejos. La letra
minscula i j representa el nmero imaginario 1 (la unidad imaginaria). De esta manera los nmeros complejos se representan mediante expresiones del tipo a+bi
a+bj.
Existen funciones especficas que actan sobre los nmeros complejos:
real(z): obtiene la parte real de z.
imag(z): obtiene la parte imaginaria de z.
conj(z): obtiene el complejo conjugado de z.
abs(z): obtiene el mdulo de z.
angle(z): obtiene el argumento de z.
17
2. Variables Las variables en Matlab tienen forma matricial: fila y columna. As, si
trabajamos con una variable unidimensional se crea con la forma de una fila y una
columna. Para hacerlo slo debemos teclear el nombre elegido e igualarlo a su valor:
>> a=8
Alterar el valor de una variable: Matlab guarda el valor de la variable ejecutada en ltimo lugar, es decir si
volvemos a ejecutar un valor para a ste ser el que mantiene.
Podemos alterar el valor de una variable desde el workspace. Para ello
pincharemos en ella en la ventana del workspace y cambiaremos su valor desde el
editor (figura 7):
Figura 7
Guardar variables y recuperarlas Normalmente es de gran inters guardar los valores de las variables con las
que se ha trabajado en una sesin. Bien porque debe interrumpirse la misma y quiere
recuperarse ms adelante, o bien para utilizarse en nuevos trabajos relacionados con
el que se ha realizado.
La forma ms bsica de guardar las variables es a travs del men File o del
botn de guardar situado en la ventana del Workspace (figura8):
18
Figura 8
O a travs de del men desplegado al pinchar con el botn derecho del ratn sobre la
variable situada en el Workspace (figura 9). Esta opcin nos permite guardar slo las
variables seleccionadas. Destacar que esto tambin ofrece la posibilidad de eliminar la
variable. Algo que puede hacerse de forma global desde el men Edit, submen Clear
Workspace.
Figura 9
Realizar cualquiera de estos procesos nos permite crear un fichero de
extensin .mat con el nombre deseado cuyo contenido sern las variables que se
19
quieren guardar. Al hacerlo, si lo guardamos en el directorio actual aparecer dicho
fichero en la lista de los que tenemos a nuestra disposicin.
Si en una nueva sesin queremos recuperar dichas variables slo tenemos que
cargar el fichero .mat, bien pinchando dos veces sobre su nombre en la ventana del
directorio actual o bien a travs del men File, submen Open.
3. Guardar sesiones de trabajo Existen varios caminos para guardar lo realizado en una sesin de trabajo o en
parte de ella:
- Copiar la parte que nos interese del Command Window y abrir un fichero .m. (figura
10).
Figura 10
Aparece entonces una nueva ventana (figura 11):
Figura 11
20
En ella podemos pegar lo seleccionado y modificar cuantas cosas queramos. Este
fichero se guarda y se puede acceder a l cuando se desee. Debemos tener en cuenta
que segn lo realizado se trata de un fichero de texto, no es ejecutable.
- Con los comandos diary fichero.dia
diary off
Se trata de escribir al comienzo de la parte que deseamos guardar diary seguido del
(nombre del fichero donde guardaremos el trabajo).dia. Al finalizar terminaremos
escribiendo diary off. Veremos que se ha creado un fichero que podemos visualizar
escribiendo type fichero, lo que nos recupera en la pantalla su contenido, o pinchando
dos veces sobre l en el current directory, lo que nos abre una pantalla con su
contenido donde podemos modificar, escribir, etc.
4. Variables carcter Una cadena de caracteres determinan una variable carcter. Su sintaxis es:
a=cadena de caracteres
Como vemos es necesario incluir los caracteres entre comillas.
Se destacan algunos comandos importantes que manejan este tipo de
variables y que se irn usando en temas sucesivos:
str2mat(x1,x2,...): Forma una matriz cuyas filas son las cadenas de
caracteres x1, x2,..., respectivamente.
str2num(x1,x2,...): Convierte la cadena de caracteres en su valor numrico
exacto utilizado por Matlab.
num2str(nmero): Convierte el nmero exacto en su cadena de caracteres
equivalente con la precisin fijada
eval(expresin): Ejecuta la expresin.
disp(cadena): Muestra la cadena tal y como se ha escrito y continua el
proceso.
input(`cadena): Muestra la cadena en pantalla y espera que se presin de una
tecla para continuar.
Veamos algunos ejemplos:
21
>> num2str(pi)
ans =
3.142
Se ha convertido el nmero exacto pi en cadena de caracteres.
>> str2num(15/14)
ans =
1.0714
Se ha convertido una cadena a su valor exacto con la precisin por defecto.
>> str2mat(la primera,la dos,telemadrid,antena 3,telecinco)
ans =
la primera
la dos
telemadrid
antena 3
telecinco
Se ha formado la matriz de texto cuyas filas son las cadenas introducidas como los
argumentos de str2mat.
>> disp(hola)
ans =
hola
Se ha obtenido en pantalla la palabra escrita como argumento del comando.
22
Prctica 2: Uso de los comandos bsicos
1. Calcular 3+5 y 7/8 en una misma orden. 2. Realiza la operacin 174/13. 3. Ofrece la operacin anterior con 14 cifras decimales, en forma de nmero
racional y en forma exponencial.
4. Volver al formato short. 5. Definir las siguientes variables: a=2x8, b=45/6, c=a+b. 6. Guardar las variables a y b en un fichero. 7. Borrar el valor de todas las variables creadas. 8. Recuperar a y b. 9. Utilizando el comando help, acceder a la ayuda correspondiente a las
funciones matemticas, extrayendo la informacin necesaria para realizar la
siguiente operacin: aebc ++= )3/tan()7(log 42 10. Asignar a la variable d el valor 34 y calcular el coseno de d al cubo. Hacerlo de
forma que se ejecuten las dos operaciones pero slo se muestre el ltimo
resultado.
11. Guardar todas las variables. 12. Guardar la sesin en un fichero .m. 13. El trabajo a realizar en los ejercicios siguientes debe guardarse en un archivo
.dia.
14. Introducir los nmeros complejos z=2-3i, u=-1+2i a. Calcular parte real e imaginaria de z
b. Determinar argumento y mdulo de u
c. Calcular z+u y zxu
15. Introducir los complejos z= i+3 , w= i23
21 + . Calcular zxw y z/w.
23
Tema 3: Vectores y matrices. Conceptos bsicos
1. Definicin Matlab est fundamentalmente orientado al trabajo y el clculo matricial.
Veremos que las operaciones estn definidas para el trabajo con este tipo de
elementos. Antes de empezar a manejar y operar con ellas veamos cmo se definen.
Como en casi todos los lenguajes de programacin, en Matlab las matrices y
vectores son variables a las que se les puede dar nombres. Para definir una matriz no hace falta establecer de antemano su tamao (de hecho, se puede definir un tamao y
cambiarlo posteriormente). Matlab determina el nmero de filas y de columnas en
funcin del nmero de elementos que se introducen (o se utilizan). Las matrices se
definen con los elementos entre corchetes y por filas; los elementos de una misma fila
estn separados por blancos o comas, mientras que las filas estn separadas por pulsaciones intro o por caracteres punto y coma (;).
Por ejemplo, el siguiente comando define una matriz A de dimensin (3x3):
>> A=[1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es:
1 2 3
4 5 6
7 8 9
Veamos en el Workspace como las almacena Matlab (figura 12):
24
Figura 12
A partir del momento en que tenemos definidas diversas matrices, se pueden
operar. Matlab puede hacer esto por medio de operadores o por medio de funciones.
2. Operaciones elementales Operaciones bsicas como suma, producto o trasposicin de hacen como se
muestra a continuacin, permitindose algunas operaciones no definidas
matemticamente:
Operador suma (+) Utilizado entre matrices de iguales dimensiones, obtiene la suma elemento a
elemento. Utilizado entre una matriz y un escalar, suma el escalar a cada elemento de
la matriz. Operador resta (-)
Idntico a la suma en su utilizacin.
Operador producto (*) Utilizado entre matrices calcula el producto matricial. Las dimensiones de las
matrices deben ser congruentes. Utilizado entre una matriz y un escalar, multiplica el
escalar por cada elemento de la matriz. Operador producto elemento a elemento (.*)
Se utiliza entre dos matrices de iguales dimensiones y multiplica elemento a
elemento, obteniendo otra matriz de igual dimensin. Operador potenciacin (^)
25
Si c es un entero y A es una matriz cuadrada, A^c calcula el producto A*A*A
.............. *A, c veces.
Operador potenciacin elemento a elemento (.^) A.^B da como resultado una matriz cuyo elemento ij es aij^bij. A.^c da como resultado una matriz cuyo elemento ij es aij^c. c.^A da como resultado una matriz cuyo elemento ij es c^aij.
Operador divisin (/) (\) En Matlab existe el operador divisin a la derecha (/) y divisin a la izquierda
(\).
La utilizacin entre matrices es la siguiente:
- \ divisin-izquierda: A\B Si A es cuadrada A\B=inversa(A)*B. Si A no es cuadrada A\B es la solucin en
el sentido de mnimos cuadrados del sistema AX=B.
- / divisin-derecha: A/B
Si B es cuadrada A/B=A*inversa(B). Si B no es cuadrada, A/B es la solucin del
sistema XB=A.
Operador divisin elemento a elemento (./) (.\) A./B da como resultado una matriz cuyo elemento ij es aij /bij.
A.\B da como resultado una matriz cuyo elemento ij es bij /aij.
Operador traspuesta () A da como resultado la matriz transpuesta de A.
3. Operaciones por medio de funciones En men de la ayuda: matlab\elmat - Elementary matrices and matrix
manipulation y matlab\matfun - Matrix functions - numerical linear algebra, se pueden
encontrar las diversas funciones que se aplican a las matrices. Destacamos las ms
elementales como: inv(A) da como resultado la matriz inversa de A. det(A) da como resultado el determinante de A. trace(A) da como resultado la traza de A. rank(A) da el rango de A
Debe destacarse que la mayora de las funciones definidas en el programa se
ejecutan sobre cualquier matriz aplicndose elemento a elemento.
Por ejemplo:
>> Sin(A)
26
Ofrece como respuesta una matriz del mismo tamao que A cuyos elementos
son el seno del correspondiente elemento de A:
0.8415 0.9093 0.1411
-0.7568 -0.9589 -0.2794
0.6570 0.9894 0.4121
4. Otras formas de definir matrices
Algunas veces, introducir matrices por el teclado no es prctico. Veremos otras
formas ms potentes de generar matrices que luego, tras modificaciones nos pueden
llevar a definir la que nos interesa. Los comandos a utilizar se encuentren en
matlab\elmat.
Algunas de estas funciones son las siguientes:
eye(n) forma la matriz identidad de tamao (nxn)
zeros(m,n) forma una matriz de ceros de tamao (mxn)
zeros(n) forma una matriz de ceros de tamao (nxn)
ones(n) forma una matriz de unos de tamao (nxn)
ones(m,n) forma una matriz de unos de tamao (mxn)
rand: este comando genera nmeros pseudoaleatorios distribuidos uniformemente entre 0 y 1. Cada llamada proporciona un nuevo nmero.
rand(n): genera una matriz de nmeros pseudoaleatorios entre 0 y 1, con distribucin uniforme, de tamao nxn.
rand(m,n): igual que en el caso anterior pero de tamao mxn.
5. Manipulacin de matrices Con este programa es posible crear matrices a partir de una dada, extraer o
cambiar elementos de una matriz y, en general, manipular de casi cualquier forma
estos elementos. Veamos los diversos caminos para realizarlo:
- Crear una nueva matriz que reciba alguna caracterstica o propiedad de la de
partida
- Componer una matriz a partir de submatrices ms pequeas.
- Mediante la manipulacin de los elementos de la matriz de partida.
Caractersticas de una matriz:
27
Destacamos algunos comandos que permiten trabajar con las caractersticas o
elementos de una matriz de partida:
size (A), length(A) nos dan informacin sobre las caractersticas de la matriz A, en este caso dimensin de la matriz o longitud del vector.
zeros (size(A)) genera una matriz de ceros del mismo tamao que A. ones(size(A)) lo mismo con matriz de unos A=diag(x) devuelve una matriz diagonal cuyos elementos de la diagonal son los del vector x.
triu(A) y tril(A) forman matrices triangulares superiores e inferiores a partir de la matriz A.
Composicin de matrices Crear una matriz a partir de submatrices es algo muy sencillo para el programa
que sin embargo es de mucha utilidad por ejemplo a la hora de aadir datos o ampliar
informacin.
Si contamos con la submatrices A=[1 2; 3 4] y B=[1,6], C=[A; B] genera la
matriz:
1 2
3 4
1 6
Si tenemos con los vectores u=[1 2 3 4] y v=[1 6], w=[u v] devuelve:
w=[1 2 3 4 1 6]
Manipulacin de elementos Veremos como extraer, cambiar o eliminar elementos o lneas (filas o columnas
de una matriz).
Dado un vector x, la ejecucin de x(i) devuelve el elemento situado en la posicin i de ese vector.
En el caso matricial A(i,j) devuelve el elemento situado en la fila i columna j de la matriz A.
El operador (:) es de gran importancia en Matlab. Puede decirse que es un operador que respeta el rango. Veamos su utilidad con algunos ejemplos:
>> x=1:10
x =
1 2 3 4 5 6 7 8 9 10
>> x=[0:2:10]
x =
28
0 2 4 6 8 10
El primer nmero indica el valor inicial, el segundo el paso del incremento y el
tercero el elemento final. Como hemos visto si se omite el intermedio, por defecto se
toma la unidad.
Nota: En general, el operador genera vectores fila. Conocido este operador, podemos decir que con l es posible definir variables vectoriales:
x= [p:q] general un vector de primer elemento p, ltimo q y los elementos intermedios
se diferencian en una unidad
x= [p:i:q] devuelve un vector de primer elemento p, ltimo q y los elementos
intermedios se diferencian en i unidades.
Destacar tambin el comando linspace: x=linspace(p,q,n) genera un vector de n
elementos uniformemente espaciados desde p hasta q.
A esto se le puede dar gran nmero de aplicaciones:
Recordando que el vector x es: x=[1 2 3 4 5 6 7 8 9 10]:
>> x(1:4)
ans =
1 2 3 4
>> A=[1 2;3 4;5 6]
A =
1 2
3 4
5 6
>> A(1,:)
ans =
1 2
>> A(:,2)
ans =
2
4
6
29
Prctica 3: Matrices y vectores
1. Introducir los vectores (1 2 3 4 5) y (6 7 8 9 10) asignndoles las variables u y v respectivamente:
a. Determinar 3u, u+v, u-v.
b. Construir un vector cuyos elementos sean los de v incrementados 3
unidades.
c. Determinar un vector de elementos el resultado de multiplicar cada
elemento de u por el correspondiente de v.
d. Calcular un vector de elementos los de u elevados al cubo.
e. Calcular un vector cuyos elementos sean el resultado de elevar cada
elemento de u al elemento de v correspondiente.
2. Introducir las matrices
=
=
318134752
,017345121
BA
a. Calcular A+B, AB, A4
b. Determinar una matriz cuyos elementos sean el resultado de multiplicar
cada elemento de A por el correspondiente de B.
c. Determinar una matriz cuyos elementos sean el resultado de dividir
cada elemento de A por el correspondiente de B.
3. Determinar si es posible: a. La inversa de A y de B. Verificar que el producto de una matriz por su
inversa es la matriz identidad.
b. La traza de B.
c. El determinante y el rango de A.
4. Una empresa compra los siguientes artculos:
Referencia artculo Cantidad de artculo Precio de la unidad (sin IVA)
100 200 190
101 150 345
102 500 69
103 49 598
30
a. Introducir la tabla en mediante tres vectores: referencia, cantidad y
coste.
b. Determinar el coste total de cada producto.
c. Construir una tabla con cada artculo y su coste total.
d. Calcular el coste total a pagar por la empresa incluyendo un 16% de
IVA
5. Introducir los vectores u=(2,3,4) y v=(3,-4,8). a. Determinar la suma y el producto de todos los elementos de u.
b. Calcular el mximo y mnimo de los elementos de v, as como el lugar
donde estn situados.
c. Calcular el producto escalar de u y v.
d. Determinar el mdulo de los vectores.
6. Construir los vectores cuyos elementos sean: a. Los nmeros naturales comprendidos entre el 10 y el 100.
b. (-1, -0,8, -0.6,............, 1.6, 1.8, 2).
c. Desde el 1 hasta el 3 igualmente espaciados y con un total de 38
elementos.
7. Dados u=(1,2,3), v=(4,5,6), a. Construir el vector (0,1,2,3) a partir de u.
b. Construir el vector de elementos los de u y v
8. Construir un vector w con los cuadrados de los 15 primeros nmeros naturales. a. Extraer el cuadrado de 7.
b. Extraer los cuadrados de los elementos que van desde el 2 al 6 ambos
inclusive.
c. Extraer los cuadrados de los elementos que van desde el 7 al 13 ambos
inclusive en sentido inverso
d. Construir, a partir de w un vector con los cuadrados de 1, 3, 7,14.
9. Introducir la matiz
=
047596312421
4382
A
a. Extraer el elemento a23.
b. Sustituir el elememto a22 por 100.
c. Construir una submatriz de A formada por las filas 2, 3 y 4 y las
columnas 1, 2 y 3 de A.
d. Extraer la fila 3 de A.
e. Extraer la columna 1 de A.
31
f. Construir una matriz formada por las filas 1, 2 y 3 de A.
g. Construir una matriz formada por las filas 1 y 4 de A.
10. Construir una matriz A cuadrada aleatoria de orden 3. a. Obtener su inversa, su transpuesta y su diagonal.
b. Transformarla en una matriz triangular inferior.
c. Obtener la suma de los elementos de la primera fila, de la segunda
columna y de la diagonal.
11. Estudiar, segn el teorema de Rouche-Frobenius, y resolver el sistema:
=++=++
=++=++
5465132
1983632
zyxzyxzyxzyx
12. Resolver el sistema
=+++=+++=+++=+++
53251224
232153
tzyxtzyxtzyxtzyx
utilizando:
a. La matriz inversa de los coeficientes si existe.
b. El operador divisin izquierda.
32
Tema 4: Empezando a trabajar con ficheros .m
1. Introduccin Como ya se coment en el punto 3 del tema1, en Matlab tienen especial
importancia los ficherosM de extensin .m. Contienen conjuntos de comandos a
ejecutar o definicin de funciones y se ejecutan al teclear su nombre en la lnea de
comandos y pulsar intro (si se encuentra en el Current Directory) o al pinchar sobre l
en Current Directory con el botn derecho del ratn y elegir run. Representan el centro
de la programacin en Matlab.
Un fichero .m puede llamar a otros ficheros .m y ficheros de comandos pueden
ser llamados desde ficheros de funciones. En estos casos es importante tener en
cuenta la definicin de las variables a utilizar, en la lnea de que tengan un tratamiento
local o global. Por defecto, Matlab considera las variables locales, es decir, aunque
varias funciones tengan la variable x, sta es diferente en cada caso a no ser que haya
sido definida como global.
Son ficheros de texto sin formato y que pueden crearse a partir de un editor de
textos, no obstante, lo mejor es utilizar el editor del propio programa al que se accede
por defecto al abrir un nuevo fichero.
2. Editor Para crear un nuevo fichero .m elegimos new M-File del men File o elegimos
el icono correspondiente. Aparece entonces la pantalla del editor/Debugger donde
podemos ir escribiendo las sentencias.
En el caso de la figura 13 el fichero contiene comentario, dos sentencias y otro
comentario. Las sentencias seguidas de (;) no se mostrarn en pantalla al ejecutar el
fichero.
33
Figura 13
El editor muestra en diferentes colores los diferentes tipos de comandos:
- Verde para los comentarios.
- Rojo para las cadenas de caracteres.
- Negro para las sentencias.
Una posibilidad de ejecutar el fichero es elegir Run del men Debug
(primeramente debe guardarse con un nombre). Es posible ejecutar el mismo por
partes incluyendo breakpoints lo que puede hacerse con el icono de los puntos rojos.
Si se tienen estos puntos de parada se continua de uno a otro con la opcin de
Continue. Es posible visualizar el valor que van tomando los distintos elementos del
fichero posndonos con el ratn sobre ellos (figura 14).
Es interesante ir conociendo los dems botones y mens del editor que nos
permite eliminar los breakpoints, terminar la ejecucin,.... Resulta muy til para
detectar errores y corregirlos y en general para programar
34
Figura 14
Si se desea modificar o visualizar un fichero .m ya creado, es suficiente con
abrirlo desde Open en el men File o hacer doble cick en su nombre desde el Current
Direcrory. Ambas opciones dan acceso al editor y al fichero.
Ya se ha introducido que existen dos tipos de ficheros .m. Se comentarn con
ms detalle cada uno de ellos.
3. Ficheros de comandos. Programas propios del usuario Estos ficheros, tambin llamados scripts, contienen listas de comandos que se
ejecutan sucesivamente cuando se ejecuta dicho fichero, es decir cuando se escribe el
nombre del fichero en la lnea de comandos y se pulsa intro. Es importante destacar
que en estos ficheros, las variables que se crean pertenecen al espacio base del
Matlab, algo que no ocurre en los ficheros de funcin donde las variables pertenecen
slo al espacio de trabajo de esa funcin. Puede comprobarse esto ejecutando el
fichero del la figura 14.
Se ampliar el tratamiento de este tipo de ficheros en el captulo de programacin.
4. Definicin de funciones En el tema 1 vimos que Matlab tiene definidas sus propias funciones, por
ejemplo Sin, Cos,... En general, el programa tiene un gran nmero de funciones
incorporadas, bien se trata de funciones intrnsecas, es decir, del propio cdigo
ejecutable lo que las hace muy rpidas y eficientes, o bien se trata de funciones
definidas en ficheros, normalmente .m, que vienen con el programa. A todo ello se
35
unirn las funciones creadas por el propio usuario. La importante diferencia de estas
ltimas es que, para que el programa pueda trabajar con ellas, el correspondiente
fichero .m debe estar en el directorio actual o en el path.
El trabajo con funciones y el propio concepto de funcin en Matlab es parecido
al que se tiene en C y en otros lenguajes de programacin. Toda funcin tendr:
- Un nombre. Por ejemplo: f.
- Unos argumentos. Van a continuacin del nombre y entre parntesis,
separados por comas si son ms de uno. Por ejemplo: f(x) f(x,y).
- Unas salidas o retornos que son el resultado de la funcin. La ventaja de
Matlab es que pueden ser valores matriciales mltiples que se recogern en
diversas variables que se agruparn entre corchetes. Por ejemplo: p=f(x)
[p,q]=f(x).
4.1. Funciones de librera Ya conocemos, si no puede consultarse la ayuda, los diversos tipos de
funciones que tiene el programa. Se clasifican en:
- Funciones matemticas elementales.
- Funciones especiales.
- Funciones matriciales elementales.
- Funciones matriciales especficas.
- Funciones para la descomposicin y/o factorizacin de matrices.
- Funciones para anlisis estadstico de datos.
- Funciones para anlisis de polinomios
- Funciones para integracin de ecuaciones diferenciales ordinarias.
- Resolucin de ecuaciones no-lineales y optimizacin.
- Integracin numrica.
- Funciones para procesamiento de seales.
Existen funciones (las matemticas trascendentes y algunas bsicas) que
actan sobre escalares o sobre cada elemento de una matriz. Por ejemplo:
>> sin(0)
ans =
0
>> A=[1 2 3]
A =
1 2 3
>> sin(A)
36
ans =
0.8415 0.9093 0.1411
>>
Existen otras que slo actan sobre vectores, no sobre escalares ni matrices.
Por ejemplo, max(x), min(x) devuelve el elemento mximo y mnimo de entre los
elementos del vector x. Tambin nos dan la posicin donde se encuentra.
>> A=[1 2 3]
A =
1 2 3
>> max(A)
ans =
3
>> [p,q]=max(A)
p =
3
q =
3
>>
De igual forma, otras funciones slo se aplican sobre matrices. Son las que se
encuentran en el grupo de funciones matriciales elementales, funciones matriciales
especiales y funciones de factorizacin y/0 descomposicin matricial. Por ejemplo
trace(A) que nos da la traza de la matriz A, [p,q]=eig(A) nos da los valores propios y
vectores propios asociados a la matriz A.
4.2. Funciones creadas por el usuario La palabra function escrita al comienzo de un fichero .m nos permite definir una
funcin constituyendo una de las aplicaciones ms importantes del programa. Su
sintaxis es la siguiente:
function parmetros de retorno=nonbre de la funcin (argumentos)
cuerpo de la funcin
Es muy importante incidir en que los argumentos o variables de la funcin son
de carcter local, es decir, no interfieren con otras variables del mismo nombre que
hayan sido definidas en otra parte del programa, otros ficheros .m o en la ventana de
trabajo. Para que una funcin tenga acceso a variables que no se hayan definido como
parte de sus argumentos, stas deben definirse como globales tanto en el programa
37
principal como en los ficheros .m dnde se quiera tener en cuenta. El comando es
global x,y,.....
El siguiente ejemplo, figura 15, define una funcin f que calcula el cuadrado del valor
que se desee:
Figura 15
Es importante destacar:
- En este caso existe un argumento o variable de entrada: x, y un retorno o
salida: p.
- Si no ponemos los (;) despus de la definicin de funcin y el retorno, al
ejecutar desde la lnea de comandos, el resultado saldra por duplicado o
triplicado, el valor de f(x), el de p y el de ans.
- Para finalizar debemos guardar el fichero. Al hacerlo, el programa por
defecto nos sugiere como nombre el de la propia funcin. Es aconsejable
usarlo para evitar confusiones entre los ficheros y las propias funciones.
Tambin debemos acordarnos de guardarlo en el directorio donde
trabajamos para tener acceso inmediato a la funcin. Si no lo hacemos as,
para utilizarla deberemos antes situarnos en el directorio donde la hayamos
grabado.
38
- Es posible poner todos los comentarios necesarios para, en un futuro
recordar lo que hace esa funcin. Si tecleamos en la lnea de comandos
help seguido del nombre de la funcin, nos aparecern los comentarios que
en su da escribimos en dicho fichero (figura 16).
Figura 16
- Destacar tambin que esta funcin se aplica sobre cualquier tipo de entrada
para la que est definida la operacin. En este caso si lo aplicamos sobre
un vector o una matriz no cuadrada nos dar un mensaje de error. S se
aplica sobre matrices cuadradas calcula el producto de dicha matriz por ella
misma. Si queremos que la funcin f se aplique sobre todo tipo de matrices
calculando el cuadrado de cada elemento es suficiente con definir la
operacin con el punto delante:
function p=f(x);
p=x.^2
4.2.1. Comandos eval y feval
El comando feval: La evaluacin de una funcin tambin puede hacerse a travs del comando
feval cuya sintaxis es:
feval (nombre de la funcin, valor del argumento 1, valor del argumento 2, ....)
39
Por ejemplo, figura 17:
Figura 17
Si ejecutamos en la lnea de comandos:
>> [a,b]=feval('f',3,4)
a =
7
b =
-1
>>
El comando eval
Este comando se utiliza para trabajar con cadenas, algo que se coment en el
tema 1.
Supongamos que definimos una funcin como una cadena de caracteres desde
la lnea de comandos, para ello se utilizan las comillas:
>> f='x^2+5'
f =
x^2+5
El comando eval se utiliza como sigue:
>> x=3;
40
>> eval(f,x)
ans =
14
>>
De forma general se puede hacer:
>> x=3;
>> eval('x ^2+5',x )
ans =
14
>>
Existen algunas funciones relacionadas que trabajan de la misma forma. Tal es
el caso, por ejemplo de:
diff(f,x): Calcula la funcin derivada de f con respecto a x.
diff(f,x,n): Calcula la funcin derivada ensima de f con respecto a x.
Estos comandos entre muchos otros, forman el trabajo de clculo simblico del
programa.
Ejemplos:
>> diff('x^2','x')
ans =
2*x
Si declaramos primeramente la variable x como simblica:
>> syms x;
>> diff('x^2',x,3)
ans =
0
41
Prctica 4: Empezando a trabajar con ficheros .m
1. Construir una funcin que calcule el seno de cualquier valor ms 5. Utilizarla para calcular sen(45)+5, sen(n)+5 con n los 10 primeros nmeros naturales.
2. Repetir el ejercicio anterior para el clculo del cubo de los valores.
3. Define la funcin g(x)=12
3
+
xxx
a. Calcula g(4).
b. Calcula g(x) siendo x=(-2, -1.9, -1.8,........1.8 ,1.9 ,2)
4. Construir una funcin que calcule el ngulo formado entre dos vectores. 5. Define una funcin que permute las filas i y j de una matriz. 6. Construir una funcin ecu(a,b,c) que determine las races de la ecuacin
ax2+bx+c=0.
7. Define como variable global la matriz A=
654321
. Define una funcin que
calcule el incremento de todos los elementos de A en un nmero a elegir.
8. Construir una funcin tal que, dados dos vectores u, v, devuelva un vector con los elementos de u excepto el primero, y los elementos de v excepto el ltimo.
42
Tema 5: Introduccin a los grficos en 2 dimensiones
1. Representacin grfica en Matlab Matlab ofrece gran nmero de posibilidades a la hora de realizar
representaciones grficas. Dibuja curvas planas y superficies. Permite agrupar y
superponer representaciones. Todo ello con variaciones de estilo y de coordenadas.
Permite a su vez realizar grficos de tipo estadstico: de barra, histogramas, etc.
Por las caractersticas propias del programa, los grficos, en concreto los 2D,
estn orientados a la representacin grfica de vectores. Se utiliza una ventana
especial para la creacin de los grficos: la ventana grfica o de dibujo y, dichos
grficos se guardan en ficheros de extensin .fig. Ciertos comandos ejecutados sobre
la lnea de comandos son los que abren esta ventana, otros dibujan sobre la ventana
activa, bien sustituyendo lo que haba en ella, bien aadiendo nuevos elementos
grficos a los que haba. Los iremos estudiando con ms detalle
2. Funciones bsicas para las grficas 2D El comando bsico para la representacin de grficos 2D es el comando plot.
Su sintaxis puede ser:
plot(x,y): dibuja el conjunto de puntos (x,y) donde las abscisas de los puntos se encuentran en el vector x y las ordenadas en el y.
Para representar una funcin f(x) es necesario conocer los valores de puntos
de la forma (x,f(x)). Para ello puede seguirse alguno de estos caminos:
- Definir un vector x con el rango de variacin donde se desea pintar la
funcin. Para ello puede ser muy til el comando linspace(xmin,xmax,n).
Crear el vector y evaluando f en x. Por ejemplo:
43
>> x=linspace(0,10,100);
>> y=sin(x);
>> plot(x,y)
Por defecto, MATLAB dibuja uniendo los puntos con lnea continua de color azul
y un grosor determinado, opciones todas que se podrn alterar como veremos.
- Tambin es posible dibujar una funcin con el comando fplot cuya sintaxis
es la siguiente: fplot(f(x),[xmin,xmax]). As, este comando admite como argumento un nombre de funcin o de un fichero .m en el que est definida
la funcin a representar. Por ejemplo: >> fplot(sin(x)',[-3*pi,3*pi,-1,1])
En general, si no se cierra la ventana de dibujo generada al evaluar un
comando como los anteriotes, si se vuelve a ejecutar uno de ellos, se dibuja sobre
dicha ventana perdindose el primer dibujo. Si se desea representar varias funciones a
la vez las opciones son:
- plot(x,y,x,z) donde x el vector de las abscisas, comn para las dos representaciones, y es el de las ordenadas de la primera representacin y z
las de la segunda.
- fplot([f1(x),f2(x),...],[xmin,xmax]) donde f1, f2, son las funciones a representar en el intervalo de variacin marcado por xmin y xmax.
- Mediante el comando: hold on, hold off. Todos los grficos que se ordene dibujar entre los comandos hold on y hold off se representan en la misma
figura. Si hay una figura abierta se dibujan en sta.
Ejemplo:
>> hold on >> x=[-3*pi:1:3*pi];
>> plot(x,sin(x))
>> plot(x,tan(x),'r')
>> hold off - El comando subplot. Una ventana grfica se puede dividir en m particiones
horizontales y n verticales para representar mxn figuras. Cada una de las
particiones tendr sus ejes aunque las propiedades sern comunes a todas
ellas. La sintaxis es: subplot(m,n,i), donde m y n son el nmero de subdivisiones e i la subdivisin activa. Por ejemplo:
>> x=0:0.1:2*pi;
>> y=sin(x);z=cos(x);t=exp(-x);v=x^2;
>> subplot(2,2,1), plot(x,y)
44
>> subplot(2,2,2), plot(x,z)
>> subplot(2,2,3), plot(x,t)
>> subplot(2,2,4), plot(x,v)
La ventana grfica sera la de la figura 18
Figura 18
2.1. Opciones de dibujo Hemos visto que el comando plot(x,y) dibuja los grficos con unas
caractersticas predefinidas en el programa, es posible alterarlas a partir de plot(x,y,s) donde s se compone de dos dgitos entre comillas. Uno fija el color de la lnea y otro el
carcter a usar en el grfico. Por ejemplo:
>> plot(x,y,'-*g')
dibuja los puntos unidos con una lnea continua, marcando los puntos con *, y en
verde.
Otros tipos de marcadores son: . * x o + (marcan los puntos en el
grfico).
Otros tipos de lnea: los puntos se unen con una lnea con las siguientes
posibilidades de apariencia:
- (lnea continua)
- - (lnea formada por trazos discontinuos)
-. (lnea formada por puntos y trazos)
45
: (lnea formada por puntos)
Los colores vienen dados por: y: amarillo, g: verde, m: magenta, b: azul, c: can, w: blanco, r: rojo, k: negro.
Se puede modificar el grosor de lnea incluyendo la cadena: Linewidth,
nmero_indicativo_del_grosor. Por ejemplo: plot(x,y,'linewidth',2)
En general, se puede obtener una excelente descripcin del comando plot y
otros relacionados con el mediante la ejecucin de help plot:
PLOT Linear plot.
PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix,
then the vector is plotted versus the rows or columns of the matrix,
whichever line up. If X is a scalar and Y is a vector, length(Y)
disconnected points are plotted.
PLOT(Y) plots the columns of Y versus their index.
If Y is complex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)).
In all other uses of PLOT, the imaginary part is ignored.
Various line types, plot symbols and colors may be obtained with
PLOT(X,Y,S) where S is a character string made from one element
from any or all the following 3 columns:
b blue . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
m magenta * star
y yellow s square
k black d diamond
v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right) p pentagram
h hexagram
For example, PLOT(X,Y,'c+:') plots a cyan dotted line with a plus
at each data point; PLOT(X,Y,'bd') plots blue diamond at each data
46
point but does not draw any line.
PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by
the (X,Y,S) triples, where the X's and Y's are vectors or matrices
and the S's are strings.
For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twice, with a
solid yellow line interpolating green circles at the data points.
The PLOT command, if no color is specified, makes automatic use of
the colors specified by the axes ColorOrder property. The default
ColorOrder is listed in the table above for color systems where the
default is blue for one line, and for multiple lines, to cycle
through the first six colors in the table. For monochrome systems,
PLOT cycles over the axes LineStyleOrder property.
PLOT returns a column vector of handles to LINE objects, one
handle per line.
The X,Y pairs, or X,Y,S triples, can be followed by
parameter/value pairs to specify additional properties
of the lines. See also SEMILOGX, SEMILOGY, LOGLOG, PLOTYY, GRID, CLF, CLC, TITLE, XLABEL, YLABEL, AXIS, AXES, HOLD, COLORDEF, LEGEND, SUBPLOT, STEM.
- Ttulos y etiquetas
Matlab permite manejar correctamente anotaciones sobre los grficos y los ejes
mediante la colocacin adecuada de ttulos y etiquetas, rejillas o leyendas. Los
comandos ms usados son:
title (texto): aade el texto entre comillas como ttulo del grfico.
xlabel(texto): aade el texto entre comillas como texto al lado del eje x.
ylabel(texto): aade el texto entre comillas como texto al lado del eje y.
legend(texto): sita la leyenda especificada en el texto.
grid: crea rejillas en los ejes
gtext(texto): permite situar el texto especificado en el punto que sealemos con el ratn dentro de la ventana de trabajo.
- Control de ejes
Tambin aqu Matlab tiene sus opciones por defecto. En muchas ocasiones es
interesante alterarlas. Ya hemos visto que la variacin en el eje x se elige al fijar las
coordenadas x de los puntos. Por defecto el programa ajusta la escala de cada uno de
los ejes de modo que vare entre un mximo y el mnimo valor a representar (es el
47
modo auto). Para definir otros se utiliza el comando axis cuya sintaxis es: axis ([xmin,xmax,ymin,ymax]). axis(auto) devuelve la escala al valor por defecto.
Destacar que:
axis off elimina los ejes del dibujo y axis on los incorpora.
- Entrada de puntos con el ratn
Matlab permite introducir las coordenadas de los puntos sobre los que se encuentra el cursor, al pinchar o al pulsar alguna tecla. El comando que lo realiza es
ginput. Algunas formas de utilizarlo son:
[x,y]=ginput: lee los puntos cada vez que se pincha o se pulsa alguna tecla. Finaliza al pulsar intro.
[x,y]=ginput(n): lee las coordenadas de n puntos
3. La ventana grfica de Matlab.
La mayora de las opciones de cambio en una grfica presentadas con
anterioridad, pueden realizarse desde la pantalla de dibujo. Posibilidades que se han
mejorado en las versiones 6 del programa.
Resulta muy til inspeccionar cada uno de los mens de esta ventana ejecutar
las opciones directamente en ella. As, por ejemplo, el men insert permite
directamente insertar en la figura etiquetas en los ejes, leyendas o ttulo entre otras
cosas (figura 19).
En el men edit aparecen entre otros los comandos Figure Properties, axes
Properties y Current Object Properties, con ellos se abre paso a los editores
correspondientes donde se nos da la posibilidad de cambiar las opciones de dibujo
(figura 20).
48
Figura 19
Figura 20
Veamos el editor de ejes, figura 21:
49
Figura 21
Las pestaas x,y,z nos permiten actuar sobre cada uno de los ejes, poniendo
etiqutas (Label), cambiando el color (Color), cambiando los lmites (Limit),...
Desde la pestaa superior podemos acceder a otros editores como los de linea
(line). Desde los que se pueden cambiar las opciones correspondientes (figura 22).
Figura 22
50
A los mismos editores se llega desde edidt, Current Object Properties, si
tenemos seleccionado, pinchando primeramente el botn de la flecha de la ventana de
dibujo, el elemento que se quiere ajustar, bien los ejes o bien una lnea de las que
componen la grfica.
51
Prctica 5: Grficos 2D
1. Representar grficamente los puntos p1=(1,1), p2=(3,2), p3=(0,4), p4=(-3,6) primeramente conectados y luego aislados.
2. Representar grficamente las siguientes funciones en ventanas diferentes,
f(x)=sen(x), g(x)=x2+3x en el intervalo [0,2]. 3. Representar la grfica de la funcin f(x)=xsen(x) en el intervalo [0,2], con
rejilla.
4. Representar f(x)=sen(x)cos(x) en [0,2], con etiquetas en los ejes, ttulo y en color rojo.
5. Dibujar el polinomio x2+5x-3 con 200 puntos, en color rojo, con trazo discontinuo, con ttulo y con rejilla.
6. Representar en [0,6] y en la misma grfica las funciones: a. f(x)=3xex en azul.
b. g(x)=sen(x+3) en rojo y con trazo discontinuo.
Poner leyendas.
7. Representar la funcin f(x)=3sen(x)-sen(3x) en el intervalo [0,2] con 200 puntos, con ttulo y etiquetas en los ejes.
a. Eliminar los ejes con sus etiquetas y volver a activarlos.
b. Hacer que el eje de abscisas sea el intervalo [0,3] y el rango de las
imgenes el intervalo [0,1].
c. Volver a dibujarla como estaba.
d. Representarla con la misma escala en ambos ejes.
8. Representar en la misma grfica pero en distintas ventanas las siguientes funciones: x, x2, x3, x4, x5, x6. Las pares en color rojo y con rejilla, las impares en
azul y sin rejilla.
9. Resolver grficamente la ecuacin 02.02
)( = xsenx en el intervalo
4
,0 . Para
ello se aconseja seguir los siguientes pasos:
a. Dibujar la grfica de la funcin f(x)=2
)(xsenx en el intervalo dado.
b. Dibujar la recta y=0.02 en color rojo en el mismo intervalo y en la misma
ventana grfica.
c. Poner nombre (x0,y0) al punto de corte con el comando gtext.
d. Determinar grficamente el punto de corte (x0,y0) de ambas curvas.
52
e. Poner leyendas, etiquetas a los ejes y un ttulo que indique cul es el
punto de corte solucin de la ecuacin.
10. Representar la funcin xsenx1 en el intervalo [-1,1] y utilizar el zoom para
observar lo que sucede en las cercanas de (0,0).
11. Representar la curva de ecuaciones paramtricas
==
)2()3(tsenytsenx
53
Tema 6: Introduccin a los grficos en 3 dimensiones
1. Introduccin Matlab est preparado para realizar diversos tipos de grficos en tres
dimensiones. Ya se ha comentado que por las caractersticas del programa, estos
grficos al igual que los de dos dimensiones, estn orientados a la representacin de
vectores. Esto puede causar un poco de dificultad al principio y habr que preparar los
elementos a representar previamente.
Se pueden realizar grficos 3D tanto de lneas como de mallas o superficies.
Para ello los pasos a seguir sern siempre los mismos:
- Preparar los datos.
- Usar la funcin grfica 3D adecuada.
- Retocar las propiedades del dibujo a nuestro gusto.
Destacar que la gran mayora de los elementos estudiados para grficos 2D
tienen su correspondiente aplicacin para 3D.
2. Funciones bsicas para las grficas 3D La primera frmula de grficos en tres dimensiones es la funcin plot3 que
resulta anlogo al comando plot en grficos bidimensionales. Dibuja puntos cuyas
coordenadas estn contenidas en tres vectores x,y,z. Su sintaxis puede ser:
plot3(x,y,z). Como iremos viendo, a este comando de le pueden aadir opciones de dibujo en la misma lnea que se present para el comando plot en el caso 2D.
Ejemplo:
>> x=[1,2,3]; y=[-1,4,7]; z=[0,-3,5];
>> plot3(x,y,z,*)
54
Veremos con detalle como se pueden dibujar funciones de dos variables,
z=f(x,y). Lo primero que debemos pesar es que por las caractersticas propias de
Matlab, lo primero es crear el conjunto de puntos (x,y,z) de la grfica de la funcin, es
decir, con z=f(x,y), que se desean representar. Para ello es necesario considerar los
vectores x e y que contienen las coordenadas en una y otra direccin de la retcula
(grid) sobre la que se dibujar la funcin. A partir de ellos se genera la malla donde
estarn todos los valores (x,y) sobre los que se evaluar a funcin para generar los
puntos tridimensionales a representar. As, creamos dos matrices X e Y a partir del
comando meshgrid(x,y) que representan las coordenadas x e y de los puntos a representar:
>>x=[1,2,3,4]; y=[-1,0,1,2];
>> [X,Y]=meshgrid(x,y)
X =
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Y =
-1 -1 -1 -1
0 0 0 0
1 1 1 1
2 2 2 2
Como vemos en este caso hemos generado una malla formada por 16 puntos
de coordenadas (1,-1),(1,0),(1,1),(1,2),(2,-1),...(2,2),.......,(4,-1),...(4,2). Es bueno
sealar que por el proceso indicado debe tenerse cuidado con las longitudes de los
vectores x e y ya que al generar la malla, el nmero de puntos con los que se va a
trabajar aumenta grandemente.
Slo queda evaluar la funcin f sobre esta malla, es decir Z=f(X,Y) y
representar los valores. Para ello se utilizan los comandos:
- Mesh(Z) que dibuja en perspectiva la funcin en base a una retcula de lneas de colores con eliminacin de lneas ocultas (figura 23).
- Surf(Z) dibuja la superficie faceteada tambin con eliminacin de lneas ocultas (figura 24).
Destacar que existen otras formas ms generales de estas funciones para la
representacin paramtrica: mesh(x,y,z) dibuja una superficie de puntos (X(i,j),Y(i,j),
Z(i,j)).
55
Figura 23
Figura 24
56
2.1. Opciones de dibujo Hemos visto que las funciones anteriores dibujan los grficos con unas ciertas
caractersticas. De forma muy parecida a lo explicado para el caso bidimensional,
podremos alterar estas caractersticas a nuestro gusto. Veremos como hacer algunos
cambios desde la lnea de comandos pero resulta ms cmodo trabajar en la propia
ventana de dibujo. Como la mayora de las opciones de cambio en una grfica,
pueden realizarse desde la pantalla de dibujo, vuelve a resultar de gran utilidad
inspeccionar cada uno de los mens de esta ventana y ejecutar las opciones
directamente en ella.
- Ejes, puntos de vista, lneas ocultas La localizacin del punto de vista o la direccin de observacin de la figura
representada puede alterarse mediante el comando view de sintaxis: view(azimut, elevacin). Donde azimut es el ngulo de rotacin en un plano horizontal medido sobre el eje z a partir de un eje x en sentido antihorario, y elevacin es el ngulo de
elevacin respecto al plano xy. Se miden en grados.
De la misma forma se altera desde el men view, camera/toolbar.
Para el control de los ejes se utiliza el comando axis que ya se present en 2D,
en su versin tridimensional. Tambin se accede al tratamiento de los ejes desde el
mun edit/axes properties.
- El color En cuanto a la utilizacin del color, un mapa de colores en Matlab se defina
mediante una matriz de tres columnas con valores entre 0 y 1, que representan la
intensidad de rojo, verde o azul (R,G,B). El comando colormap acta sobre la figura activa cambiando sus colores. No obstante, existen mapas de colores ya predefinidos
en el programa. Pueden elegirse por ejemplo, desde el la pestaa colormap en el
editor de propiedades de la superficie.
3. Lneas de contorno Para los grficos en tres dimensiones es de gran utilidad la representacin de
curvas de contorno o de nivel. Algo que puede verse como otra forma de
representacin, figura 25. Para ello Matlab cuenta con el comando contour. Puede
usarse con diferentes sintaxis, por ejemplo:
- contour(Z,n), n representa el nmero de lneas de nivel. Si no se pone se utiliza un nmero por defecto.
57
- contour(Z,v), donde v es un vector con los valores de las curvas de nivel a dibujar.
Figura 25
58
Prctica 6: Grficos 3D
1. Representar grficamente los puntos siguientes: p1=(1,1,1), p2=(3,2.0), p3=(0,4,2), p4=(-3,6,8) primeramente conectados y luego aislados.
2. Representar las funciones f(x,y)=sen(x)cos(y) en el intervalo [0,2]x[0,2]. Poner ttulo al dibujo y etiquetas en los ejes.
a. Realizarlo con el comando mesh.
b. Representarlo con el comando surf.
c. Realizarlo de forma seguida primero con mesh y luego con surf para
visualizar las diferencias. Utilizar el comando pause.
3. Representar la grfica anterior junto con la de g(x,y)=ycos(x) en el intervalo
[0,2]x[0,2] pero en distintas ventanas. 4. Representar en la misma figura y sobre los mismos ejes la funcin
22 yx + enfocada desde distintos puntos de vista. 5. Representar grficamente la funcin f(x,y)=x2-y2 en el cuadrado [-2,2]x[-2,2].
a. Representar en la misma ventana el plano tangente a la superficie en el
origen de coordenadas.
b. Visualizarla desde distintos puntos de vista.
c. Cambiar el color.
d. Utilizar el zoom para visualizar ciertas zonas.
6. Representar f(x,y)=sen(x+y2) en [-2,2]x[-2,2]. Poner rejilla y volverla a quitar. a. Representar algunas curvas de nivel.
b. Representar las curvas a alturas 0.2,-0.1,0,0.1,0.2,0.3.
c. Representar en la misma ventana grfica la superficie y las curvas de
nivel
7. Dibujar una esfera de radio 1 con 30 puntos. Usar el comando sphere(n). 8. Dibujar un cuadrado de vrtices (1,0),(2,1),(1,2),(0,1) con el interior del mismo
en verde. En el mismo dibujo representar un segmento de extremos (2,1) y
(0,1) en color azul. Comando fill(x,y,color).
9. Dibujar el tringulo de vrtices (0,0,0), (1,2,3), (3,5,4) con el interior en rojo. Comando fill3
10. Representar la hlice
=+=+=
ttztsentyttx
4)()(21)(
)cos(1)( t[0,4] y modificar algunas de sus
caractersticas grficas, grosor, etiquetas, etc.
59
Tema 7: Programacin con Matlab
1. Introduccin Matlab puede utilizarse como un lenguaje de programacin que incluye todos
los elementos necesarios. Aade la gran ventaja de poder incorporar a los programas
propios del usuario todas las aplicaciones que ya tiene implementadas, lo cual facilita y
simplifica en muchos casos la programacin. Tambin ser de gran utilidad tener en
cuenta la estructura vectorial y matricial del programa.
Como ya hemos adelantado, los programas en Matlab suelen escribirse en los
ficheros .m (M-ficheros). Lo normal es que sea en ficheros Scrips que resultan los ms
sencillos. A veces, no tienen argumentos de entrada ni salida y estn formados por un
conjunto de instrucciones que se ejecutan secuencialmente. Por ejemplo, el fichero de
la figura 26 representa una curva cuando se escribe su nombre, en este caso pinta,
en la lnea de comandos y se pulsa intro.
Figura 26
60
Se puede decir que este ya es un programa creado en Matlab.
La estructura general de un programa MATLAB es la siguiente:
1) Comentarios: inicialmente, pueden aparecer lneas comentadas en las que
se da un ttulo al programa y se realiza una breve descripcin del mismo. Esta
parte es opcional, pero es til introducirla ya que se nos permite acceder
directamente desde la ventana de comandos a la informacin comentada
mediante la utilizacin del comando help, en la forma:
>> help nombre del programa
2) Entrada de datos si se requiere: los datos necesarios para la resolucin del
problema deben suministrarse al programa mediante la lectura de sus valores
por teclado o desde un fichero de datos.
3) Algoritmo: desarrollo de un procedimiento que permite obtener la solucin
del problema en funcin de los datos de entrada.
4) Salida de datos: los datos obtenidos como solucin del algoritmo se deben
ofrecer al usuario mediante escritura en pantalla o en un fichero de datos.
2. Entrada y salida de datos
Existe un comando para introducir informacin en un programa cuando
estamos en modo de ejecucin. Este comando es: v=input(Cadena de Caracteres)
input realiza dos tareas:
1) Imprime en pantalla la cadena de caracteres que lleva como argumento.
2) Los datos que el usuario teclea en respuesta al letrero, los introduce en la
variable v.
Para que un programa en modo de ejecucin pueda escribir letreros, avisos,
etc. por pantalla, se utiliza el comando: disp(Cadena de Caracteres) que escribe la cadena de caracteres que tiene como argumento en pantalla.
Para escribir el valor de una variable, se utiliza el comando: disp(v) que muestra en pantalla el valor de la variable v.
Para escritura de texto y/o datos en pantalla, se puede utilizar la funcin:
sprintf(formato, variables).
Ejemplos:
>> n=input(teclea el nmero de elementos)
61
>>disp(este valor no es adecuado)
3. Operadores Ya hemos estudiado operadores de tipo aritmtico. En este momento puede
ser de utilidad conocer otros tipos de operadores:
Operadores relacionales:
< Menor = Mayor o igual > Mayor == Igualdad
~= Desigualdad find(A) Devuelve los ndices de los elementos no nulos
find(A condicin) Devuelve los ndices de los elementos de A que cumplen la condicin
Operadores lgicos ~A Negacin lgica A & B Conjuncin lgica (and) A | B Disyuncin lgica (or) xor(A,B) or exclusivo, vale 1 si A o B, pero no ambos, valen 1
Todos estos operadores actan elemento a elemento en matrices y vectores.
Las dimensiones y nmero de elementos de las tablas deben coincidir.
Ejemplo:
>> A=1:9; P=(A>2)&(A
62
Sentencia for: Permite ejecutar de forma repetitiva un comando o grupo de comandos. La
forma general de un bucle for es:
for variable=expresin
comandos
end
Por ejemplo:
for i=1:3;v(i)=1;end;v
1 1 1
>>
As, un bucle for siempre empieza por la sentencia for y termina con la end. En
su interior incluye todo un conjunto de comandos que se separan por comas. En
algunos casos es bueno poner puntos y comas para evitar repeticiones en las salidas.
Por supuesto puede utilizarse en ficheros .m (figura 27).
Figura 27
Sentencia if:
63
Mediante esta estructura se pueden ejecutar secuencias de comandos si se
cumplen determinadas condiciones. Su sintaxis es:
If condicin
comandos
end
De forma ms general:
If condicin
comandos 1
else
comandos 2
end
que ejecuta comandos 1 si la condicin 1 es cierta y comandos 2 si es falsa.
Como en el caso de for, se pueden anidar sentencias if:
If condicin 1
comandos 1
elseif condicin 2
comandos 2
elseif condicin 3
comandos 3
...
else
end
Mediante el siguiente ejemplo se imprime en pantalla una frase, de tres posibles,
segn sea el valor de la variable n:
N=input(introduce un nmero natural) If n=0,
disp(n es cero)
elseif rem(n,2)==0
disp(n es par)
else
disp (n es impar)
end
Sentencia while:
64
Tambin dispone de la sentencia haz mientras que ejecuta un bucle mientras una condicin sea cierta. Su sintaxis es:
while condicin
comandos
end
en el interior (comandos) se incluyen todo tipo de comandos que se separan por
comas y que se ejecutan mientras la condicin sea cierta.
Como ejemplo calcularemos el mayor nmero factorial que no esceda a 10100:
n=1;
while prod(1:n)
65
Prctica 7: Programacin con Matlab
1. Se pide:
a) Definir la funcin
>>x=0:.1:1
>>y=[x;exp(x)];
>>fid=fopen(resultado.txt,w);
>> fprintf(fid,%6.2f %12.8f \n, y);
Este programa escribira en el fichero resultado.txt los siguientes valores:
0.00 1.00000000
0.10 1.10517092
0.20 1.22140276
0.30 1.34985881
70
........
1.00 2.71828183
Comando fscanf La lectura de datos a partir de un fichero ASCII se realiza mediante los
comandos:
[A,cont]=fscanf(fid,formato) que lee datos con el formato especificado del fichero abierto con el identificador fid, en un vector columna de nombre A. cont
es el nmero de datos ledos.
[A,cont]=fscanf(fid,formato,size) que lee datos con el formato especificado del fichero abierto con el identificador fid y los escribe en la matriz A de tamao
size. cont es el nmero de datos ledos.
Ejemplo:
Se supone que en la carpeta de trabajo de MATLAB: work, se encuentra un archivo
de nombre datos.txt, cuyo contenido es:
1 2 3 4 5
6 7 8 9 10
>>fid=fopen(datos.txt,r)
>>[A,cont]=fscanf(fid,%d)
La salida es el vector columna de contenido:1 2 3 4 5 6 7 8 9 10 y cont=10.
Otra posibilidad:
>>[A,cont]=fscanf(fid,%d,[2,5])
A=
1 3 5 7 9
2 4 6 8 10
cont=10
Nota: Si realizamos estas operaciones seguidas tendremos problemas en la segunda
debido a que el fichero ha sido anteriormente ledo y es necesario rebobinarlo si se
quiere leer de nuevo. Entonces se utiliza
>>frewind(fid)
Otras posibilidades:
>>[A,cont]=fscanf(fid,%d,[3,3])
A=
71
1 4 7
2 5 8
3 6 9
cont=9
>>[A,cont]=fscanf(fid,%d,[4,4])
A=
1 5 9
2 6 10
3 7 0
4 8 0
cont=10
>>[A,cont]=fscanf(fid,%d,[4,inf])
>> %se est fijando como nmero de columnas de la matriz el valor mnimo que
permita la lectura de todos los datos del fichero. La salida es la misma que en el caso
anterior.
3. Trabajando con Excel
Matlab permite una muy buena conexin con este programa. Ya hemos
comentado que si los datos son adecuados, la opcin copiar en Excel y pegar en
Matlab entre corchetes y dando un nombre a la variable creada funciona directamente.
Esto nos obliga a que los nmeros estn definidos en Excel como en Matlab, por
ejemplo, los decimales con puntos y no con comas.
En general, por ejemplo si en el fichero existen cabeceras, lo apropiado es
importar el fichero segn lo explicado en el punto 2.1. Se crean entonces variables del
tipo: data (con los valores numricos), colheadest (con las cabeceras) y textdata (con
el texto de las cabeceras). No existe as ninguna incompatibilidad de formatos.
Si se dispone de la toolbox exlink la conexin con este programa es total y
directa:
Elegir en Excel del men Herramientas/Complementos/examinar: (Matlab-
toolbox-excelink). Aparece entonces en excel una barra de herramientas con: put
matriz, get matriz y evaluate.
- Excel-Matlab: Se crean unos valores en Excel y se selecciona put matriz.
Se abre Matlab y pregunta por el nombre para esa matriz. Se crea as una
nueva variable en el Workspace sin ningn problema de compatibilidad.
72
- Matlab.Excel: Se utiliza get matriz. Esto abre el Workspace de Matlab y
desde all se exporta la matriz.
73
Prctica 8: Tratamiento de datos. Ficheros
1. Crear un fichero de texto con el block de notas con los datos: 1,2,3,4,5,6,7,8,9,10. Importarlo desde Matlab y crear un vector con su
contenido.
2. Sea el fichero datos.txt que contiene la siguiente informacin:
7 5 2 1 9 3 4 5 7 8 4 Almacenar estos datos en una matriz A de 4 filas y 3 columnas.
3. Crear un fichero de Excel con las cantidades compradas de varios productos y su importe por unidad. Cargarlo en Matlab y calcular all el coste total de la
compra.
74
Tema 9: Otros temas de aplicacin
1. Introduccin Existen muchos elementos interesantes y aplicaciones del Matlab que no se
han comentado a lo largo de los temas. Se invita al lector a que investigue sobre ellos
segn las lneas que sean ms afines a su entorno de trabajo o estudio. No obstante,
se quiere terminar este texto con un captulo dedicado a introducir una variedad de
conceptos ms o menos usuales que no se han incluido anteriormente.
2. Polinomios El programa dispone de comandos especficos para realizar las operaciones
ms comunes con polinomios, tal es el caso de bsqueda de races, evaluacin en
determinados valores, diferenciacin, interpolacin y ajuste.
Destacar que los polinomios en Matlab se introducen a partir de vectores cuyos
elementos son los coeficientes del mismo. Si alguno no aparece se introduce como 0.
As, x3+3x2-5 ser [1,3,0,-5].
Los comandos son:
- polyval(u,x), evala el polinomio de coeficientes incluidos en el vector u en el valor indicado en x.
- conv(u,v), da los coeficientes del polinomio resultado de multiplicar los polinomios de coeficientes incluidos en los vectores u y v.
- [p,q]=deconv(u,v), devuelve los polinomios cociente y resto de la divisin entre los polinomios u y v.
- roots(u), calcula las races del polinomio u - polyder(u), nos da el polinomio resultado de derivar u. - polyfit(x,y,n), polinomio de grado n que ajusta los puntos (x,y) en el sentido
mnimos cuadrados.
75
- poly(v), crea un polinomio cuyas races son las indicadas en el vector v.
3. Ajuste de datos. Interpolacin Adems de la bsqueda de un polinomio interpolador, Matlab permite la
interpolacin a travs de un gran nmero de tcnicas. Destacaremos algunos de los
comandos que realizan este tipo de aplicaciones:
- yi=interp1(x,y,xi), da como resultado un vector yi tal que (xi,yi) es el conjunto total de puntos hallados por interpolacin unidimensional del
conjunto de puntos (x,y).
- yi=interp1(x,y,xi,mtodo), realiza interpolacin mediante el mtodo elegido (nearlest, lineal, cubic, v5cubic, spline o pchip).
- zi=interp2(x,y,z,xi,yi), da como resultado un vector zi tal que (xi,yi,zi) es el conjunto total de puntos hallados por interpolacin bidimensional del
conjunto de puntos (x,y,z).
- yi=spline(x,y,xi), da como resultado un vector yi tal que (xi,yi) es el conjunto total de puntos hallados por interpolacin cbica spline del
conjunto de puntos (x,y).
4. Matrices dispersas Existen trabajos, especialmente en ingeniera, donde es necesario utilizar
matrices de gran tamao pero con un nmero importante de ceros en su interior
(matrices dispersas). Operar con este tipo de matrices a travs de mtodos
convencionales puede implicar tiempos muy grandes para el clculo. Matlab dispone
de funciones para trabajar con estas matrices dispersas que ahorra tiempos de
ejecucin.
El programa almacena estas matrices dispersas guardando en memoria
solamente los elementos no nulos junto con la posicin que ocupan en la matriz. As,
utiliza tres elementos, los valores de las filas de elementos no nulos, los valores de las
columnas de estos elementos y el valor que tienen.
Ejemplo: La matriz
=
0002900003200001
A se introducira como:
>> A=sparse([1,2,2,3,4],[1,2,3,4,1],[1,2,-3,9,2])
A =
(1,1) 1
(4,1) 2
76
(2,2) 2
(2,3) -3
(3,4) 9
Para esto puede ser de utilidad el comando find, [i,j,v]=find(A) tiene como salida
el vector de las filas y el de las columnas de los elementos no nulos de la matriz A as
como el valor de dichos elementos.
De igual forma, el programa permite convertir una matriz llena en dispersa a
travs de este comando:
>> B=[1 2 0 0 0 0;0,9,0,0,8,0;0,0,0,-2,0,1]
B =
1 2 0 0 0 0
0 9 0 0 8 0
0 0 0 -2 0 1
>> S=sparse(B)
S =
(1,1) 1
(1,2) 2
(2,2) 9
(3,4) -2
(2,5) 8
(3,6) 1
El comando full realiza la operacin contraria, el llenado de la matriz dispersa
>>full(S)
ans =
1 2 0 0 0 0
0 9 0 0 8 0
0 0 0 -2 0 1
En el men de ayuda matlab\sparfun - Sparse matrices se encuentran los
comandos para trabajar con este tipo de matrices. El criterio general para trabajar con
matrices dispersas en Matlab es que casi todas las operaciones matriciales estndar
funcionan sobre ellas al igual que lo hacen sobre las llenas.
5. lgebra lineal Se destacan algunos temas relacionados con lgebra que pueden ser de
inters y que se realizan con el programa a travs de comandos especficos.
77
Valores propios: El trabajo con valores y vectores propios es esencial en numerosas disciplinas.
Matlab permite trabajar con esta materia con comandos entre los que destacamos:
eig(A): Halla los autovalores de la matriz cuadrada A. [P,D]=eig(A): Determina la matriz diagonal D de los autovalores de A y la matriz P de columnas los autovectores correspondientes de forma que AP=PD.
Jordan(A): Halla la matriz cannica de Jordan de la matriz A. [P,J]= Jordan(A): Halla la matriz cannica de Jordan de la matriz A y la matriz de paso P de forma que P-1AP=J.
poly(A): Devuelve el polinomio caracterstico de la matriz A
Descomposicin de matrices: Matlab trabaja con mtodos de descomposicin matricial como el LU,
Cholesky, qr,...
[L,U]=lu(A): Descompone la matriz A en el producto A=LU, siendo L una matriz triangular inferior y U una superior.
[L,U,P]=lu(A): Da una matriz triangular inferior L, una superior U y una de permutacin P de forma que PA=LU.
R=chol(A): Devuelve la matriz triangular superior R tal que RR=A siempre que A sea definida positiva. En caso contrario devuelve un error.
[Q,R]=qr(A): Devuelve la matriz triangular superior R de igual dimensin que A y la matriz ortogonal Q de forma que A=QR.(Puede aplicarse a matrices no
cuadradas)
[Q,R,E]=qr(A): devuelve la matriz triangular superior R de igual dimensin que A, la matriz ortogonal Q y la matriz de permutaciones E de forma que de forma
que AE=QR.
Resolucin de ecuaciones: Matlab permite resolver ecuaciones. Algunos de los comandos para realizarlo
son:
solve(ecuacin,x): Resuelve la ecuacin en la variable x. solve(ecuacin1,eciacin2,...ecuacinn,x1,x2,...xn): Resuelve el sistema de ecuacin en las variables x1,...xn.
x=fzero(funcin,x0): Halla un cero de la funcin ceca de x0.
78
[x,feval]=fzero(funcin,x0): Da tambin el valor de f en x.
Nota: Existen numerosos comandos que intentan resolver ecuaciones y sistemas
segn diversos mtodos numricos.
79
Prctica 9: Otros temas de aplicacin
1. Determinar las races del polinomio x3-6x2-72x-27, evaluarlo en alguna de ellas para verificar que lo son.
2. Introducir el polinomio 2x3+4x2+1, se pide: a. Calcular sus races.
b. Evaluarlo en x=3.
c. Crear un polinomio de races 1,2,5.
d. Multiplicar ambos polinomios.
3. Determinar el cociente y el resto de dividir los polinomios 5x5+3x3-x2+x-1 y 2x2-3x+2. Derivar el primero.
4. Construir una funcin que sume polinomios de cualquier grado y utilizarla para sumar los polinomios del ejercicio anterior.
5. Determinar el polinomio interpolador de segundo grado que pasa por los puntos (-1,4), (0,2), (1,6). Dibujar los puntos y el polinomio en el intervalo [-2,2].
6. Determinar el polinomio de ajuste de grado 1 en el sentido mnimos cuadrados para los puntos (1,2), (-2,7), (-1,6). Dibuja los puntos y el polinomio en un
intervalo adecuado.
7. Los directores de una empresa se renen para analizar la situacin financiera de la misma. Al estudiar la tabla:
AO Beneficios
1 1
2 4
3 8
4 15
5 25
prevn que la curva que mejor representa los beneficios durante los prximos
aos es un polinomio de segundo grado. Determinar los beneficios que
esperan obtener el prximo ao.
8. Hallar y representar 30 puntos de interpolacin (x,y) de la funcin sen(x) para valores de x igualmente espaciados entre 0 y 10.
9. Repetir el problema 8 para interpolacin spline y comparar las grficas obtenidas.
10. Se considera un conjunto de temperaturas medidas sobre las cabezas de los cilindros de un motor para utilizar en coches de carreras. Los tiempos de
80
funcionamiento del motor en segundos y las temperaturas en grados
Fahrenheit son las siguientes:
Tiempo 0 1 2 3 4 5
Temperatura 0 20 60 68 77 110
Realizar una regresin lineal que ajuste la temperatura en funcin del tiempo.
Repetirlo para regresiones polinmicas de grados 2, 3 y 4, representando los
resultados.
11. Definir las siguientes matrices de forma que slo se guarden los elementos no nulos:
=