APUNTES DE MATLAB

C´andido Pi˜ neiro G´omez
1
Cap´ıtulo 1
Comandos B´asicos y Matrices
1.1. Introducci´on
Matlab es un lenguaje de alto nivel orientado al desarrollo de c´alculos t´ec-
nicos. Integra c´alculo, visualizaci´on y programaci´on en un entorno interactivo
de f´acil manejo. Los problemas y las soluciones se expresan en la notaci´ on
matem´atica habitual.
El elemento b´asico de informaci´on es una matriz a la que no hace falta
asignar dimensiones con anterioridad. Por tanto, pueden abordarse problemas
que requieren una formulaci´ on vectorial o matricial de un modo m´ as f´acil que
en un lenguaje tipo FORTRAN o C. El nombre MATLAB es una abreviatura
de Matrix Laboratory.
1.2. Iniciaci´on a Matlab
Para entrar en Matlab, debemos hacer clic dos veces en el icono corres-
pondiente. Para salir, tenemos dos opciones: 1) en File podemos hacer clic
en exit y 2) podemos teclear quit y pulsar enter.
Una vez que hemos entrado en Matlab, escribiremos las instrucciones
en la ventana de comandos (command window) a partir del s´ımbolo >>
2
(denominado prompt). Si se quiere salvar en un archivo toda una sesi´on de
trabajo, podemos proceder como sigue:
Iniciamos la sesi´on tecleando:
>> diary nombre.txt
y terminar la sesi´on tecleando
diary off
Autom´aticamente Matlab crea un archivo con la denominaci´on nombre.txt
que se encuentra en el directorio de trabajo. El nombre es opcional, pero
un nombre adecuado puede ser poner el mes seguido de la fecha del d´ıa en
curso: octubre21.txt. Si queremos guardar el archivo en un disquete, CD,.., lo
abrimos y en File hacemos clic en save as. Ahora pulsando en Mi PC podemos
guardarlo en la unidad que deseemos.
Matlab nos ofrece una ayuda que puede ser de gran utilidad. Si tenemos
alguna duda sobre el funcionamiento concreto de determinada funci´ on, de la
que conocemos su denominaci´on en Matlab, podemos teclear en la ventana
de comandos
>> help nombre
y aparece en pantalla la ayuda de Matlab explicando el funcionamiento de
la funci´on. Si no fuera suficiente, podemos pulsar en doc nombre que nos
ofrece una ayuda m´ as completa y ejemplos. Supongamos que tenemos alguna
duda sobre el funcionamiento de la funci´on det (determinante). Tecleamos
>> help det.
Si tecleamos
>> lookfor nombre
aparece en pantalla una relaci´ on con todos los comandos que contienen nom-
bre. Si no queremos que la ayuda aparezca en la ventana de comandos sino
en una ventana espec´ıfica, debemos teclear
>> helpwin nombre
y se abre una ventana con la ayuda.
Finalmente, indicar que tambi´en podemos buscar la ayuda acudiendo a
Help y haciendo clic en Matlab Help.
3
1.3. Operaciones b´asicas y variables
Matlab distingue entre may´ usculas y min´ usculas. Entonces A y a pueden
ser nombres apropiados para dos variables distintas. El nombre de toda varia-
ble debe comenzar por una letra. X, x, X1 o media son nombres v´ alidos de
variables.
+, -, *, /, ˆ son los s´ımbolos que denotan las operaciones suma, diferencia,
producto, cociente y potencia. Las operaciones se van realizando por orden
de prioridad, primero las potencias, despu´es las multiplicaciones y divisiones
y, finalmente, las sumas y restas. Las operaciones de igual prioridad se llevan
a cabo de izquierda a derecha.
Si se quiere asignar a una variable x el valor 3 + 2
5
, se escribe a conti-
nuaci´on del prompt
>> x=3+2ˆ5;
Se pueden utilizar las funciones matem´ aticas usuales. Por ejemplo, si se
quiere asignar a la variable a el valor

3, se escribe
>> a=sqrt(3);
Los comentarios deben ir precedidos del signo %. Cuando una instrucci´ on
no cabe en una l´ınea se puede cortar en dos trozos, en cuyo caso el primero
de ellos debe acabar con tres puntos seguidos y el segundo trozo va en la l´ınea
siguiente. Para recordar ´ordenes previas (o posteriores si hemos retrocedido)
se usan las teclas de cursor ↑ y ↓, y para corregir una instrucci´ on las teclas
→ y ←.
Si se quiere conocer el valor de una variable, basta teclear su nombre.
Para conocer las variables que se han usado hasta el momento, se utiliza
el comando who y, si se quiere m´ as informaci´ on, whos. Para eliminar una
variable denominada nombre
>>clear nombre
A continuaci´ on damos una relaci´ on con los nombres de las funciones m´as
habituales:
ra´ız cuadrada: sqrt(x).
funci´ on exponencial: exp(x).
4
funci´ on seno: sin(x).
funci´ on coseno: cos(x).
funci´ on tangente: tan(x).
funci´ on cotangente: cot(x).
funci´ on arcoseno: asin(x).
funci´ on arcotangente: atan(x).
funci´ on logaritmo neperiano: log(x).
funci´ on logaritmo en base 10: log10(x).
Resto de la divisi´on entera de m por n: rem(m,n).
Matlab tiene definidas variables con un valor predeterminado. Veamos
algunos ejemplos m´ as importantes:
pi. Su valor es el n´ umero π.
inf. Su valor es infinito. Aparece, por ejemplo, cuando hacemos 1/0.
eps. Es el n´ umero positivo m´as peque˜ no con que trabaja Matlab
>>eps
ans 2.2204e-016
Terminamos esta secci´on explicando c´omo puede controlarse el formato
num´erico con que se muestran en pantalla los resultados num´ericos de los
c´alculos. Sin embargo, hay que se˜ nalar que esto no tiene nada que ver con la
precisi´on con la que se realizan dichos c´alculos. Si queremos que se muestren
en pantalla los resultados con s´olo 5 d´ıgitos, se teclea format short
>> format short
a=1/3
ans 0.3333
Si deseamos ver en pantalla los resultados con 15 d´ıgitos, se teclear´ a
format long. Si tecleamos format rat, Matlab busca una aproximaci´on
racional.
Ejemplo. Matlab denota el n´ umero π por pi. Veamos cu´ al es el resultado
de teclear format rat antes de pi:
>> format rat
pi
5
ans 355/113.
Finalmente, format short e produce el resultado en notaci´on punto
flotante con cinco d´ıgitos
Ejemplo.
>> format short e
a=1/3
ans 3.3333e-001
1.4. Vectores
Si queremos introducir las componentes de un vector v, las escribiremos
entre corchetes separ´ andolos con comas o espacios.
Ejemplo. El vector fila v = (1, 2, −1) se introduce en Matlab como sigue
>> v = [1 2 − 1];
N´otese el punto y coma final. Si no se pone, al pulsar enter Matlab muestra
en pantalla la fila 1 2 -1. Si se pone el punto y coma, Matlab guarda en
memoria el vector v = (1, 2, −1) y no lo muestra en pantalla. Esto es un
hecho general que se producir´ a cada vez que escribimos alguna instrucci´ on.
Si colocamos el punto y coma final, Matlab ejecuta la instrucci´on en cuesti´ on
y no muestra en pantalla el resultado ni los c´alculos involucrados. Por tanto,
es importante tener en cuenta esta caracter´ıstica de Matlab. Por ejemplo,
si los c´alculos que debe realizar Matlab son numerosos, puede que no nos
interese verlos en pantalla.
Si el vector o matriz fila tienen la particularidad de que sus componentes
est´ an igualmente espaciadas, hay una forma m´as simple de introducirlo. As´ı,
el vector v = (1, 3, 5, 7) se puede introducir de la forma siguiente
>> v=1:2:7;
Es decir, se indica, separados por dos puntos, la primera componente, el
desfase de uno al siguiente y el ´ ultimo. Cuando el desfase es la unidad se
puede omitir. Entonces v = 4 : 8, es la forma m´as simple de indicar el vector
v = (4, 5, 6, 7, 8).
6
Otra forma de introducir un vector fila con las componentes igualmente
espaciadas consiste en indicar la primera componente, la ´ ultima y el n´ umero
total de componentes.
Ejemplo. El vector v que tiene 10 componentes igualmente espaciadas
siendo 1 la primera y 18 la ´ ultima se indica
>> v = linspace(1, 18, 10);
Recu´erdese que, si no colocamos al final el punto y coma, apare-
cer´a en pantalla una fila de 10 n´ umeros que no son otra cosa que
las componentes de v.
Cuando necesitemos conocer el n´ umero de componentes de un vector v
bastar´ a recurrir a la funci´ on length(v).
sort(v) es el vector que resulta al escribir las componentes de v de menor
a mayor.
Para finalizar, veamos algunas operaciones habituales entre vectores:
- Suma: >> u+v.
- Producto por un escalar: >> a*v.
- Producto escalar: >> dot(u,v).
- Producto vectorial: >> cross(u,v).
1.5. Manipulaci´on de matrices
Para introducir los elementos de una matriz A, escribiremos entre corchetes
los elementos de cada fila separados por un espacio (o por una coma), mien-
tras que las filas se separan con punto y coma.
Ejemplo. La matriz
A =
_
2 −1 0
3 2 1
_
,
se introduce en Matlab como sigue
>>A=[2 -1 0;3 2 1];
Para referirse al elemento de la fila i y columna j de una matriz A, es-
cribiremos A(i,j), como es usual en la teor´ıa de matrices. Tambi´en podemos
7
necesitar referirnos a alguna submatriz de A. Por ejemplo, si necesitamos
la fila i de A, escribiremos A(i,:). Del mismo modo, la columna j de A se
denota en Matlab por A(:,j). La submatriz de A formada por las filas 2 y 3
y las columnas 1 y 2 de A se denota por A([2 3],[1 2]). Cuando las filas ( o
las columnas) que forman la submatriz son consecutivas hay una forma m´as
simple de denotarla
>>A(1:4,[2 4])
es la forma de referirse a la submatriz de A formada por las cuatro primeras
filas y por las columnas 2 y 4.
Ciertas matrices muy simples, entre ellas la matriz unidad y la matriz nu-
la, no necesitan ser introducidas elemento a elemento ya que Matlab dispone
de funciones que nos permitir´an referirnos a ellas de forma muy f´acil.
1. Matriz unidad: eye(4) es la matriz unidad de orden 4.
2. Matriz nula: zeros(3,4) es la matriz nula 3 × 4.
3. ones(n,m) es la matriz n × m cuyos elementos son todos iguales a 1.
4. rand(n,m) es una matriz n × m de n´ umeros aleatorios distribuidos
uniformemente en el intervalo (0,1). randn(n,m) es una matriz de n´ umeros
aleatorios como antes, pero ahora est´an distribuidos normalmente.
5. det(A) nos da el determinante de una matriz cuadrada A.
6. rank(A) es el rango de la matriz A.
7. A’ es la matriz traspuesta y conjugada de A.
8. inv(A) es la matriz inversa de la matriz cuadrada y regular A.
9. sin(A) es la matriz (sen(a
ij
)), donde A = (a
ij
). An´alogamente ocurre
con las otras funciones de Matlab que hemos descrito en una secci´ on anterior.
10. diag(A) es una matriz columna con los elementos de la diagonal prin-
cipal de A.
11. size(A) nos da las dimensiones de la matriz A.
8
1.6. Operaciones con matrices
Los s´ımbolos + , * y ˆ se reservan para las operaciones matriciales suma,
producto y potencia.
Ejemplos. a) Determinar el cuadrado de la matriz cuadrada A:
>> Aˆ2
b) Determinar el producto de las matrices A y B (recordar que el producto
s´olo es posible si el n´ umero de columnas de A es igual al de filas de B:
>> A*B
c) Sumar las matrices A y B (que deber´an tener la misma dimensi´ on):
>> A+B
Tambi´en necesitaremos operaciones como las siguientes: el producto de
dos matrices elemento a elemento, elevar cada elemento de una matriz a
un cierto exponente, dividir elemento a elemento una matriz por otra. En
general, estas operaciones se indicar´ an anteponiendo un punto al s´ımbolo
usado para denotar la operaci´ on en cuesti´ on. A continuaci´on damos una
relaci´ on de estas operaciones:
A.*B es la matriz cuyos elementos se obtienen haciendo el producto de
cada elemento de A por el correspondiente de B.
A.ˆa es la matriz que resulta al elevar cada elemento de A al exponente
a.
A./B es la matriz cuyos elementos se obtienen dividiendo cada elemento
de A por el correspondiente de B.
1.7. Operaciones entre escalares y matrices
a+B es la matriz que resulta al sumar el escalar a cada elemento de la
matriz B.
a*B cada elemento de B se multiplica por el escalar a.
A/b cada elemento de A se divide por el escalar b.
9
1.8. Las instrucciones A/b y A\b
Supongamos que A es una matriz cuadrada de orden n y b un vector
columna de n componentes. A\b nos da la soluci´on del sistema de ecuaciones
Ax = b.
Ejemplo. Resolver el sistema
_
x + 2y = 2
3x + y = 0.
Escribimos el sistema en forma matricial: A
_
x
y
_
= b donde b =
_
2
0
_
y A es
la matriz
_
1 2
3 1
_
.
Si el determinante de A es no nulo, sabemos que existe la matriz inversa
A
−1
. Entonces, multiplicando la igualdad A
_
x
y
_
= b por A
−1
(a la izquierda),
resulta
_
x
y
_
= A
−1
· b, que es la soluci´ on del sistema. Matlab permite encontrar
esta soluci´ on mediante la instrucci´ on A\b.
>> A=[1 2;3 1];
b=[2;0];
[x; y] = A\b
ans
_
x
y
_
=
_
−0.4
1.2
_
.
M´as en general, si B es una matriz con un n´ umero de filas igual que el
n´ umero de columnas de A, A\B nos da la soluci´ on del sistema A · X = B.
Ejemplo. Resolver los dos sistemas siguientes
_
_
_
2 1 1
1 2 1
1 1 2
_
_
_
·
_
_
_
x
y
z
_
_
_
=
_
_
_
1
1
1
_
_
_
;
_
_
_
2 1 1
1 2 1
1 1 2
_
_
_
·
_
_
_
x
y
z
_
_
_
=
_
_
_
1
0
−1
_
_
_
.
Ambos sistemas tienen la misma matriz de coeficientes, A. Matricial-
mente, los dos sistemas equivalen a la igualdad A · X = B, donde
X =
_
_
_
x1 x2
y1 y2
z1 z2
_
_
_
y B =
_
_
_
1 1
1 0
1 −1
_
_
_
.
10
Podemos resolver los dos sistemas de un tir´on procediendo como sigue
>> A=[2 1 1;1 2 1;1 1 2];
B=[1 1;1 0;1 -1];
A\B
ans
_
_
_
0.25 1
0.25 0
0.25 −1
_
_
_
.
Por otra parte, la instrucci´on B/A nos ofrece la soluci´on del
sistema
X · A = B.
Ejemplo. Resolver el sistema (xyz) · A = (101), siendo A la matriz
_
_
_
1 2 1
1 0 −1
2 1 1
_
_
_
.
>> A=[1 2 1;1 0 -1;2 1 1];
b=[1 0 1];
b/A
ans (x, y, z) = (−0.5 − 0.51).
1.9. Matrices definidas mediante cajas
Cuando una matriz A se compone de cajas que ya hemos introducido,
se puede introcucir A de una manera m´ as c´omoda como muestra el ejemplo
siguiente.
Ejemplo. Supongamos que ya hemos introducido las matrices:
B =
_
1
2
_
; C =
_
−1 3
4 1
_
,
entonces la matriz
11
A =
_
_
_
_
_
0 0 0 1 0
0 0 0 0 1
2 2 1 −1 3
2 2 2 4 1
_
_
_
_
_
,
se puede introducir como sigue
>>A=[zeros(2,3) eye(2,2);2*ones(2,2) B C]
Siempre que definamos una matriz por cajas deberemos tener en cuenta
las dos restricciones siguientes:
a) En cada nivel el n´ umero de filas de las cajas es el mismo.
b) En todos los niveles el n´ umero total de columnas es el mismo.
12
Cap´ıtulo 2
Gr´aficos
2.1. Curvas planas
Si se desea obtener la gr´ afica de la funci´ on y = y(x) en el intervalo
[a,b], debemos tener presente que Matlab dibuja las curvas punto a punto;
es decir, calcula los puntos (x, y(x)), para los valores de x que le indiquemos
y representa dichos puntos unidos por un segmento. Por ello, se empieza
estableciendo la matriz fila x cuyos elementos son los valores de x para los
que se computar´a el valor correspondiente de y(x). Lo usual ser´ a tomar puntos
igualmente espaciados en el intervalo [a,b], incluyendo los extremos. Tomando
la distancia entre dos valores consecutivos de x convenientemente peque˜ na,
el aspecto final ser´a el de una verdadera curva en lugar de una poligonal.
Ejemplo . Dibujar la curva de ecuaci´on y = xsenx en el intervalo [−2π, 2π].
>> x=linspace(-2*pi,2*pi,60); % Tomamos 60 valores de x igual
% mente espaciados en [−2π, 2π]
y=x.ˆ 2.*sin(x); % matriz fila con los valores de y(x)
plot(x,y)
Pulsando enter, se abre una ventana gr´afica con la curva. Se pueden dibu-
jar varias curvas en la misma ventana gr´ afica. Si el intervalo de variaci´ on de
x es el mismo, se puede proceder como se muestra en el ejemplo siguiente.
Ejemplo.Representar gr´aficamente las curvas y1 = x
2
e y2 = xe
x
en el
13
intervalo [-3,3].
>> x=linspace(-3,3,90);
y1=x.ˆ 2;y2=x.*exp(x);
plot(x,y1,x,y2)
De esta forma se consigue que se abra una ventana gr´ afica con las dos
curvas. Otra forma de conseguir el mismo resultado consiste en usar
la orden hold on. Si ya tenemos una ventana gr´afica con una curva y
queremos dibujar una segunda curva en la misma ventana, ponemos
hold on y a continuaci´on las ´ordenes necesarias para dibujar la
segunda curva.
Si el intervalo donde se quiera dibujar cada curva no es el mismo, se puede
conseguir el mismo resultado de la forma siguiente. Se dibuja primero una de
las curvas, se teclea hold on y acto seguido se dibuja la otra
Ejemplo. Dibujar y = x en [-1,1] e y = xe
x
en [0,2].
>> x1=-1:.1:1;
y1=x1;
plot(x1,y1)
hold on
x2=0:.1:2; y2=x2.*exp(x2);
plot(x2,y2)
Por el contrario, cuando ya se tiene una ventana gr´afica abierta y
se quiere dibujar una nueva curva en otra ventana gr´afica, pero sin
perder la primera ventana, tecleamos figure y se abre una ventana
gr´afica nueva donde podremos hacer la nueva representaci´ on.
EJEMPLO. Supongamos que se desea obtener la gr´ afica de f(x) = sen(x)/x,
para x ∈ [−2π, 2π]. Se presenta el problema de que para x = 0 no est´a defini-
da la funci´ on, aunque l´ım
x→0
f(x) existe y vale 1. Manejando adecuadamente
la variable eps, podemos evitar este problema.
>>x=linspace(-2*pi,2*pi,100);
t=x+eps;
y=sin(t)./t;
14
plot(t,y)
y obtenemos
−8 −6 −4 −2 0 2 4 6 8
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Otras opciones de la funci´on plot
1. Etiquetas sobre los ejes: el comando xlabel(’texto’) se usa para que en
el eje OX aparezca el texto que se desea. An´ alogamente, ylabel(’texto’) para
el eje OY. Para colocar cualquier cadena de texto en el punto que queramos
de la ventana gr´ afica, se usa el comando text(x,y,’texto’), donde (x,y) son las
coordenadas del punto donde queremos situar el centro izquierda del texto. Si
usamos el comando gtext, entonces podemos colocar el texto donde queramos
con el propio rat´ on.
2. Color de la curva y estilo de l´ınea: Se puede dibujar la curva del color
y con el estilo que se desee. Por ejemplo, si se escribe
>>plot(x,y,’.’,x,z,’- -’) De esta forma se consigue que la curva y = y(x)
aparezca con trazo punteado y la z = z(x) como una l´ınea de trazo discon-
tinuo.
Si se quiere escoger el color y estilo:
>> plot(x,y,’r - -’)
15
la curva aparece en rojo y con l´ınea de trazo discontinuo. La siguiente tabla
muestra la sintaxis de los diferentes colores y tipo de l´ınea:
S´ımbolo Color S´ımbolo Estilo de l´ınea
y amarillo . l´ınea de puntos
m magenta ◦ c´ırculo
r rojo + m´as
g verde ∗ estrella
b azul −− trazo discontinuo
k negro − l´ınea s´olida
Ejes a medida
Para fijar los valores m´ aximo y m´ınimo de los ejes:
>>axis([xmin xmax ymin ymax])
Para que la escala sea la misma en ambos ejes:
>>axis equal o axis(’equal’)
Para que la gr´afica sea un cuadrado:
>>axis square
Si se quiere que aparezca una rejilla: grid on.
Dibujo de poligonales
Supongamos que se desea dibujar la poligonal de v´ertices (x
i
, y
i
) con
i = 1, .., n. Definir´ıamos las matrices fila x e y que contienen las coordenadas
correspondientes y el comando plot(x,y) dibuja la poliginal (recordar c´omo
dibuja las curvas Matlab). Si la poligonal es cerrada, el ´ ultimo v´ertice ha de
ser (x
1
, y
1
).
Ejemplo. Dibujar la poligonal cerrada de v´ertices (0, 0), (2, 1), (1, 3) y (−2, 2).
>>x=[0 2 1 -2 0];
y=[0 1 3 2 0];
plot(x,y)
y el resultado ser´ıa
16
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
O
Y
OX
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
2.2. El comando subplot
A veces nos interesar´ a disponer en una misma ventana gr´afica de varias
subventanas para dibujar en cada una de ellas una curva distinta, con el
objetivo de poder compararlas m´ as c´omodamente. Veamos un ejemplo.
Ejemplo. Queremos dibujar en una misma ventana gr´ afica las curvas y =
sen(kπx), para k = 1, ..., 4 y x ∈ [−4π, 4π], cada una en una subventana
diferente.
>>x=linspace(-4*pi,4*pi,240);
subplot(2,2,1)
plot(x,sin(pi*x))
subplot(2,2,2)
plot(x,sin(2*pi*x))
subplot(2,2,3)
plot(x,sin(3*pi*x))
subplot(2,2,4)
plot(x,sin(4*pi*x))
17
Y se obtiene
−20 −10 0 10 20
−1
−0.5
0
0.5
1
−20 −10 0 10 20
−1
−0.5
0
0.5
1
−20 −10 0 10 20
−1
−0.5
0
0.5
1
−20 −10 0 10 20
−1
−0.5
0
0.5
1
En general, si se necesitan m×n subventanas, se tendr´a en cuenta que se
numeran de izquierda a derecha y de arriba hacia abajo. Cuando tecleamos
subplot(m,n,k), estamos indicando que vamos a dibujar en la subventana que
ocupa el lugar k. En el ejemplo anterior, todas las subventanas responden a
la forma subplot(2,2,k), porque ten´ıamos 4 curvas y parece lo m´as adecuado
disponerlas en dos filas y dos columnas.
2.3. Coloreado de pol´ıgonos
En la secci´ on anterior hemos visto c´omo se dibuja una poligonal con
Matlab. Ahora vamos a ver c´omo se colorea la regi´on interior del color que
queramos.
18
Ejemplo. Se desea dibujar las curvas y = x
2
y x = y
2
en el primer
cuadrante. La regi´ on que encierran debe aparecer en color rojo.
>> x=0:.1:1;
y1=x.ˆ2;y2=sqrt(x);
plot(x,y1,x,y2)
De esta forma se han dibujado las curvas en cuesti´ on. Para colorear de rojo la
regi´on encerrada, Matlab dispone de la funci´on fill. Su sintaxis es la siguiente:
fill(x,y,’r’) (x e y son matrices fila que contienen las coordenadas x e y de
los v´ertices de la poligonal. El programa anterior se continuar´ıa de la forma
siguiente:
X=[x x];
y=[y1 y2];
fill(X,y,’r’)
0 0.2 0.4 0.6 0.8 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Si se desea escoger un color indicando las coordenadas (en el sistema
RGB) se escribe
>>fill(x,y,[r g b])
Los n´ umeros r, g y b pertenencen a (0,1) y representan las proporciones en
que se deben tomar los colores principales (rojo, verde y azul) para crear el
color en cuesti´on.
19
2.4. Curvas en polares
Empezamos recordando c´omo se relacionan las coordenadas polares con
las cartesianas.
X
Y
O
P
w
r
Vemos en la figura que ω es el ´an-
gulo que forman el vector de posici´ on
del punto P con la direcci´ on positiva
del eje OX y r es el m´ odulo de di-
cho vector. Por un lado, el Teorema
de Pit´ agoras nos dice que r
2
= x
2
+y
2
y, por otro, usando las definiciones de
sen ω y cos ω, obtenemos x = r cos ω
e y = r sen ω. Si de una curva plana
sabemos que las coordenadas polares
de sus puntos, (r, ω), verifican la igual
dad r = r(ω), para ω ∈ [ω
1
, ω
2
], diremos que r = r(ω) es la ecuaci´ on de
la curva en coordenadas polares. La ecuaci´ on de la circunferencia unidad
en cartesianas es x
2
+ y
2
= 1 y en coordenadas polares r = 1. En general,
para obtener la ecuaci´ on en polares, conocida la ecuaci´ on de una curva en
cartesianas, basta sustituir en esta ´ ultima ecuaci´ on x e y por r cos ω y r sen ω,
respectivamente.
Ejemplo. Dibujar la curva de ecuaci´on r = 1 + cos ω, para 0 ≤ ω ≤ 2π.
Por comodidad, vamos a usar w en lugar de ω.
>> w=linspace(0,2*pi,60);
r=1+cos(w);
polar(w,r)
pulsando enter se abre una ventana gr´afica que muestra la curva siguiente
(denominada cardioide).
20
0.5
1
1.5
2
30
210
60
240
90
270
120
300
150
330
180 0
2.5. Curvas en el espacio
Supongamos que se quiere dibujar la curva de ecuaciones param´etricas
x = cos t, y = sen t, z = t, para t ∈ [0, 6π]. Podemos usar el comando plot3 o
el comando ezplot3.
a) Con plot3:
>>t=linspace(0,6*pi,150);
plot3(cos(t),sin(t),t)
grid on
y el resultado es
21
−1
−0.5
0
0.5
1
−1
−0.5
0
0.5
1
0
5
10
15
20
b) Con ezplot3:
ezplot3(’cos(t)’,’sin(t)’,’t’, [0,6*pi])
Terminamos esta secci´ on indicando c´omo puede conseguirse que aparez-
can los vectores tangentes al dibujan curvas en param´etricas .
Ejemplo. Representar la curva de ecuaciones param´etricas
x = cos(t), y = sen(t), t ∈ [0, pi].
>>t=linspace(0,pi,30);
plot(cos(t),sin(t))
Si se quiere que aparezcan los vectores tangente, se usa la funci´on quiver.
>>t=linspace(0,pi,30);
plot(cos(t),sin(t))
hold on
>> t=linspace(0,pi,10); %Dibujamos el vector tangente en s´olo 10 puntos
% intermedios de la curva
quiver(cos(t),sin(t),-sin(t),cos(t))
y se obtiene
22
−1.5 −1 −0.5 0 0.5 1 1.5
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
1.2
2.6. Superficies
Para dibujar una superficie de ecuaci´ on z = z(x, y), se comienza por
establecer los intervalos de variaci´ on de x e y. Con la orden [x,y]=meshgrid(-
2:.1:2;-1:.1:1) Matlab crea una matriz x con todas sus filas iguales a -2:.1:2 y
una matriz y con todas sus columnas iguales a -1:.1:1. De este modo resultan
dos matrices con la misma dimensi´ on. Veamos un ejemplo simple. Considera-
mos la funci´on z = x
2
+ y
2
y escribimos la orden
>> [x,y]=meshgrid(-1:.5:1,0:.5:1);
que produce las matrices
x =
_
_
_
−1 −.5 0 .5 1
−1 −.5 0 .5 1
−1 −.5 0 .5 1
_
_
_
, y =
_
_
_
0 0 0 0 0
.5 .5 .5 .5 .5
1 1 1 1 1
_
_
_
De esta forma, cuando escribamos z=x.ˆ2+y.ˆ2 en la ventana de coman-
dos, z ser´ a la matriz 3 × 5 que contiene los valores de z en todos y cada uno
de los puntos (x, y) con x igual a uno de los valores -1,-.5,0,.5,1 e y igual a
uno de los valores 0,.5,1.
Ejemplo. Dibujar la superficie z =
_
x
2
+ y
2
en el dominio [−3, 3]×[−3, 3]
23
>>[x,y]=meshgrid(-3:.1:3,-3:.1:3);
z=sqrt(x.ˆ2+y.ˆ2);
surf(x,y,z)
Adem´as de la orden surf(x,y,z), para dibujar una superficie, podemos
emplear plot3(x,y,z) o mesh(x,y,z) (la diferencia con surf es que ´esta rellena
los espacios entre l´ıneas).
La orden rotate3d permite girar la superficie con el rat´on. La or-
den colormap permite cambiar el color de la superficie. Hay diversas opciones:
colormap(pink), colormap(summer),colormap(winter), etc.
En ele ejemplo siguiente mostramos c´omo se dibuja una superficie plana
paralela a z = 0.
Ejemplo. Dibujar la superficie z = 3 en el primer octante.
>> [x,y]=meshgrid(-4:.1:4,-4:.1:4);
[m,n]=size(x); % Recordar lo que hemos dicho sobre el comando meshgrid,
% usamos size(x) para determinar las dimensiones de x de una manera se-
gura.
z=3*ones(m,n);
surf(x,y,z)
−4
−2
0
2
4
−4
−2
0
2
4
2
2.5
3
3.5
4
24
2.7. Curvas de nivel
Supongamos que hemos dibujado una superficie, z = f(x, y), y queremos
que en el plano z = 0 aparezcan dibujadas las curvas de nivel. Podemos
proceder como sigue
>>hold on
contour(x,y,z,[c1,c2,c3,...,cn])
y aparecen representadas las curvas de nivel f(x, y) = ci, para i = 1, .., n.
Ejemplo. Representar la superficie de ecuaci´ on z = x
2
+ y
2
, para (x, y) ∈
[−2, 2] × [−2, 2]. Adem´ as, deseamos que aparezcan representadas las curvas
de nivel f(x, y) = c, para c = 1, 2, 3.
>>[x,y]=meshgrid(-2:.1:2,-2:.1:2);
z=x.ˆ2+y.ˆ2;
surf(x,y,z)
hold on
contour(x,y,z,[1,2,3])
y se obtiene
−2
−1
0
1
2
−2
−1
0
1
2
0
2
4
6
8
Si s´olo se buscan las curvas de nivel (no se necesita dibujar la superficie),
basta escribir
>>[x,y]=meshgrid(-2:.1:2,-2:.1:2);
z=x.ˆ2+y.ˆ2;
25
contour(x,y,z,[1,2,3])
y se obtiene
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
Si se quiere que aparezcan etiquetas sobre cada curva de nivel que reflejen
el valor de la constante c, se usa la funci´ on clabel
>>[x,y]=meshgrid(-2:.1:2,-2:.1:2);
z=x.ˆ2+y.ˆ2;
clabel( contour(x,y,z,[1,2,3]) )
resultando
1
2
3
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
26
Cuando necesitamos representar una superficie y deseamos que aparezcan
las curvas de nivel, hay una forma muy c´omoda que consiste en emplear la
funci´on surfc(x,y,z).
Ejemplo. Gr´afica de la superficie z =
_
x
2
+ y
2
con las corrspondientes
curvas de nivel.
>>[x,y ]=meshgrid(-2:.1:2,-2:.1:2);
z=sqrt(x.ˆ2+y.ˆ2);
surfc(x,y,z)
y resulta
−2
−1
0
1
2
−2
−1
0
1
2
0
0.5
1
1.5
2
2.5
3
2.8. ¿C´ omo exportar gr´aficos?
a) Word. Una vez que tenemos el gr´afico en la ventana gr´ afica, vamos a
Edit (en le ventana gr´afica) y hacemos clic en Copy figure. A continuaci´ on
abrimos el documento word y pegamos.
b) Latex. Primero debemos salvar el gr´afico de forma adecuada. Vamos a
File (en la ventana gr´ afica) y hacemos clic en Save as. Se abre una ventana
(Save as) en la que debemos dar el nombre con que vamos a designar el archivo
que contendr´a el gr´afico. Autom´aticamente, Matlab le a˜ nade la extensi´ on
que corresponda. Normalmente, elegiremos el tipo EPS file, en cuyo caso
la extensi´on que Matlab a˜ nade es eps. Ahora es el momento de guardar el
27
archivo creado, nombre.eps, en la carpeta que contiene el archivo Latex donde
queremos incluir el gr´ afico. Ahora debemos preparar el archivo Latex, lo que
exige realizar los siguientes dos pasos
1) En el archivo principal y antes de la instrucci´ on \begin{document},
debemos incluir
\usepackage{graphicx}
2) En el lugar donde vamos a incluir el gr´ afico:
\begin{center}
\includegraphics[width=5cm,height=6cm]{nombre.eps}
\end{center}
28
Cap´ıtulo 3
Programaci´on
3.1. Archivos .M
Vamos a ver que podemos crear dos tipos de archivos con extensi´ on .m,
que llamaremos archivos .M. Se denominan archivos de funci´ on y archivos de
gui´on (o de instrucciones). Con los primeros podemos definir nuevas funciones
que se a˜ nadir´an a las que ya trae Matlab (como sin(x), exp(x),sqrt(x),etc.).
Los archivos de instrucciones se llaman as´ı porque pueden consistir en una
serie de instrucciones a ejecutar. Veremos que en ´estos puede ocurrir que en el
momento de su ejecuci´ on nos pida una serie de valores (inputs). En todos los
casos, se deber´ a ir a File-New-M-File y aparece una ventana (Editor-Untitled)
donde podemos escribir el programa correspondiente. Una vez terminado,
vamos a File de dicha ventana y hacemos clic en Save As y podemos guardar
el archivo .M con el nombre que le hayamos dado (nombre.m).
3.2. Archivos de funci´ on
Las dos primeras l´ıneas de un archivo de funci´on tienen la forma
function [y,z,..]=nombre(a,b,..)
% Una explicaci´ on que sirva para reconocer la funci´ on en cualquier otro
29
momento
a,b,.. denotan las variables de entrada (las variables independientes),
mientras que y,z,.. son las variables de salida (dependientes), en ambos casos
separadas por comas. A continuaci´ on van todas las ´ordenes que se necesitan
para definir la nueva funci´ on.
Ejemplo. Crear un archivo de funci´on cuya entrada sea una matriz fila x
y cuyas salidas sean la media de x y su desviaci´on t´ıpica.
function [media,dest]=estadisticos(x)
% Esta funci´on determina la media y la desviaci´ on t´ıpica de una fila x
n=length(x);
media=sum(x)/n;
s=0;
for k=1:n
s=s+(x(k)-media)ˆ2;
end
dest=sqrt(s/n);
[media,dest]
El nombre de todo archivo de funci´on debe coincidir con el nom-
bre de la funci´ on y tiene extensi´ on .m. En nuestro caso, ser´ıa: nom-
bre.m. El nombre de la funci´on debe empezar con una letra y, para
evitar confusiones, debemos asegurarnos que no coincide con el
nombre de alguna de las funciones de que dispone Matlab.
3.3. C´alculo de integrales usando un archivo
de funci´ on
Vamos a ver una forma de calcular integrales simples y reiteradas creando
un archivo de funci´on con el integrando. Este m´etodo nos servir´ a, adem´ as,
para resolver otro tipo de problemas que tienen en com´ un que necesitamos
hacer manipulable una funci´ on.
30
El primer paso consiste en crear un archivo de funci´on con una funci´ on que
iremos cambiando en cada problema concreto. Este archivo puede llamarse
f.m.
Ejemplo. Deseamos calcular
_
1
0
e
x
2
dx.
Creamos el archivo f.m:
function y=f(x)
%y=F(x) es el integrando de una integral simple
y=exp(x.ˆ2);
Ahora usamos la funci´ on quad para calcular una integral simple.
>>integrando=@f; % Hacemos manipulable la funci´on
quad(integrando,0,1)
ans 1.4627
Veamos ahora c´omo se determina una integral reiterada con la funci´ on
dblquad.
Ejemplo. Calcular
_
1
0
_
_
1
−1
xy dx
_
dy.
En primer lugar, creamos un archivo de funci´ on con el integrando:
function z=fun(x,y)
% z=FUN(x,y) es el integrando de una integral reiterada
z=x.*y;
Finalmente, usamos la funci´on dblquad:
>>integrando=@fun;
a=dblquad(integrando,x
min
, x
max
, y
min
, y
max
)
ans 1.2309e-017
En nuestro caso, x
min
= −1, x
max
= 1, y
min
= 0 e y
max
= 1.
Finalizamos esta secci´on indicando que si necesitamos evaluar f(a) y
disponemos de un archivo de funci´ on f.m con la funci´on y = f(x), pode-
mos usar la funci´ on feval:
g=@f;
feval(g,a)
y, pulsando enter, obtenemos el valor f(a).
31
3.4. La funci´ on fplot
Para dibujar la curva y = y(x) con el comando fplot, debemos crear un
fichero de funci´on con la funci´on y(x). Supongamos que a este fichero le hemos
llamado fun.m. Para manipular la funci´on, pondremos f=@fun. Veamos esto
con un ejemplo.
Ejemplo. Usar fplot para dibujar la curva y = x
2
sen x
Empezamos creando un archivo de funci´ on para y(x):
function y=fun(x)
y=x.ˆ2.*sin(x);
Una vez creado este archivo con la funci´ on, procedemos a dibujar la curva
y = y(x) con fplot
>>f=@fun;
fplot(f,[xmin,xmax])
grid on
Si se quiere que la gr´afica recoja con mayor detalle el intervalo [ymin,ymax]
>>fplot(f,[xmin,xmax ymin ymax])
Ejemplo.Dibujar la curva y = x
2
sen x en [−π, π] con un zoom en [1,4].
>>f=@fun;
fplot(f,[-pi,pi,1,4])
Al pulsar enter, obtenemos
32
−3 −2 −1 0 1 2 3
1
1.5
2
2.5
3
3.5
4
Otra forma de manejar la funci´on fplot es la siguiente
>>fplot(’x*sin(x)’,[0,2])
Con la funci´ on fplot tambi´en se pueden dibujar dos curvas a la vez
>>fplot(’[x*sin(x),xˆ3]’,[-1,1])
y resulta
−1 −0.5 0 0.5 1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
33
3.5. Archivos de instrucciones
En Programaci´ on nos encontramos a menudo con la necesidad de ejecutar
varias veces una misma serie de instrucciones. Por ello, puede resultar conve-
niente crear un archivo de gui´ on con dichas instrucciones, al que podremos
recurrir cada vez que lo necesitemos. El nombre de uno de tales archivos s´olo
tiene la restricci´ on, como ocurre con los archivos de funci´ on, de que debe
comenzar por una letra. La estructura de estos archivos es la siguiente:
Una primera linea explicativa que describa brevemente el objetivo del
archivo. Esta l´ınea de comentarios debe comenzar con%. De esta forma se
consigue que el ordenador no considere esta l´ınea.
A continuaci´on se escriben todas las instrucciones que deben ejecutarse
en el orden que corresponda.
Ejemplo. Vamos a crear un archivo de gui´ on (que llamaremos raices) y que
nos pedir´a los coeficientes de una ecuaci´ on de segundo grado y determinar´ a
las ra´ıces reales cuando las haya. Usaremos el comando if que se estudiar´a
con m´as detenimiento m´as adelante.
% encuentra las ra´ıces de una ecuaci´on de segundo grado ax
2
+bx+c = 0
y nos pide a,b y c
a=input(’dame a’);
b=input(’dame b’);
c=input(’dame c’);
Delta=bˆ2-4*a*c;
if Delta>=0
[x1,x2]=[-b/(2*a)+sqrt(Delta)/(2*a),-b/(2*a)-sqrt(Delta)/(2*a)]
end
Este archivo funciona de la siguiente forma: Cuando tecleamos raices el
ordenador nos pide sucesivamente los valores de a, b y c. Calcula el discrimi-
nante de la ecuaci´ on, Delta, y, al encontrarse con el comando if, si Delta no
es negativo, procede a calcular las ra´ıces. Si Delta es negativo, no nos da
ning´ un resultado, pues no ejecuta las instrucciones que hay entre if y end.
34
3.6. Subfunciones
Un archivo de funci´ on puede contener el c´odigo de m´ as de una funci´on.
La primera funci´on (la funci´on principal) que aparece en el archivo es la que
da el nombre a ´este y las otras se llamar´an subfunciones (s´olo son visibles
para la funci´ on principal o para otra subfunci´ on en el mismo archivo.
Ejemplo. Un archivo de funci´ on que determina la media y la mediana de
un vector fila.
function [media,mediana]=estadistico(v)
% Estadistico encuentra la media y la mediana con subfunciones internas
n=length(v);
media=med(v,n);
mediana=medn(v,n);
function a=med(v,n)
% Calcula la media
a=sum(v)/n;
function b=medn(v,n)
%Calcula la mediana
w=sort(v);
if rem(n,2)==1
b=w((n+1)/2);
else
b=(w(n/2)+w((n/2)+1))/2;
end
3.7. Operadores y Funciones l´ogicas
A) OPERADORES. Matlab posee operadores de tres clases: aritm´eti-
cos, de relaci´ on y l´ ogicos.
1) Operadores aritm´eticos. Realizan computaciones num´ericas (sumas,
productos, etc.)
35
2) Operadores de relaci´on. Comparan cuantitativamente dos expre-
siones. Matlab posee los siguientes:
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
== igual que
∼= no igual a
Si se usa uno de estos operadores para comparar dos matrices o vectores,
entonces la comparaci´ on se hace elemento a elemento. Si se emplean para
comparar un escalar con un vector o matriz, entonces se compara el escalar
con cada elemento del vector o matriz.
Ejemplo. Consideremos las matrices
A =
_
_
_
1 2 1
0 1 −1
2 1 2
_
_
_
, B =
_
_
_
0 2 0
0 1 4
1 0 2
_
_
_
.
si ponemos
>>A==B
produce la matriz
_
_
_
0 1 0
0 1 0
0 0 1
_
_
_
,
es decir, la matriz con un 1 en las posiciones donde los elementos de ambas
matrices coinciden y un 0 en los restantes.
Operadores l´ogicos. Matlab emplea los tres operadores l´ ogicos siguientes:
&, | y ∼. Cuando operan sobre una matriz, lo hacen elemento a elemento.
Cualquier n´ umero no nulo se considera como verdadero y el cero como falso.
Consideremos, por ejemplo, la instrucciones siguientes:
>>A=[1 0;2 1];
B=[4 0;1 3];
36
C=A& B
ans
_
1 0
1 1
_
.
Es decir, produce una matriz con unos y ceros , seg´ un que los elementos
correspondientes de A y B sean no nulos o uno de ellos, al menos, nulo,
respectivamente. Si escribimos A(C), Matlab produce una columna con los
elementos de A que se corresponden con los unos de C (por columnas, de
arriba abajo y de izquierda a derecha). Concretamente, obtenemos
A(C) =
_
_
_
1
2
1
_
_
_
.
B) FUNCIONES L
´
OGICAS.
find. Esta funci´ on determina los ´ındices de una matriz que verifican deter-
minada expresi´ on l´ ogica. Es muy ´ util para crear filtros o matrices de ´ındices.
Ejemplo. Sustituir en la matriz A = magic(4) los elementos mayores que
8 por 100.
>>A=magic(4)
ans
_
_
_
_
_
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
_
_
_
_
_
i=find(A>8);
A(i)=100
A
ans
_
_
_
_
_
100 2 3 100
5 100 100 8
100 7 6 100
4 100 100 1
_
_
_
_
_
.
Si se suprime el punto y coma al final de la l´ınea i=find(A>8), en pantalla
se despliega el valor de i y vemos que se trata de una matriz columna con los
37
´ındices de los elementos de A que superan a 8. Los ´ındices de A se numeran
por columnas de izquierda a derecha y de arriba abajo.
all. Si x es un vector con todas sus componentes no nulas, all(x) es igual
a 1; en otro caso su valor es cero. Si A es una matriz, all(A) es una matriz
fila de unos y ceros, que no es otra cosa que el resultado de aplicar all a cada
columna de A (de izquierda a derecha).
any. Si x es un vector con alguna componente no nula, entonces any(x)
produce un uno. Por el contrario, si x es nulo, el valor de any(x) tambi´en es
cero. Sobre una matriz act´ ua como en el caso de all.
xor. Si x e y son vectores, xor(x,y) es un vector fila de ceros y unos,
obtenido de la siguiente forma. Si en determinada posici´ on, s´olo uno de los
dos vectores tiene componente no nula, entonces xor(x,y) tiene un uno en
dicha posici´on. En cualquier otro caso, tiene un cero.
3.8. Control de flujo
Normalmente, Matlab va realizando las instrucciones de un programa en
el orden que las hemos escrito. No obstante, hay varias formas de conseguir
que este orden no se respete:
- If, junto con else y elseif, ejecuta un grupo de instrucciones dependiendo
de que cierta expresi´ on l´ ogica sea cierta o no.
- While ejecuta un grupo de instrucciones un n´ umero indefinido de veces
que depende de que cierta expresi´ on l´ ogica se verifique o no.
- For ejecuta un grupo de instrucciones un n´ umero establecido de veces.
- Break termina la ejecuci´on de un for o while.
- Switch, junto con case y otherwise, ejecuta diferentes grupos de instruc-
ciones dependiendo del valor de alguna condici´ on l´ ogica.
- Continue pasa el control a la siguiente iteraci´ on de un for o while, igno-
rando cualquier instrucci´on posterior (del for o while en cuesti´on).
38
3.9. If, else y elseif
If eval´ ua una expresi´ on l´ ogica y ejecuta un grupo de instrucciones si la
expresi´ on l´ ogica es verdadera. La forma m´as simple es la siguiente
>> if expresi´ on l´ ogica
instrucciones
end
Ejemplo. Supongamos que queremos obtener las ra´ıces de una ecuaci´ on
de segundo grado ax
2
+ bx + c = 0.
Podemos crear un archivo de instrucciones que nos pida los coeficientes
a, b y c y determine las ra´ıces, una vez que haya comprobado que son reales.
Le daremos el nombre raices.m.
>>% raices determina las ra´ıces de ax
2
+ bx + c = 0, nos pide los coefi-
cientes
a=input(’dame coefic de xˆ’);
b=input(’dame coefic. de x’);
c=input(’dame ter.indep’);
Delta = bˆ2-4*a*c;
if Delta<0
disp(’no hay ra´ıces reales’)
end
[x1,x2]=[(-b+sqrt(Delta))/2*a,(-b-sqrt(Delta))/2*a]
Para entender c´omo funciona elseif y else, consideramos el mismo ejemplo
anterior, pero vamos a establecer distintas salidas, seg´ un sea el valor de Delta.
>>% raices1 determina las ra´ıces de ax
2
+bx +c = 0, nos pide los coefi-
% cientes
a=input(’dame coefic de xˆ’);
b=input(’dame coefic. de x’);
c=input(’dame ter.indep’);
Delta = bˆ2-4*a*c;
if Delta<0
disp(’no hay ra´ıces reales’)
39
elseif Delta>0
[x1,x2]=[(-b+sqrt(Delta))/2*a,(-b-sqrt(Delta))/2*a]
else
x=-b/(2*a)
disp(’ra´ız doble’)
end
elseif eval´ ua la expresi´ on l´ ogica que aparece en su misma l´ınea si if o los
anteriores elseif resultan falsos. Si dicha expresi´ on l´ogica es verdadera se
ejecutan las instrucciones siguientes hasta el pr´ oximo elseif o else.
Por el contrario, else no lleva expresi´on l´ ogica a evaluar y matlab realiza
las instrucciones siguientes hasta end si las expresiones l´ogicas de if y los
elseif anteriores so falsos. La forma general de un if es la siguiente:
>>if expresi´on l´ogica
instrucciones
elseif expresi´on l´ogica
instrucciones
elseif expresi´on l´ogica
instrucciones
————-
————–
elseif expresi´on l´ogica
instrucciones
else
instrucciones
end
3.10. For
La sintaxis es la siguiente:
>>for ´ındice=inicio:incremento:final
instrucciones
40
end
Si el incremento es la unidad, no hace falta indicarlo.
Ejemplo. Crear un archivo de funci´on para determinar n!.
Vamos a File-New para abrir un nuevo archivo .M y escribimos
function y=factorial(n)
% Esta funci´on determina el factorial de un natural N
y=1;
for k=1:n
y=y*k
end
Ejemplo. Construir una matriz A, n × m, tal que a
ij
= 1/(i + j − 1).
for i=1:n
for j=1:m
A(i,j)=1/(i+j-1);
end
end
3.11. while
Su sintaxis es la siguiente:
>>while expresi´on
instrucciones
end
Mientras que la expresi´ on que controla el while sea verdadera, se ejecutan
todas las instrucciones comprendidas entre while y end.
Ejemplo. Calcular el primer natural n tal que n! es un n´ umero con 100
d´ıgitos.
>>n=1;
while prod(1:n)<1e100
n=n+1;
end
41
3.12. Break
Esta instrucci´ on se usa para terminar un for o un while antes de que
se haya completado la ejecuci´on. Si ´este no es el caso, se usar´ a el comando
return.
Ejemplo. Supongamos que se desea determinar un vector v con un n´ umero
de componentes menor o igual que 10 y que verifique: a) sus componentes
son de la forma 24-kˆ2 y b) son no negativas.
>>for k=1:10
w(k)=24-kˆ2;
if w(k)<0
break
end
end
El programa anterior determina un vector de la forma w = (23, 20, 15, 8, −1).
Es decir, el for se termina cuando k = 5 y w(5) = −1, pues la expresi´ on l´ ogica
del if, w(k) < 0 es cierta y Matlab ejecuta la instrucci´ on break que termina
el for, aunque no se ha llegado al final (k = 10). El vector buscado ser´ıa
>>n=length(w);
v=w(1:n-1);
Es decir, basta eliminar la ´ ultima componente de w.
3.13. Continue
Este comando pasa el control a la siguiente iteraci´on en un for o un while,
sin realizar las instrucciones siguientes que pueda haber antes de end.
Ejemplo. Determinar un vector y cuyas componentes sean de la forma
sen x/x, para x = −1 : .1 : 1, exceptuando x = 0.
>>k=0;
for x=-1:.1:1
if x==0
42
continue
end
k=k+1;
y(k)=sin(x)/x;
end
3.14. Switch
La sintaxis es como sigue
switch expresi´ on%(o variable)
case valor1
instrucciones %(se ejecutan si el valor de expresi´ on es valor1
case valor2
instrucciones %(se ejecutan si el valor de expresi´ on es valor2)
———-
otherwise
instrucciones %(se ejecutan si el valor de expresi´on no es ninguno de los
valores de cada caso)
end
Ejemplo. Supongamos que una variable escalar se llama var. Si el valor
de var es -1, debe aparecer en pantalla el texto ”uno negativo”; si el valor es
0, queremos que aparezca en pantalla el texto ”cero”; Si el valor de var es 1,
debe aparecer en pantalla el texto ”uno positivo”. Finalmente, si el valor de
var es cualquier otro, debe aparecer el texto ”otro valor”.
>>switch var
case -1
disp(’uno negativo’)
case 0
disp(’cero’)
case 1
disp(’uno positivo’)
43
otherwise
disp(’otro valor’)
end
Si el valor de var es 2, aparecer´ a en pantalla el texto ”otro valor”.
44
Cap´ıtulo 4
C´alculo Simb´olico
4.1. Variables simb´olicas
Las variables simb´olicas se crean con la instrucci´ on syms. Una vez declaradas
las variables simb´ olicas, se pueden definir funciones simb´ olicas. Por ejemplo
>>syms x a
f=x*sin(x/a);
N´otese que en el c´alculo simb´ olico se prescinde del punto que se antepon´ıa
con algunas operaciones para indicar que dicha operaci´ on se hac´ıa coordenada
a coordenada. Si en alg´ un momento dudamos si una funci´ on es de datos o
simb´ olica se puede recurrir a la instrucci´on class. Si tecleamos
>>class(x)
y pulsamos enter, obtenemos
ans sym
que nos advierte de que x es una variable simb´olica.
4.2. Derivaci´ on e integraci´ on
1) C
´
ALCULO DE DERIVADAS. Para calcular derivadas, Matlab dispone
de la funci´on diff. Supongamos que se quiere calcular la derivada tercera de
45
f(x) = x
3
sen(x/a). Se procede como sigue:
>>syms x a
f=xˆ3*sin(x/a);
d3f=diff(f,3)
En pantalla aparece la derivada tercera de f escrita a la manera de Mat-
lab. Si se quiere que aparezca expresada de la forma usual, se puede usar la
instrucci´ on pretty:
>>syms x a
f=xˆ3*sin(x/a);
d3f=diff(f,3)
pretty(d3f)
Para calcular la derivada primera de f basta escribir diff(f).
2) C
´
ALCULO DE PRIMITIVAS. Para calcular una primitiva de una
funci´on f, se dispone de la funci´on int.
Ejemplo. Calcular
_
xsenxdx.
>>syms x
f=x*sin(x);
F=int(f)
3) C
´
ALCULO DE INTEGRALES DEFINIDAS.
Ejemplo. Calcular
_
2
0
xe
x
dx.
>>syms x
f=x*exp(x);
I=int(f,x,0,2)
ans exp(2)+1
Si se desea obtener el resultado en forma decimal y con un n´ umero preciso
de decimales, se usa la instrucci´on vpa(I,n), donde n es el n´ umero total de
d´ıgitos para representar el valor de I. Si ponemos
>>vpa(I,5)
ans 8.3891
En realidad, no es necesario indicar la variable independiente x y basta
poner I = int(f,0,2).
46
4.3. C´alculo de l´ımites
Para el c´alculo de l´ımites, Matlab dispone de la funci´ on limit.
Ejemplo. Calcular l´ım
h→0
sen(x + h) − sen x
h
.
>>syms x h
f=(sin(x+h)-sin(x))/h;
a=limit(f,h,0)
ans cos(x)
Ejemplo. Calcular l´ım
x→0
+
sen

x

x
.
>>syms x
f=sin(sqrt(x))/sqrt(x);
limit(f,x,0,’right’)
Ejemplo. Calcular l´ım
x→∞
x
e
x
2
.
>>syms x
f=x/exp(xˆ2);
limit(f,x,inf)
4.4. El polinomio de Taylor
Para determinar el polinomio de Taylor de una funci´on f, de orden n
en el punto x = a, Matlab dispone de la funci´on taylor, cuya sintaxis es:
taylor(f,n+1,a). N´otese que, si desea el polinomio de orden n, en la funci´ on
taylor se indica n + 1, que es el n´ umero de t´erminos de que consta dicho
polinomio.
Ejemplo. Determinar el polinomio de Taylor de f(x) = (x +1) sen(x
2
) de
orden 3 en el origen
>>syms x
f=(x+1)*sin(xˆ2);
taylor(f,4,0)
ans x
2
+ x
3
.
47
Matlab dispone de otra funci´ on para obtener el polinomio de taylor. Se
trata de la funci´on taylortool que nos abre una ventana gr´afica donde apare-
cen la gr´ afica de la funci´on y del polinomio de taylor. Adem´as, permite ir
cambiando el orden del polinomio, el punto x = a, etc, manipulando ade-
cuadamente los correspondientes ”botones”.
−6 −4 −2 0 2 4 6
−15
−10
−5
0
5
10
15
Taylor Series Approximation
T
N
(x) =
x
2
+x
3
−1/6 x
6
−1/6 x
7
La gr´ afica de la funci´ on aparece en trazo continuo de color azul. Pulsando
en el bot´on N se puede ir cambiando el orden del polinomio.
4.5. Resoluci´ on de ecuaciones algebraicas
Para encontrar las soluciones de una ecuaci´ on o (sistema) algebraica, Mat-
lab dispone de la funci´on solve.
Ejemplo. Resolver la ecuaci´on x
3
+ x + 1 = 0.
>>solve(’xˆ3+x+1=0’)
vpa(ans,4)
-0.6826
0.3411-1.162 i
48
0.3411+1.162 i
Ejemplo. Resolver el sistema x + 2y = 1, 2x − 3y = 2.
>>[x,y]=solve(’x+2*y=1’,’2*x-3*y=2’)
ans x=1, y=0.
Tambi´en puede usarse solve para despejar una variable en una igualdad.
Ejemplo. Despejar b en la igualdad 3ab + c = 1.
>>solve(’3*a*b+c=1’,’b’)
ans b=(1-c)/3a.
4.6. Ra´ıces de ecuaciones arbitrarias
Para ecuaciones generales, Matlab dispone de la funci´ on fzero. Puede
usarse de dos formas diferentes.
a) Si somos capaces de determinar un intervalo [a,b] que contenga la ra´ız
que buscamos.
Ejemplo. Encontrar en el intervalo [π/6, π] una ra´ız de la ecuaci´on sen x−
x
2
= 0.
Sea f(x) = sen x − x
2
. Como f(π/6) = π
2
/36 − 1/2 = −0.2258 < 0 y
f(π) = π
2
> 0, el Teorema de Bolzano nos asegura que hay una ra´ız de
la ecuaci´on en el intervalo en cuesti´ on. Para encontrarla, procedemos como
sigue
>>fzero(’sin(x)-xˆ2’,[pi/6,pi])
ans 0.8767.
b) Partiendo de un valor cercano. La funci´ on fzero tambi´en puede encon-
trar una ra´ız de una ecuaci´on a partir de un valor cercano.
Ejemplo. Determinar una ra´ız de la ecuaci´on anterior con el dato x
0
= π.
>>fzero(’sin(x)-xˆ2’,pi)
ans 0.8767.
49
4.7. Resoluci´ on de ecuaciones diferenciales
Vamos a ver c´omo se emplea la funci´ on dsolve para resolver ecuaciones
diferenciales.
a) La integral general de una ecuaci´ on diferencial. Supongamos que se
desea resolver la ecuaci´on diferencial
y

= 1 + y
2
.
>>y=dsolve(’Dy=1+yˆ2’,’x’)
ans y = tg(x + c
1
).
Si no se indica la variable independiente ’x’, Matlab nos da la respuesta
con la variable t: y = tg(t + c
1
).
b) Una integral particular. Supongamos que buscamos la soluci´ on de la
ecuaci´ on
y

− 3y

+ 3y

− y = 0
que verifica las condiciones iniciales y

(0) = 1, y

(0) = 0, e y(0) = 0.
>>y=dsolve(’D3y-3*D2y+3*Dy-y=0’,’D2y(0)=1’,’Dy(0)=0’,’y(0)=0’,’x’)
ans y = 1/2x
2
e
x
.
4.8. Sustituci´ on y evaluaci´on de expresiones
Empezaremos estudiando c´omo se sustituyen en una expresi´on simb´olica
unas variables por otras expresiones simb´olicas.
Ejemplo. Sustituir en (x − 2)
2
+ y
2
− 1 x e y por cos(t) y sen(t), respec-
tivamente.
>>syms x y t
f=(x-2)ˆ2+yˆ2-1;
g=subs(f,{x,y},{cos(t),sin(t)});
g
ans (cos(t) − 2)
2
+ sen
2
(t) − 1
Si queremos obtener una expresi´on simplificada de g
50
simple(g)
ans -4*cos(t) +4.
4.9. La Transformada de Laplace
Para encontrar la transformada de Laplace se usa la funci´ on laplace. Si
no se indica otra cosa, expresa la transformada en funci´ on de la variable s.
Ejemplo. Encontrar la transformada de f(y) = y
5
.
>>syms y
laplace(yˆ5)
ans 120/s
6
Si la funci´on tiene por variable s, entonces Matlab nos da la transformada
con variable dependiente t.
Ejemplo. Encontrar la transformada de Laplace de f(s) = sen(as).
>>syms a s
laplace(sin(a*s))
ans a/(t
2
+ a
2
).
Si se desea que la variable dependiente de la transformada sea la que
nosotros determinemos, por ejemplo p, se procede como sigue.
Ejemplo. Encontrar la transformada de f(x) = cos(ax).
>>syms a x p
laplace(cos(a*x),p)
ans p/(p
2
+ a
2
).
Funci´on delta de Dirac:
>>syms t
laplace(dirac(t-2))
ans e
−2s
.
Funci´on escal´ on unidad de Heaviside:
>>syms t
laplace(heaviside(t-3))
ans e
−3s
/s.
51
Transformada de la derivada:
>>syms t
laplace(diff(sym(’F(t)’)))
ans s*laplace(F(t),t,s)-F(0).
4.10. La transformada inversa
La transformada inversa se obtiene con la funci´ on ilaplace. Por defecto,
expresa la funci´on con variable dependiente t.
Ejemplo. Encontrar la transformada inversa de F(p) = 6/p
4
.
>>syms p
ilaplace(6/pˆ4)
ans t
3
.
Se puede conseguir que la variable dependiente de la funci´on sea la que
queramos, por ejemplo, x.
Ejemplo. Transformada inversa de F(p) = 1/(p − 1).
>>syms p x
ilaplace(1/(p-1),p,x)
ans e
x
.
52

Cap´ ıtulo 1 Comandos B´sicos y Matrices a
1.1. Introducci´n o

Matlab es un lenguaje de alto nivel orientado al desarrollo de c´lculos t´ca e nicos. Integra c´lculo, visualizaci´n y programaci´n en un entorno interactivo a o o de f´cil manejo. Los problemas y las soluciones se expresan en la notaci´n a o matem´tica habitual. a El elemento b´sico de informaci´n es una matriz a la que no hace falta a o asignar dimensiones con anterioridad. Por tanto, pueden abordarse problemas que requieren una formulaci´n vectorial o matricial de un modo m´s f´cil que o a a en un lenguaje tipo FORTRAN o C. El nombre MATLAB es una abreviatura de Matrix Laboratory.

1.2.

Iniciaci´n a Matlab o

Para entrar en Matlab, debemos hacer clic dos veces en el icono correspondiente. Para salir, tenemos dos opciones: 1) en File podemos hacer clic en exit y 2) podemos teclear quit y pulsar enter. Una vez que hemos entrado en Matlab, escribiremos las instrucciones en la ventana de comandos (command window) a partir del s´ ımbolo >>

2

(denominado prompt). Si se quiere salvar en un archivo toda una sesi´n de o trabajo, podemos proceder como sigue: Iniciamos la sesi´n tecleando: o >> diary nombre.txt y terminar la sesi´n tecleando o diary off Autom´ticamente Matlab crea un archivo con la denominaci´n nombre.txt a o que se encuentra en el directorio de trabajo. El nombre es opcional, pero un nombre adecuado puede ser poner el mes seguido de la fecha del d´ en ıa curso: octubre21.txt. Si queremos guardar el archivo en un disquete, CD,.., lo abrimos y en File hacemos clic en save as. Ahora pulsando en Mi PC podemos guardarlo en la unidad que deseemos. Matlab nos ofrece una ayuda que puede ser de gran utilidad. Si tenemos alguna duda sobre el funcionamiento concreto de determinada funci´n, de la o que conocemos su denominaci´n en Matlab, podemos teclear en la ventana o de comandos >> help nombre y aparece en pantalla la ayuda de Matlab explicando el funcionamiento de la funci´n. Si no fuera suficiente, podemos pulsar en doc nombre que nos o ofrece una ayuda m´s completa y ejemplos. Supongamos que tenemos alguna a duda sobre el funcionamiento de la funci´n det (determinante). Tecleamos o >> help det. Si tecleamos >> lookfor nombre aparece en pantalla una relaci´n con todos los comandos que contienen nomo bre. Si no queremos que la ayuda aparezca en la ventana de comandos sino en una ventana espec´ ıfica, debemos teclear >> helpwin nombre y se abre una ventana con la ayuda. Finalmente, indicar que tambi´n podemos buscar la ayuda acudiendo a e Help y haciendo clic en Matlab Help.

3

1.3.

Operaciones b´sicas y variables a

Matlab distingue entre may´sculas y min´sculas. Entonces A y a pueden u u ser nombres apropiados para dos variables distintas. El nombre de toda variable debe comenzar por una letra. X, x, X1 o media son nombres v´lidos de a variables. +, -, *, /, ˆ son los s´ ımbolos que denotan las operaciones suma, diferencia, producto, cociente y potencia. Las operaciones se van realizando por orden de prioridad, primero las potencias, despu´s las multiplicaciones y divisiones e y, finalmente, las sumas y restas. Las operaciones de igual prioridad se llevan a cabo de izquierda a derecha. Si se quiere asignar a una variable x el valor 3 + 25 , se escribe a continuaci´n del prompt o >> x=3+2ˆ5; Se pueden utilizar las funciones matem´ticas usuales. Por ejemplo, si se a √ quiere asignar a la variable a el valor 3, se escribe >> a=sqrt(3); Los comentarios deben ir precedidos del signo %. Cuando una instrucci´n o no cabe en una l´ ınea se puede cortar en dos trozos, en cuyo caso el primero de ellos debe acabar con tres puntos seguidos y el segundo trozo va en la l´ ınea siguiente. Para recordar ´rdenes previas (o posteriores si hemos retrocedido) o se usan las teclas de cursor ↑ y ↓, y para corregir una instrucci´n las teclas o → y ←. Si se quiere conocer el valor de una variable, basta teclear su nombre. Para conocer las variables que se han usado hasta el momento, se utiliza el comando who y, si se quiere m´s informaci´n, whos. Para eliminar una a o variable denominada nombre >>clear nombre A continuaci´n damos una relaci´n con los nombres de las funciones m´s o o a habituales: ra´ cuadrada: sqrt(x). ız funci´n exponencial: exp(x). o 4

funci´n seno: sin(x). o funci´n coseno: cos(x). o funci´n tangente: tan(x). o funci´n cotangente: cot(x). o funci´n arcoseno: asin(x). o funci´n arcotangente: atan(x). o funci´n logaritmo neperiano: log(x). o funci´n logaritmo en base 10: log10(x). o Resto de la divisi´n entera de m por n: rem(m,n). o Matlab tiene definidas variables con un valor predeterminado. Veamos algunos ejemplos m´s importantes: a pi. Su valor es el n´mero π. u inf. Su valor es infinito. Aparece, por ejemplo, cuando hacemos 1/0. eps. Es el n´mero positivo m´s peque˜o con que trabaja Matlab u a n >>eps ans 2.2204e-016 Terminamos esta secci´n explicando c´mo puede controlarse el formato o o num´rico con que se muestran en pantalla los resultados num´ricos de los e e c´lculos. Sin embargo, hay que se˜alar que esto no tiene nada que ver con la a n precisi´n con la que se realizan dichos c´lculos. Si queremos que se muestren o a en pantalla los resultados con s´lo 5 d´ o ıgitos, se teclea format short >> format short a=1/3 ans 0.3333 Si deseamos ver en pantalla los resultados con 15 d´ ıgitos, se teclear´ a format long. Si tecleamos format rat, Matlab busca una aproximaci´n o racional. Ejemplo. Matlab denota el n´mero π por pi. Veamos cu´l es el resultado u a de teclear format rat antes de pi: >> format rat pi

5

hay una forma m´s simple de introducirlo. El vector fila v = (1. >> format short e a=1/3 ans 3. As´ a a ı.ans 355/113. Por tanto. Matlab ejecuta la instrucci´n en cuesti´n o o y no muestra en pantalla el resultado ni los c´lculos involucrados.4. −1) se introduce en Matlab como sigue >> v = [1 2 − 1]. 2. Matlab guarda en memoria el vector v = (1. 8). Si se pone el punto y coma. Finalmente. al pulsar enter Matlab muestra o en pantalla la fila 1 2 -1. Vectores Si queremos introducir las componentes de un vector v. a Ejemplo. es la forma m´s simple de indicar el vector a v = (4. a es importante tener en cuenta esta caracter´ ıstica de Matlab. −1) y no lo muestra en pantalla. Cuando el desfase es la unidad se ´ puede omitir. Es decir. Esto es un hecho general que se producir´ cada vez que escribimos alguna instrucci´n. 3. Entonces v = 4 : 8. si los c´lculos que debe realizar Matlab son numerosos. 6 . 5. Si el vector o matriz fila tienen la particularidad de que sus componentes est´n igualmente espaciadas. 2. las escribiremos entre corchetes separ´ndolos con comas o espacios. separados por dos puntos. format short e produce el resultado en notaci´n punto o flotante con cinco d´ ıgitos Ejemplo. puede que no nos a interese verlos en pantalla. la primera componente. Por ejemplo. a o Si colocamos el punto y coma final. 5. 7. el desfase de uno al siguiente y el ultimo. se indica. 6.3333e-001 1. 7) se puede introducir de la forma siguiente >> v=1:2:7. el vector v = (1. N´tese el punto y coma final. Si no se pone.

10). La matriz 2 −1 0 A= . Manipulaci´n de matrices o Para introducir los elementos de una matriz A. Para finalizar. escribiremos A(i.v).Producto escalar: >> dot(u. Recu´rdese que. Cuando necesitemos conocer el n´mero de componentes de un vector v u bastar´ recurrir a la funci´n length(v). aparee cer´ en pantalla una fila de 10 n´ meros que no son otra cosa que a u las componentes de v.3 2 1]. a o sort(v) es el vector que resulta al escribir las componentes de v de menor a mayor.j). mientras que las filas se separan con punto y coma. 18. . . 1. Ejemplo. si no colocamos al final el punto y coma.Otra forma de introducir un vector fila con las componentes igualmente espaciadas consiste en indicar la primera componente. Ejemplo. escribiremos entre corchetes los elementos de cada fila separados por un espacio (o por una coma).Suma: >> u+v. 3 2 1 se introduce en Matlab como sigue >>A=[2 -1 0.Producto por un escalar: >> a*v. como es usual en la teor´ de matrices. Tambi´n podemos ıa e 7 .Producto vectorial: >> cross(u.v). veamos algunas operaciones habituales entre vectores: . la ultima y el n´mero ´ u total de componentes. El vector v que tiene 10 componentes igualmente espaciadas siendo 1 la primera y 18 la ultima se indica ´ >> v = linspace(1.5. Para referirse al elemento de la fila i y columna j de una matriz A. .

ones(n. Cuando las filas ( o las columnas) que forman la submatriz son consecutivas hay una forma m´s a simple de denotarla >>A(1:4. 6. det(A) nos da el determinante de una matriz cuadrada A. la columna j de A se denota en Matlab por A(:. rank(A) es el rango de la matriz A.m) es la matriz n × m cuyos elementos son todos iguales a 1. 3. Matriz nula: zeros(3. escribiremos A(i.:).m) es una matriz n × m de n´meros aleatorios distribuidos u uniformemente en el intervalo (0. inv(A) es la matriz inversa de la matriz cuadrada y regular A.m) es una matriz de n´meros u aleatorios como antes. 4. Ciertas matrices muy simples. Por ejemplo. entre ellas la matriz unidad y la matriz nula. rand(n. 8 . o 10. La submatriz de A formada por las filas 2 y 3 y las columnas 1 y 2 de A se denota por A([2 3].[1 2]). si necesitamos la fila i de A. A’ es la matriz traspuesta y conjugada de A.necesitar referirnos a alguna submatriz de A. sin(A) es la matriz (sen(aij )). 7. size(A) nos da las dimensiones de la matriz A. no necesitan ser introducidas elemento a elemento ya que Matlab dispone de funciones que nos permitir´n referirnos a ellas de forma muy f´cil. donde A = (aij ). a 5. a a 1. pero ahora est´n distribuidos normalmente. 9. diag(A) es una matriz columna con los elementos de la diagonal principal de A. randn(n. 2. Matriz unidad: eye(4) es la matriz unidad de orden 4.1). Del mismo modo.4) es la matriz nula 3 × 4.j). An´logamente ocurre a con las otras funciones de Matlab que hemos descrito en una secci´n anterior. 11.[2 4]) es la forma de referirse a la submatriz de A formada por las cuatro primeras filas y por las columnas 2 y 4. 8.

A.1. estas operaciones se indicar´n anteponiendo un punto al s´ a ımbolo usado para denotar la operaci´n en cuesti´n. Operaciones entre escalares y matrices a+B es la matriz que resulta al sumar el escalar a cada elemento de la matriz B. a) Determinar el cuadrado de la matriz cuadrada A: >> Aˆ2 b) Determinar el producto de las matrices A y B (recordar que el producto s´lo es posible si el n´mero de columnas de A es igual al de filas de B: o u >> A*B c) Sumar las matrices A y B (que deber´n tener la misma dimensi´n): a o >> A+B Tambi´n necesitaremos operaciones como las siguientes: el producto de e dos matrices elemento a elemento. 1.*B es la matriz cuyos elementos se obtienen haciendo el producto de cada elemento de A por el correspondiente de B. Operaciones con matrices Los s´ ımbolos + . En general.7.6./B es la matriz cuyos elementos se obtienen dividiendo cada elemento de A por el correspondiente de B. * y ˆ se reservan para las operaciones matriciales suma. dividir elemento a elemento una matriz por otra. A continuaci´n damos una o o o relaci´n de estas operaciones: o A. elevar cada elemento de una matriz a un cierto exponente. 9 . producto y potencia. a*B cada elemento de B se multiplica por el escalar a. A/b cada elemento de A se divide por el escalar b.ˆa es la matriz que resulta al elevar cada elemento de A al exponente a. A. Ejemplos.

 1 2 1  ·  y  =  0 . los dos sistemas equivalen a la igualdad A · X = B. 3 1 Si el determinante de A es no nulo. A. donde     x1 x2 1 1     X =  y1 y2  y B =  1 0  . y] = A\b x ans = −0. Matricialmente.3 1]. b=[2. que es la soluci´n del sistema. Resolver el sistema 3x + y = 0. Entonces.8. Matlab permite encontrar o y esta soluci´n mediante la instrucci´n A\b. Resolver los dos sistemas siguientes             2 1 1 x 1 1 2 1 1 x              1 2 1  ·  y  =  1 .4 . y resulta x = A−1 ·b. o o >> A=[1 2. multiplicando la igualdad A x = b por A−1 (a la izquierda). A\b nos da la soluci´n del sistema de ecuaciones o Ax = b. A\B nos da la soluci´n del sistema A · X = B.2 M´s en general.0]. y 1. Las instrucciones A/b y A\b Supongamos que A es una matriz cuadrada de orden n y b un vector columna de n componentes. z1 z2 1 −1 10 . sabemos que existe la matriz inversa A−1 . [x.1. u o Ejemplo. x + 2y = 2 Ejemplo. −1 z z 1 1 1 2 1 1 2 Ambos sistemas tienen la misma matriz de coeficientes. Escribimos el sistema en forma matricial: A x = b donde b = 2 y A es y 0 la matriz 1 2 . si B es una matriz con un n´mero de filas igual que el a u n´mero de columnas de A.

la instrucci´n B/A nos ofrece la soluci´n del o o sistema X · A = B.2 1 1].51). B=[1 1. Ejemplo.C= −1 3 4 1 . z) = (−0.Podemos resolver los dos sistemas de un tir´n procediendo como sigue o >> A=[2 1 1.1 0 -1.25 0  . Ejemplo. Resolver el sistema (xyz) · A = (101). Supongamos que ya hemos introducido las matrices: B= entonces la matriz 1 2 .9. b/A ans (x. 11 .25 1   ans  0. siendo A la matriz  1 2 1    1 0 −1  .1 2 1.1 1 2]. A\B   0. Matrices definidas mediante cajas Cuando una matriz A se compone de cajas que ya hemos introducido.1 -1].1 0.25 −1 Por otra parte. 2 1 1  >> A=[1 2 1. b=[1 0 1]. 1. 0. y. se puede introcucir A de una manera m´s c´moda como muestra el ejemplo a o siguiente.5 − 0.

2*ones(2. u b) En todos los niveles el n´mero total de columnas es el mismo.2).2) B C] Siempre que definamos una matriz por cajas deberemos tener en cuenta las dos restricciones siguientes: a) En cada nivel el n´mero de filas de las cajas es el mismo. u 12 .3) eye(2.  se puede introducir como sigue >>A=[zeros(2.   A=  0 0 2 2 0 0 2 2 0 1 0 0 0 1 1 −1 3 2 4 1    .

1. a Ejemplo . Tomando la distancia entre dos valores consecutivos de x convenientemente peque˜a. Se pueden dibua jar varias curvas en la misma ventana gr´fica. y(x)). se empieza estableciendo la matriz fila x cuyos elementos son los valores de x para los que se computar´ el valor correspondiente de y(x). 2π] y=x. Curvas planas Si se desea obtener la gr´fica de la funci´n y = y(x) en el intervalo a o [a. n el aspecto final ser´ el de una verdadera curva en lugar de una poligonal. % Tomamos 60 valores de x igual % mente espaciados en [−2π.*sin(x). es decir.60). o >> x=linspace(-2*pi. calcula los puntos (x. Dibujar la curva de ecuaci´n y = xsenx en el intervalo [−2π.Cap´ ıtulo 2 Gr´ficos a 2.Representar gr´ficamente las curvas y1 = x2 e y2 = xex en el a 13 . 2π]. para los valores de x que le indiquemos y representa dichos puntos unidos por un segmento.2*pi. incluyendo los extremos. Ejemplo.b].b]. Si el intervalo de variaci´n de a o x es el mismo. % matriz fila con los valores de y(x) plot(x.y) Pulsando enter. se abre una ventana gr´fica con la curva. debemos tener presente que Matlab dibuja las curvas punto a punto.ˆ 2. se puede proceder como se muestra en el ejemplo siguiente. Lo usual ser´ tomar puntos a a igualmente espaciados en el intervalo [a. Por ello.

>> x1=-1:. y1=x.2]. >>x=linspace(-2*pi. t=x+eps. plot(x. se puede conseguir el mismo resultado de la forma siguiente.3. Otra forma de conseguir el mismo resultado consiste en usar la orden hold on.x.*exp(x).90).y2) De esta forma se consigue que se abra una ventana gr´fica con las dos a curvas. 14 .y1. Se presenta el problema de que para x = 0 no est´ definia da la funci´n. a para x ∈ [−2π. Manejando adecuadamente o ım la variable eps. tecleamos figure y se abre una ventana gr´fica nueva donde podremos hacer la nueva representaci´n. Si el intervalo donde se quiera dibujar cada curva no es el mismo. Si ya tenemos una ventana gr´fica con una curva y a queremos dibujar una segunda curva en la misma ventana. y2=x2. ponemos hold on y a continuaci´n las ´rdenes necesarias para dibujar la o o segunda curva.100). a o EJEMPLO. Supongamos que se desea obtener la gr´fica de f (x) = sen(x)/x. y1=x1. Dibujar y = x en [-1. cuando ya se tiene una ventana gr´fica abierta y a se quiere dibujar una nueva curva en otra ventana gr´fica. pero sin a perder la primera ventana.3].intervalo [-3.*exp(x2).1:1./t.ˆ 2. 2π].1:2.y2=x.2*pi.y2) Por el contrario.1] e y = xex en [0.y1) hold on x2=0:. plot(x2. >> x=linspace(-3. Se dibuja primero una de las curvas. y=sin(t). aunque l´ x→0 f (x) existe y vale 1. podemos evitar este problema. plot(x1. se teclea hold on y acto seguido se dibuja la otra Ejemplo.

2 −0. ylabel(’texto’) para a el eje OY. o 2.’.y.4 −8 −6 −4 −2 0 2 4 6 8 Otras opciones de la funci´n plot o 1. entonces podemos colocar el texto donde queramos con el propio rat´n.y.-’) 15 .’.y.’texto’).z.4 0. Color de la curva y estilo de l´ ınea: Se puede dibujar la curva del color y con el estilo que se desee.y) son las a coordenadas del punto donde queremos situar el centro izquierda del texto.6 0. Si usamos el comando gtext. Para colocar cualquier cadena de texto en el punto que queramos de la ventana gr´fica. Por ejemplo.8 0. Si se quiere escoger el color y estilo: >> plot(x. An´logamente.-’) De esta forma se consigue que la curva y = y(x) aparezca con trazo punteado y la z = z(x) como una l´ ınea de trazo discontinuo.y) y obtenemos 1 0.’. donde (x.’r .x.plot(t. si se escribe >>plot(x.2 0 −0. Etiquetas sobre los ejes: el comando xlabel(’texto’) se usa para que en el eje OX aparezca el texto que se desea. se usa el comando text(x.

y1 ). Dibujo de poligonales Supongamos que se desea dibujar la poligonal de v´rtices (xi . el ultimo v´rtice ha de ´ e ser (x1 . La siguiente tabla muestra la sintaxis de los diferentes colores y tipo de l´ ınea: S´ ımbolo y m r g b k Color amarillo magenta rojo verde azul negro S´ ımbolo . n. (1. . 0).la curva aparece en rojo y con l´ ınea de trazo discontinuo. ◦ + ∗ −− − Estilo de l´ ınea l´ ınea de puntos c´ ırculo m´s a estrella trazo discontinuo l´ ınea s´lida o Ejes a medida Para fijar los valores m´ximo y m´ a ınimo de los ejes: >>axis([xmin xmax ymin ymax]) Para que la escala sea la misma en ambos ejes: >>axis equal o axis(’equal’) Para que la gr´fica sea un cuadrado: a >>axis square Si se quiere que aparezca una rejilla: grid on. yi ) con e i = 1. Dibujar la poligonal cerrada de v´rtices (0. plot(x. 3) y (−2. Si la poligonal es cerrada.y) dibuja la poliginal (recordar c´mo o dibuja las curvas Matlab). y=[0 1 3 2 0]. 1). Ejemplo. e >>x=[0 2 1 -2 0]. Definir´ ıamos las matrices fila x e y que contienen las coordenadas correspondientes y el comando plot(x.y) y el resultado ser´ ıa 16 ... 2). (2.

5 0 0 OX 0..240).7 0.2.5 0.4*pi.5 0.1) plot(x.5 0.2) plot(x.4 1 0.sin(2*pi*x)) subplot(2.6 OY 1.3 1 0.3) plot(x.8 2 0.5 1 1. cada una en una subventana diferente. subplot(2. 4π]. El comando subplot A veces nos interesar´ disponer en una misma ventana gr´fica de varias a a subventanas para dibujar en cada una de ellas una curva distinta.3 0.2.. >>x=linspace(-4*pi.sin(3*pi*x)) subplot(2.2. con el objetivo de poder compararlas m´s c´modamente.5 2 2. Veamos un ejemplo.4) plot(x. para k = 1.9 2. a o Ejemplo.5 0.5 −1 −0.sin(pi*x)) subplot(2.2.sin(4*pi*x)) 17 . ..1 0 −2 −1.2. Queremos dibujar en una misma ventana gr´fica las curvas y = a sen(kπx).2 0. 4 y x ∈ [−4π.

si se necesitan m × n subventanas. Coloreado de pol´ ıgonos En la secci´n anterior hemos visto c´mo se dibuja una poligonal con o o Matlab.5 −1 −20 1 0.5 −1 −20 1 0.k). se tendr´ en cuenta que se a numeran de izquierda a derecha y de arriba hacia abajo.n. Ahora vamos a ver c´mo se colorea la regi´n interior del color que o o queramos. todas las subventanas responden a la forma subplot(2.3. estamos indicando que vamos a dibujar en la subventana que ocupa el lugar k.k). 18 . En el ejemplo anterior.Y se obtiene 1 0.5 −1 −20 1 0.5 0 −0.5 0 −0.2.5 0 −0. Cuando tecleamos subplot(m.5 0 −0.5 −1 −20 −10 0 10 20 −10 0 10 20 −10 0 10 20 −10 0 10 20 En general. 2. porque ten´ ıamos 4 curvas y parece lo m´s adecuado a disponerlas en dos filas y dos columnas.

Matlab dispone de la funci´n fill. o >> x=0:.y2) De esta forma se han dibujado las curvas en cuesti´n. Su sintaxis es la siguiente: o o fill(x.1 0 0 0. g y b pertenencen a (0. fill(X.9 0.7 0.y.6 0.y.4 0.’r’) (x e y son matrices fila que contienen las coordenadas x e y de los v´rtices de la poligonal.1) y representan las proporciones en u que se deben tomar los colores principales (rojo. plot(x.y2=sqrt(x).’r’) 1 0.4 0. o 19 . Se desea dibujar las curvas y = x2 y x = y 2 en el primer cuadrante.8 0.ˆ2. El programa anterior se continuar´ de la forma e ıa siguiente: X=[x x].5 0.1:1.3 0.y.2 0.x.[r g b]) Los n´meros r. La regi´n que encierran debe aparecer en color rojo.8 1 Si se desea escoger un color indicando las coordenadas (en el sistema RGB) se escribe >>fill(x.y1. verde y azul) para crear el color en cuesti´n.2 0.6 0. y=[y1 y2].Ejemplo. y1=x. Para colorear de rojo la o regi´n encerrada.

el Teorema r de Pit´goras nos dice que r2 = x2 + y 2 a y. r=1+cos(w). Vemos en la figura que ω es el ´na gulo que forman el vector de posici´n o del punto P con la direcci´n positiva o Y del eje OX y r es el m´dulo de dio P cho vector. polar(w. ´ o respectivamente. obtenemos x = r cos ω w e y = r sen ω. por otro. basta sustituir en esta ultima ecuaci´n x e y por r cos ω y r sen ω. Si de una curva plana X O sabemos que las coordenadas polares de sus puntos. (r. o Por comodidad. ω2 ].2*pi. La ecuaci´n de la circunferencia unidad o 2 2 en cartesianas es x + y = 1 y en coordenadas polares r = 1. usando las definiciones de sen ω y cos ω.4. conocida la ecuaci´n de una curva en o o cartesianas. vamos a usar w en lugar de ω. verifican la igual dad r = r(ω). para obtener la ecuaci´n en polares. 20 . Dibujar la curva de ecuaci´n r = 1 + cos ω. >> w=linspace(0.r) pulsando enter se abre una ventana gr´fica que muestra la curva siguiente a (denominada cardioide). Ejemplo. para 0 ≤ ω ≤ 2π.60). para ω ∈ [ω1 . diremos que r = r(ω) es la ecuaci´n de o la curva en coordenadas polares.2. Curvas en polares Empezamos recordando c´mo se relacionan las coordenadas polares con o las cartesianas. En general. Por un lado. ω).

150).t) grid on y el resultado es 21 .90 120 2 60 1.5 150 1 0. 6π].sin(t). para t ∈ [0.6*pi.5. Curvas en el espacio Supongamos que se quiere dibujar la curva de ecuaciones param´tricas e x = cos t. a) Con plot3: >>t=linspace(0. y = sen t. z = t. Podemos usar el comando plot3 o el comando ezplot3.5 30 180 0 210 330 240 270 300 2. plot3(cos(t).

’t’. >>t=linspace(0. t ∈ [0.sin(t).30).’sin(t)’. plot(cos(t).pi. e Ejemplo. pi].-sin(t).30). [0. se usa la funci´n quiver.5 −1 −1 −0.5 0 1 b) Con ezplot3: ezplot3(’cos(t)’. %Dibujamos el vector tangente en s´lo 10 puntos o % intermedios de la curva quiver(cos(t). Representar la curva de ecuaciones param´tricas e x = cos(t).pi.5 0 −0.10).5 0.20 15 10 5 0 1 0.6*pi]) Terminamos esta secci´n indicando c´mo puede conseguirse que aparezo o can los vectores tangentes al dibujan curvas en param´tricas .cos(t)) y se obtiene 22 . o >>t=linspace(0.sin(t)) hold on >> t=linspace(0. plot(cos(t). y = sen(t).sin(t)) Si se quiere que aparezcan los vectores tangente.pi.

1. Con la orden [x.1:1. cuando escribamos z=x. z ser´ la matriz 3 × 5 que contiene los valores de z en todos y cada uno a de los puntos (x.6 0.5 0 . y) con x igual a uno de los valores -1.6. De este modo resultan dos matrices con la misma dimensi´n.5 1 1.5 .1.5.ˆ2 en la ventana de comandos.8 0..-1:.5:1.5:1).1:2 y una matriz y con todas sus columnas iguales a -1:.1 e y igual a uno de los valores 0.4 0.-.5 2.2 1 0.5 −1 −0.y]=meshgrid(-1:. Considerao 2 2 mos la funci´n z = x + y y escribimos la orden o >> [x.5 1  .y]=meshgrid(o 2:. −1 −.5 1   x =  −1 −.5.5 0 0. Superficies Para dibujar una superficie de ecuaci´n z = z(x. que produce las matrices  −1 −.5  1 1 1 1 1  De esta forma..2 0 −0.5 .5 0 .ˆ2+y.5 1   0 0 0 0 0   y =  .6 −0.2 −0.1:1) Matlab crea una matriz x con todas sus filas iguales a -2:. 3] 23 .0.5.5 0 . 3]×[−3. y). Ejemplo. Veamos un ejemplo simple.5 .5 . se comienza por o establecer los intervalos de variaci´n de x e y. Dibujar la superficie z = x2 + y 2 en el dominio [−3.0:.1:2.8 −1.4 −0.

z) 4 3. surf(x. Dibujar la superficie z = 3 en el primer octante.y. para dibujar una superficie.y]=meshgrid(-3:.1:4).z) Adem´s de la orden surf(x. Hay diversas opciones: colormap(pink). % usamos size(x) para determinar las dimensiones de x de una manera segura.y. >> [x.z). surf(x.n). La orden rotate3d permite girar la superficie con el rat´n.z) (la diferencia con surf es que ´sta rellena e los espacios entre l´ ıneas). Ejemplo.-3:.ˆ2+y.y]=meshgrid(-4:.ˆ2). % Recordar lo que hemos dicho sobre el comando meshgrid. [m. podemos a emplear plot3(x.y.1:3). En ele ejemplo siguiente mostramos c´mo se dibuja una superficie plana o paralela a z = 0.5 2 4 2 0 −2 −4 −4 −2 2 0 4 24 . colormap(summer).n]=size(x).y.5 3 2.>>[x. z=3*ones(m.y. La oro den colormap permite cambiar el color de la superficie.colormap(winter).1:3. z=sqrt(x.-4:.z) o mesh(x.1:4. etc.

Adem´s.z.. 25 . Podemos proceder como sigue >>hold on contour(x.y.y. z=x..y]=meshgrid(-2:. o basta escribir >>[x.. 2.ˆ2+y. y) = c.2.ˆ2. y). para i = 1.3]) y se obtiene 8 6 4 2 0 2 1 0 −1 −2 −2 −1 1 0 2 Si s´lo se buscan las curvas de nivel (no se necesita dibujar la superficie).ˆ2. surf(x. >>[x.c3.y.2. 3.7.1:2).1:2). para (x. para c = 1. Representar la superficie de ecuaci´n z = x2 + y 2 .1:2.. 2] × [−2.z. n. y queremos que en el plano z = 0 aparezcan dibujadas las curvas de nivel.ˆ2+y.[1. y) = ci. z = f (x. . y) ∈ o [−2. 2]..-2:.-2:.c2.[c1. Ejemplo. deseamos que aparezcan representadas las curvas a de nivel f (x.z) hold on contour(x.cn]) y aparecen representadas las curvas de nivel f (x. Curvas de nivel Supongamos que hemos dibujado una superficie..1:2. z=x.y]=meshgrid(-2:.

[1.ˆ2.z.5 −1 −0.5 0 −0.5 0 0.1:2).5 1 0.5 −1 −1.5 1 1.1:2. clabel( contour(x.5 0 −0.contour(x.2.y.5 −1 −0.5 1 1.ˆ2+y.5 −2 −2 −1.y]=meshgrid(-2:. z=x.5 −2 −2 2 1 −1.3]) y se obtiene 2 1.3]) ) resultando 2 1.-2:.5 0 0.5 −1 3 −1.5 2 26 .2.5 2 Si se quiere que aparezcan etiquetas sobre cada curva de nivel que reflejen el valor de la constante c.y. se usa la funci´n clabel o >>[x.[1.z.5 1 0.

5 1 0. Se abre una ventana a (Save as) en la que debemos dar el nombre con que vamos a designar el archivo que contendr´ el gr´fico.1:2).y.ˆ2+y. Normalmente. elegiremos el tipo EPS file.8. Ahora es el momento de guardar el o n 27 . Matlab le a˜ade la extensi´n a a a n o que corresponda.y. Vamos a a File (en la ventana gr´fica) y hacemos clic en Save as. Gr´fica de la superficie z = x2 + y 2 con las corrspondientes a curvas de nivel. o Ejemplo.5 2 1. vamos a a a Edit (en le ventana gr´fica) y hacemos clic en Copy figure.z). z=sqrt(x.5 0 2 1 0 −1 −2 −2 −1 1 0 2 2.-2:. surfc(x. b) Latex. hay una forma muy c´moda que consiste en emplear la o funci´n surfc(x.z) y resulta 3 2.1:2. Una vez que tenemos el gr´fico en la ventana gr´fica.ˆ2). en cuyo caso la extensi´n que Matlab a˜ade es eps.y ]=meshgrid(-2:. A continuaci´n a o abrimos el documento word y pegamos. ¿C´mo exportar gr´ficos? o a a) Word. Autom´ticamente. >>[x. Primero debemos salvar el gr´fico de forma adecuada.Cuando necesitamos representar una superficie y deseamos que aparezcan las curvas de nivel.

eps.height=6cm]{nombre. Ahora debemos preparar el archivo Latex. nombre. o debemos incluir \usepackage{graphicx} 2) En el lugar donde vamos a incluir el gr´fico: a \begin{center} \includegraphics[width=5cm. lo que a exige realizar los siguientes dos pasos 1) En el archivo principal y antes de la instrucci´n \begin{document}.archivo creado.eps} \end{center} 28 . en la carpeta que contiene el archivo Latex donde queremos incluir el gr´fico.

). Archivos de funci´n o Las dos primeras l´ ıneas de un archivo de funci´n tienen la forma o function [y.z.) % Una explicaci´n que sirva para reconocer la funci´n en cualquier otro o o 29 .. 3.M con el nombre que le hayamos dado (nombre.. n a Los archivos de instrucciones se llaman as´ porque pueden consistir en una ı serie de instrucciones a ejecutar.m. se deber´ ir a File-New-M-File y aparece una ventana (Editor-Untitled) a donde podemos escribir el programa correspondiente. Con los primeros podemos definir nuevas funciones o que se a˜adir´n a las que ya trae Matlab (como sin(x). Archivos . Veremos que en ´stos puede ocurrir que en el e momento de su ejecuci´n nos pida una serie de valores (inputs). o que llamaremos archivos . exp(x).1.Cap´ ıtulo 3 Programaci´n o 3..]=nombre(a.M.sqrt(x).. Una vez terminado. En todos los o casos.b. vamos a File de dicha ventana y hacemos clic en Save As y podemos guardar el archivo .2.M Vamos a ver que podemos crear dos tipos de archivos con extensi´n .m).etc. Se denominan archivos de funci´n y archivos de o gui´n (o de instrucciones).

function [media. o 30 . son las variables de salida (dependientes). A continuaci´n van todas las ´rdenes que se necesitan o o para definir la nueva funci´n. Este m´todo nos servir´. mientras que y.. El nombre de la funci´n debe empezar con una letra y.. media=sum(x)/n. en ambos casos separadas por comas. end dest=sqrt(s/n). for k=1:n s=s+(x(k)-media)ˆ2. C´lculo de integrales usando un archivo a de funci´n o Vamos a ver una forma de calcular integrales simples y reiteradas creando un archivo de funci´n con el integrando.. o e a a para resolver otro tipo de problemas que tienen en com´n que necesitamos u hacer manipulable una funci´n.dest]=estadisticos(x) % Esta funci´n determina la media y la desviaci´n t´ o o ıpica de una fila x n=length(x). denotan las variables de entrada (las variables independientes). Crear un archivo de funci´n cuya entrada sea una matriz fila x o y cuyas salidas sean la media de x y su desviaci´n t´ o ıpica.. 3.b. o Ejemplo. para o evitar confusiones. s=0.dest] El nombre de todo archivo de funci´n debe coincidir con el nomo bre de la funci´n y tiene extensi´n . debemos asegurarnos que no coincide con el nombre de alguna de las funciones de que dispone Matlab. En nuestro caso.m. ser´ nomo o ıa: bre. [media.m.z.momento a.3. adem´s.

ˆ2).1) ans 1. o >>integrando=@f.2309e-017 En nuestro caso. podeo o mos usar la funci´n feval: o g=@f.4627 Veamos ahora c´mo se determina una integral reiterada con la funci´n o o dblquad. pulsando enter. ymin = 0 e ymax = 1. xmax .y) es el integrando de una integral reiterada z=x.y) % z=FUN(x. ymin . % Hacemos manipulable la funci´n o quad(integrando. usamos la funci´n dblquad: o >>integrando=@fun.m: function y=f(x) 0 ex dx.El primer paso consiste en crear un archivo de funci´n con una funci´n que o o iremos cambiando en cada problema concreto. Este archivo puede llamarse f. creamos un archivo de funci´n con el integrando: o function z=fun(x. feval(g. obtenemos el valor f (a). a=dblquad(integrando. En primer lugar. 1 1 Ejemplo. Deseamos calcular Creamos el archivo f.0. 31 . Finalizamos esta secci´n indicando que si necesitamos evaluar f (a) y o disponemos de un archivo de funci´n f. Calcular 0 −1 xy dx dy.*y. xmin = −1.xmin . Ahora usamos la funci´n quad para calcular una integral simple. Finalmente. ymax ) ans 1. 2 %y=F(x) es el integrando de una integral simple y=exp(x. xmax = 1.m con la funci´n y = f (x).a) y.m. 1 Ejemplo.

xmax]) grid on Si se quiere que la gr´fica recoja con mayor detalle el intervalo [ymin. Una vez creado este archivo con la funci´n. pondremos f=@fun.4.[xmin. debemos crear un fichero de funci´n con la funci´n y(x). fplot(f. Para manipular la funci´n.Dibujar la curva y = x2 sen x en [−π.[xmin. obtenemos 32 . Usar fplot para dibujar la curva y = x2 sen x Empezamos creando un archivo de funci´n para y(x): o function y=fun(x) y=x.ymax] a >>fplot(f.4]) Al pulsar enter.[-pi. Ejemplo. >>f=@fun.xmax ymin ymax]) Ejemplo.1.m.4]. procedemos a dibujar la curva o y = y(x) con fplot >>f=@fun.pi.*sin(x).ˆ2. Supongamos que a este fichero le hemos o o llamado fun. π] con un zoom en [1. Veamos esto o con un ejemplo.3. fplot(f. La funci´n fplot o Para dibujar la curva y = y(x) con el comando fplot.

2]) Con la funci´n fplot tambi´n se pueden dibujar dos curvas a la vez o e >>fplot(’[x*sin(x).2 −0.6 −0.5 3 2.xˆ3]’.2 0 −0.5 1 −3 −2 −1 0 1 2 3 Otra forma de manejar la funci´n fplot es la siguiente o >>fplot(’x*sin(x)’.4 0.8 −1 −1 −0.[-1.4 −0.5 0 0.5 1 33 .1]) y resulta 1 0.[0.5 2 1.4 3.8 0.6 0.

y. Delta. b=input(’dame b’). si Delta no o es negativo. puede resultar conveniente crear un archivo de gui´n con dichas instrucciones. procede a calcular las ra´ ıces. b y c. Calcula el discriminante de la ecuaci´n. Vamos a crear un archivo de gui´n (que llamaremos raices) y que o nos pedir´ los coeficientes de una ecuaci´n de segundo grado y determinar´ a o a las ra´ ıces reales cuando las haya.b y c a=input(’dame a’). Esta l´ ınea de comentarios debe comenzar con %. Delta=bˆ2-4*a*c. if Delta>=0 [x1.x2]=[-b/(2*a)+sqrt(Delta)/(2*a). La estructura de estos archivos es la siguiente: Una primera linea explicativa que describa brevemente el objetivo del archivo.5. al encontrarse con el comando if. al que podremos o recurrir cada vez que lo necesitemos.3. Por ello. Archivos de instrucciones En Programaci´n nos encontramos a menudo con la necesidad de ejecutar o varias veces una misma serie de instrucciones. pues no ejecuta las instrucciones que hay entre if y end. c=input(’dame c’). de que debe o o comenzar por una letra. no nos da ning´n resultado. u 34 . a a % encuentra las ra´ de una ecuaci´n de segundo grado ax2 + bx + c = 0 ıces o y nos pide a. Usaremos el comando if que se estudiar´ a con m´s detenimiento m´s adelante.-b/(2*a)-sqrt(Delta)/(2*a)] end Este archivo funciona de la siguiente forma: Cuando tecleamos raices el ordenador nos pide sucesivamente los valores de a. como ocurre con los archivos de funci´n. Ejemplo. El nombre de uno de tales archivos s´lo o tiene la restricci´n. Si Delta es negativo. A continuaci´n se escriben todas las instrucciones que deben ejecutarse o en el orden que corresponda. De esta forma se consigue que el ordenador no considere esta l´ ınea.

) 35 . Matlab posee operadores de tres clases: aritm´tie cos. function b=medn(v.3.n). if rem(n. o o Ejemplo. etc. Realizan computaciones num´ricas (sumas. end 3. o o a o La primera funci´n (la funci´n principal) que aparece en el archivo es la que o o da el nombre a ´ste y las otras se llamar´n subfunciones (s´lo son visibles e a o para la funci´n principal o para otra subfunci´n en el mismo archivo.mediana]=estadistico(v) % Estadistico encuentra la media y la mediana con subfunciones internas n=length(v). Operadores y Funciones l´gicas o A) OPERADORES. e e productos.2)==1 b=w((n+1)/2). function a=med(v. function [media.n). o o 1) Operadores aritm´ticos.n) %Calcula la mediana w=sort(v). else b=(w(n/2)+w((n/2)+1))/2. Subfunciones Un archivo de funci´n puede contener el c´digo de m´s de una funci´n.7.n) % Calcula la media a=sum(v)/n. Un archivo de funci´n que determina la media y la mediana de o un vector fila.6. mediana=medn(v. de relaci´n y l´gicos. media=med(v.

la instrucciones siguientes: >>A=[1 0.2) Operadores de relaci´n. Ejemplo. Operadores l´gicos. la matriz con un 1 en las posiciones donde los elementos de ambas matrices coinciden y un 0 en los restantes.1 3]. Comparan cuantitativamente dos expreo siones. | y ∼. 36 . u Consideremos. Si se emplean para o comparar un escalar con un vector o matriz. lo hacen elemento a elemento. Matlab posee los siguientes: < menor que <= menor o igual que > mayor que >= mayor o igual que == igual que ∼= no igual a Si se usa uno de estos operadores para comparar dos matrices o vectores. Cuando operan sobre una matriz. B =  0 1 4  . entonces se compara el escalar con cada elemento del vector o matriz. 0 0 1  es decir. por ejemplo. entonces la comparaci´n se hace elemento a elemento.2 1]. Cualquier n´mero no nulo se considera como verdadero y el cero como falso. B=[4 0. 1 0 2 2 1 2  si ponemos >>A==B produce la matriz  0 1 0    0 1 0 . Matlab emplea los tres operadores l´gicos siguientes: o o &. Consideremos las matrices    0 2 0 1 2 1     A =  0 1 −1  .

obtenemos   1   A(C) =  2  . 1 ´ B) FUNCIONES LOGICAS. respectivamente. de arriba abajo y de izquierda a derecha). Esta funci´n determina los ´ o ındices de una matriz que verifican determinada expresi´n l´gica. 1 1 Es decir. nulo. Ejemplo. Matlab produce una columna con los elementos de A que se corresponden con los unos de C (por columnas. Si escribimos A(C).  100 7 6 100  4 100 100 1 Si se suprime el punto y coma al final de la l´ ınea i=find(A>8). find. Sustituir en la matriz A = magic(4) los elementos mayores que 8 por 100. >>A=magic(4) ans   16 2 3 13  5 11 10 8       9 7 6 12  4 14 15 1 i=find(A>8). seg´n que los elementos u correspondientes de A y B sean no nulos o uno de ellos. en pantalla se despliega el valor de i y vemos que se trata de una matriz columna con los 37 . al menos. A(i)=100 A   100 2 3 100  5 100 100 8    ans  .C=A& B 1 0 ans . Es muy util para crear filtros o matrices de ´ o o ´ ındices. produce una matriz con unos y ceros . Concretamente.

s´lo uno de los o o dos vectores tiene componente no nula.8.Switch. Si A es una matriz.For ejecuta un grupo de instrucciones un n´mero establecido de veces. Por el contrario. o . obtenido de la siguiente forma. xor(x. Si x es un vector con alguna componente no nula.y) es un vector fila de ceros y unos. Matlab va realizando las instrucciones de un programa en el orden que las hemos escrito. en otro caso su valor es cero. junto con else y elseif. all(x) es igual a 1. Control de flujo Normalmente. tiene un cero. any. o 3. all(A) es una matriz fila de unos y ceros. Si en determinada posici´n. Los ´ ındices de A se numeran por columnas de izquierda a derecha y de arriba abajo. o o 38 . Si x es un vector con todas sus componentes no nulas. el valor de any(x) tambi´n es e cero.While ejecuta un grupo de instrucciones un n´mero indefinido de veces u que depende de que cierta expresi´n l´gica se verifique o no. o o . En cualquier otro caso.´ ındices de los elementos de A que superan a 8. entonces any(x) produce un uno. si x es nulo. ejecuta un grupo de instrucciones dependiendo de que cierta expresi´n l´gica sea cierta o no. hay varias formas de conseguir que este orden no se respete: . No obstante.If. que no es otra cosa que el resultado de aplicar all a cada columna de A (de izquierda a derecha).Break termina la ejecuci´n de un for o while. o o . entonces xor(x. u xor. u . junto con case y otherwise.Continue pasa el control a la siguiente iteraci´n de un for o while. ignoo rando cualquier instrucci´n posterior (del for o while en cuesti´n).y) tiene un uno en dicha posici´n. all. Sobre una matriz act´a como en el caso de all. Si x e y son vectores. o o . ejecuta diferentes grupos de instrucciones dependiendo del valor de alguna condici´n l´gica.

b=input(’dame coefic. consideramos el mismo ejemplo o anterior. Delta = bˆ2-4*a*c. nos pide los coefiıces cientes a=input(’dame coefic de xˆ’).indep’). Delta = bˆ2-4*a*c. if Delta<0 disp(’no hay ra´ reales’) ıces 39 . Le daremos el nombre raices. de x’).(-b-sqrt(Delta))/2*a] Para entender c´mo funciona elseif y else. una vez que haya comprobado que son reales. c=input(’dame ter. Podemos crear un archivo de instrucciones que nos pida los coeficientes a. If. nos pide los coefiıces % cientes a=input(’dame coefic de xˆ’). b=input(’dame coefic. seg´n sea el valor de Delta. >> % raices determina las ra´ de ax2 + bx + c = 0. u 2 >> % raices1 determina las ra´ de ax + bx + c = 0. de x’). Supongamos que queremos obtener las ra´ ıces de una ecuaci´n o 2 de segundo grado ax + bx + c = 0.x2]=[(-b+sqrt(Delta))/2*a.indep’). La forma m´s simple es la siguiente o o a >> if expresi´n l´gica o o instrucciones end Ejemplo. b y c y determine las ra´ ıces. if Delta<0 disp(’no hay ra´ reales’) ıces end [x1.m. pero vamos a establecer distintas salidas. c=input(’dame ter. else y elseif If eval´a una expresi´n l´gica y ejecuta un grupo de instrucciones si la u o o expresi´n l´gica es verdadera.9.3.

o Por el contrario.x2]=[(-b+sqrt(Delta))/2*a.10. Si dicha expresi´n l´gica es verdadera se o o ejecutan las instrucciones siguientes hasta el pr´ximo elseif o else. For La sintaxis es la siguiente: >>for ´ ındice=inicio:incremento:final instrucciones 40 . else no lleva expresi´n l´gica a evaluar y matlab realiza o o las instrucciones siguientes hasta end si las expresiones l´gicas de if y los o elseif anteriores so falsos.elseif Delta>0 [x1. La forma general de un if es la siguiente: >>if expresi´n l´gica o o instrucciones elseif expresi´n l´gica o o instrucciones elseif expresi´n l´gica o o instrucciones ————————– elseif expresi´n l´gica o o instrucciones else instrucciones end 3.(-b-sqrt(Delta))/2*a] else x=-b/(2*a) disp(’ra´ doble’) ız end elseif eval´a la expresi´n l´gica que aparece en su misma l´ u o o ınea si if o los anteriores elseif resultan falsos.

end 41 . Ejemplo. Crear un archivo de funci´n para determinar n!. while Su sintaxis es la siguiente: >>while expresi´n o instrucciones end Mientras que la expresi´n que controla el while sea verdadera.end Si el incremento es la unidad.11.j)=1/(i+j-1). Calcular el primer natural n tal que n! es un n´mero con 100 u d´ ıgitos. se ejecutan o todas las instrucciones comprendidas entre while y end. n × m.M y escribimos function y=factorial(n) % Esta funci´n determina el factorial de un natural N o y=1. tal que aij = 1/(i + j − 1). no hace falta indicarlo. end end 3. Ejemplo. for i=1:n for j=1:m A(i. while prod(1:n)<1e100 n=n+1. for k=1:n y=y*k end Ejemplo. Construir una matriz A. >>n=1. o Vamos a File-New para abrir un nuevo archivo .

Supongamos que se desea determinar un vector v con un n´mero u de componentes menor o igual que 10 y que verifique: a) sus componentes son de la forma 24-kˆ2 y b) son no negativas.1 : 1. Ejemplo. ´ 3. exceptuando x = 0. v=w(1:n-1). o sin realizar las instrucciones siguientes que pueda haber antes de end. >>k=0. Es decir. El vector buscado ser´ ıa >>n=length(w). −1). if w(k)<0 break end end El programa anterior determina un vector de la forma w = (23. Determinar un vector y cuyas componentes sean de la forma sen x/x. 8. w(k) < 0 es cierta y Matlab ejecuta la instrucci´n break que termina o el for.12.13. aunque no se ha llegado al final (k = 10). Ejemplo. para x = −1 : . basta eliminar la ultima componente de w. 15. pues la expresi´n l´gica o o del if.3. Continue Este comando pasa el control a la siguiente iteraci´n en un for o un while. for x=-1:. Si ´ste no es el caso. Break Esta instrucci´n se usa para terminar un for o un while antes de que o se haya completado la ejecuci´n. 20. el for se termina cuando k = 5 y w(5) = −1. se usar´ el comando o e a return. >>for k=1:10 w(k)=24-kˆ2.1:1 if x==0 42 . Es decir.

debe aparecer en pantalla el texto ”uno negativo”.continue end k=k+1. Switch La sintaxis es como sigue switch expresi´n %(o variable) o case valor1 instrucciones %(se ejecutan si el valor de expresi´n es valor1 o case valor2 instrucciones %(se ejecutan si el valor de expresi´n es valor2) o ———otherwise instrucciones %(se ejecutan si el valor de expresi´n no es ninguno de los o valores de cada caso) end Ejemplo. si el valor es 0. debe aparecer en pantalla el texto ”uno positivo”. queremos que aparezca en pantalla el texto ”cero”. end 3. Si el valor de var es -1. Si el valor de var es 1. si el valor de var es cualquier otro.14. y(k)=sin(x)/x. debe aparecer el texto ”otro valor”. Finalmente. >>switch var case -1 disp(’uno negativo’) case 0 disp(’cero’) case 1 disp(’uno positivo’) 43 . Supongamos que una variable escalar se llama var.

otherwise disp(’otro valor’) end Si el valor de var es 2. a 44 . aparecer´ en pantalla el texto ”otro valor”.

Variables simb´licas o Las variables simb´licas se crean con la instrucci´n syms. N´tese que en el c´lculo simb´lico se prescinde del punto que se antepon´ o a o ıa con algunas operaciones para indicar que dicha operaci´n se hac´ coordenada o ıa a coordenada. Una vez declaradas o o las variables simb´licas. se pueden definir funciones simb´licas.1. o 4. Si tecleamos o o >>class(x) y pulsamos enter. Derivaci´n e integraci´n o o ´ 1) CALCULO DE DERIVADAS.Cap´ ıtulo 4 C´lculo Simb´lico a o 4. Matlab dispone de la funci´n diff. Si en alg´n momento dudamos si una funci´n es de datos o u o simb´lica se puede recurrir a la instrucci´n class. Supongamos que se quiere calcular la derivada tercera de o 45 .2. obtenemos ans sym que nos advierte de que x es una variable simb´lica. Por ejemplo o o >>syms x a f=x*sin(x/a). Para calcular derivadas.

d3f=diff(f.5) ans 8.f (x) = x3 sen(x/a).0. Ejemplo. Para calcular una primitiva de una funci´n f . o o Ejemplo.n).3) En pantalla aparece la derivada tercera de f escrita a la manera de Matlab. Calcular xex dx. se dispone de la funci´n int.x. donde n es el n´mero total de o u d´ ıgitos para representar el valor de I. se puede usar la instrucci´n pretty: o >>syms x a f=xˆ3*sin(x/a). Si ponemos >>vpa(I. Calcular xsenx dx. se usa la instrucci´n vpa(I. d3f=diff(f. Si se quiere que aparezca expresada de la forma usual.0. 0 >>syms x f=x*exp(x). no es necesario indicar la variable independiente x y basta poner I = int(f.3) pretty(d3f) Para calcular la derivada primera de f basta escribir diff(f). 46 2 . >>syms x f=x*sin(x).3891 En realidad.2). I=int(f. ´ 2) CALCULO DE PRIMITIVAS. F=int(f) ´ 3) CALCULO DE INTEGRALES DEFINIDAS. Se procede como sigue: >>syms x a f=xˆ3*sin(x/a).2) ans exp(2)+1 Si se desea obtener el resultado en forma decimal y con un n´mero preciso u de decimales.

ım x→0 x >>syms x f=sin(sqrt(x))/sqrt(x). El polinomio de Taylor Para determinar el polinomio de Taylor de una funci´n f .3.a). C´lculo de l´ a ımites Para el c´lculo de l´ a ımites. Ejemplo. h→0 h >>syms x h f=(sin(x+h)-sin(x))/h. x→∞ ex >>syms x f=x/exp(xˆ2).x. a=limit(f. Matlab dispone de la funci´n limit.’right’) x Ejemplo. cuya sintaxis es: o taylor(f.0) ans cos(x) √ sen x Ejemplo. en la funci´n o o taylor se indica n + 1. taylor(f.x.0) ans x2 + x3 .0.n+1.inf) 4. limit(f. que es el n´mero de t´rminos de que consta dicho u e polinomio. N´tese que. si desea el polinomio de orden n. Calcular l´ ım .4. o sen(x + h) − sen x Ejemplo. Determinar el polinomio de Taylor de f (x) = (x + 1) sen(x2 ) de orden 3 en el origen >>syms x f=(x+1)*sin(xˆ2).h. Calcular l´ + √ .4. de orden n o en el punto x = a. Matlab dispone de la funci´n taylor. Calcular l´ ım 2 . limit(f.4. 47 .

Resoluci´n de ecuaciones algebraicas o Para encontrar las soluciones de una ecuaci´n o (sistema) algebraica. Se o trata de la funci´n taylortool que nos abre una ventana gr´fica donde apareo a cen la gr´fica de la funci´n y del polinomio de taylor. manipulando adecuadamente los correspondientes ”botones”. Adem´s.4) -0. Taylor Series Approximation 15 10 5 0 −5 −10 −15 −6 −4 −2 0 2 4 6 TN(x) = x2+x3−1/6 x6−1/6 x7 La gr´fica de la funci´n aparece en trazo continuo de color azul.Matlab dispone de otra funci´n para obtener el polinomio de taylor. o >>solve(’xˆ3+x+1=0’) vpa(ans.5.6826 0. permite ir a o a cambiando el orden del polinomio. o Ejemplo. Mato lab dispone de la funci´n solve. Resolver la ecuaci´n x3 + x + 1 = 0. el punto x = a. Pulsando a o en el bot´n N se puede ir cambiando el orden del polinomio. o 4.162 i 48 . etc.3411-1.

pi) ans 0. Resolver el sistema x + 2y = 1. Determinar una ra´ de la ecuaci´n anterior con el dato x0 = π.b] que contenga la ra´ ız que buscamos.[pi/6. Como f (π/6) = π 2 /36 − 1/2 = −0.162 i Ejemplo. Sea f (x) = sen x − x2 . Tambi´n puede usarse solve para despejar una variable en una igualdad.pi]) ans 0.y]=solve(’x+2*y=1’. el Teorema de Bolzano nos asegura que hay una ra´ de ız la ecuaci´n en el intervalo en cuesti´n.8767.8767. Para encontrarla. y=0. >>solve(’3*a*b+c=1’. Despejar b en la igualdad 3ab + c = 1. ız o >>fzero(’sin(x)-xˆ2’.2258 < 0 y f (π) = π 2 > 0. >>[x. La funci´n fzero tambi´n puede encono e trar una ra´ de una ecuaci´n a partir de un valor cercano.3411+1. a) Si somos capaces de determinar un intervalo [a. Ra´ ıces de ecuaciones arbitrarias Para ecuaciones generales. 2x − 3y = 2. ız o Ejemplo. π] una ra´ de la ecuaci´n sen x − ız o 2 x = 0. 4.’b’) ans b=(1-c)/3a. Encontrar en el intervalo [π/6. Puede o usarse de dos formas diferentes.6. 49 .0.’2*x-3*y=2’) ans x=1. procedemos como o o sigue >>fzero(’sin(x)-xˆ2’. Ejemplo. Matlab dispone de la funci´n fzero. b) Partiendo de un valor cercano. e Ejemplo.

{x.’Dy(0)=0’.{cos(t). Supongamos que se o desea resolver la ecuaci´n diferencial o y = 1 + y2. g=subs(f. a) La integral general de una ecuaci´n diferencial. b) Una integral particular. >>y=dsolve(’D3y-3*D2y+3*Dy-y=0’.8.’x’) ans y = 1/2x2 ex .7.’x’) ans y = tg(x + c1 ). Matlab nos da la respuesta con la variable t: y = tg(t + c1 ). o 2 2 Ejemplo. e y(0) = 0. Supongamos que buscamos la soluci´n de la o ecuaci´n o y − 3y + 3y − y = 0 que verifica las condiciones iniciales y (0) = 1. respectivamente. g ans (cos(t) − 2)2 + sen2 (t) − 1 Si queremos obtener una expresi´n simplificada de g o 50 .sin(t)}). Sustituci´n y evaluaci´n de expresiones o o Empezaremos estudiando c´mo se sustituyen en una expresi´n simb´lica o o o unas variables por otras expresiones simb´licas. >>syms x y t f=(x-2)ˆ2+yˆ2-1. Si no se indica la variable independiente ’x’.’y(0)=0’. Sustituir en (x − 2) + y − 1 x e y por cos(t) y sen(t). Resoluci´n de ecuaciones diferenciales o Vamos a ver c´mo se emplea la funci´n dsolve para resolver ecuaciones o o diferenciales.4. 4.’D2y(0)=1’.y}. >>y=dsolve(’Dy=1+yˆ2’. y (0) = 0.

expresa la transformada en funci´n de la variable s. Encontrar la transformada de Laplace de f (s) = sen(as). Ejemplo. Ejemplo. 51 . Funci´n escal´n unidad de Heaviside: o o >>syms t laplace(heaviside(t-3)) ans e−3s /s. Si se desea que la variable dependiente de la transformada sea la que nosotros determinemos. o 5 Ejemplo.p) ans p/(p2 + a2 ). Encontrar la transformada de f (x) = cos(ax). >>syms y laplace(yˆ5) ans 120/s6 Si la funci´n tiene por variable s. Encontrar la transformada de f (y) = y . >>syms a x p laplace(cos(a*x). Si o no se indica otra cosa. La Transformada de Laplace Para encontrar la transformada de Laplace se usa la funci´n laplace. >>syms a s laplace(sin(a*s)) ans a/(t2 + a2 ).simple(g) ans -4*cos(t) +4. Funci´n delta de Dirac: o >>syms t laplace(dirac(t-2)) ans e−2s .9. por ejemplo p. entonces Matlab nos da la transformada o con variable dependiente t. se procede como sigue. 4.

4.t. Por defecto.Transformada de la derivada: >>syms t laplace(diff(sym(’F(t)’))) ans s*laplace(F(t). o expresa la funci´n con variable dependiente t. La transformada inversa La transformada inversa se obtiene con la funci´n ilaplace. >>syms p ilaplace(6/pˆ4) ans t3 . >>syms p x ilaplace(1/(p-1). Ejemplo. Encontrar la transformada inversa de F (p) = 6/p4 . por ejemplo.x) ans ex . 52 . Transformada inversa de F (p) = 1/(p − 1). x. Se puede conseguir que la variable dependiente de la funci´n sea la que o queramos.10. o Ejemplo.s)-F(0).p.

Sign up to vote on this title
UsefulNot useful