Sunteți pe pagina 1din 41

Captulo 1

Comandos B
asicos y Matrices
1.1.

Introducci
on

MATLAB es un lenguaje de alto nivel orientado al desarrollo de calculos cientficos y tecnicos. Integra
calculo, visualizaci
on y programaci
on en un entorno interactivo de facil manejo. Los problemas y las
soluciones se expresan en la notaci
on matematica 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 formulacion vectorial o matricial
de un modo m
as f
acil que en un lenguaje tipo FORTRAN o C. Puede realizar una amplia variedad de
graficos en dos y tres dimensiones.
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 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 la derecha de la pantalla, a partir del smbolo >> (denominado prompt).
En la parte superior izquierda de la pantalla aparece la ventana Current Directory, que muestra
los ficheros del directorio actual y se puede alternar (cambiando la pesta
na inferior) con Workspace,
que contiene informaci
on sobre todas las variables que se han definido en la actual sesion y donde se
pueden ver y modificar las matrices con las que se esta trabajando.
En la parte inferior izquierda tenemos la Command History, que muestra las u
ltimas
ordenes
ejecutadas en la Command Window. Estas ordenes pueden volver a ejecutarse haciendo doble clic
sobre ellas.
Si se quiere salvar en un archivo toda una sesion de trabajo, podemos proceder como sigue:

Iniciamos la sesi
on tecleando:
>> diary nombre.txt
y terminamos la sesi
on tecleando
>>diary off
Automaticamente MATLAB crea un archivo con la denominacion 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 da en curso: noviembre15.txt. Si queremos guardar el archivo en un disquete, CD,...,
lo abrimos y en File hacemos clic en Save As para 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 funcion, de la que conocemos su denominacion en MATLAB,
podemos teclear en la ventana de comandos
>> help nombre
y aparece en pantalla la ayuda de MATLAB explicando su funcionamiento.
As, si tenemos alguna duda sobre el funcionamiento de det (funcion determinante), tecleamos
>> help det
Si no fuera suficiente, podemos teclear
>> doc nombre
que nos ofrece una ayuda m
as completa y con ejemplos.
Si no queremos que la ayuda aparezca en la ventana de comandos sino en una ventana especfica,
debemos teclear
>> helpwin nombre
y se abre una ventana con la ayuda.
Tambien podemos buscar la ayuda acudiendo a Help y haciendo clic en MATLAB Help.

1.3.

Operaciones b
asicas y variables

Se puede usar MATLAB como una simple calculadora. Los smbolos que denotan las operaciones suma,
diferencia, producto, cociente y potencia son +, , , / y .
Las operaciones se van realizando por orden de prioridad, primero las potencias, despues las multiplicaciones y divisiones y, finalmente, las sumas y restas. Las operaciones de igual prioridad se llevan a
cabo de izquierda a derecha. Los parentesis son obligatorios para modificar estas prioridades.
Los decimales se denotan con un punto.
Una variable es un nombre simb
olico, formado por hasta 19 dgitos y letras, que identifica una parte
de la memoria y en la que se pueden guardar n
umeros u otros datos.

MATLAB distingue entre may


usculas y min
usculas de forma que A y a pueden ser nombres apropiados
para dos variables distintas. El nombre de toda variable debe comenzar por una letra.
Por ejemplo, X, x, X1
o media son nombres validos de variables pero 1x no lo es.
Las variables se crean asign
andoles un valor. El contenido de una variable lo podemos recuperar y
modificar tantas veces como queramos a lo largo de la sesion de trabajo.
Si se quiere asignar a una variable x el valor 3 + 25 , se escribe a continuacion del prompt
>> x=3+25;
Se pueden
utilizar las funciones matematicas usuales. Por ejemplo, si se quiere asignar a la variable a
el valor 3, se escribe
>> a=sqrt(3);
Si queremos hacer alg
un comentario, lo escribiremos precedido del signo %. MATLAB no lo tendr
a
en cuenta.
Se pueden colocar distintas
ordenes en una misma lnea separandolas con , o ;.
Cuando una instrucci
on no cabe en una lnea se puede cortar en dos trozos, en cuyo caso el primero
de ellos debe acabar con ... y el segundo trozo va en la lnea siguiente.
Para recordar
ordenes previas (o posteriores si hemos retrocedido) se usan las teclas de cursor y ,
y para corregir una instrucci
on los cursores 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
Debemos tener cuidado, ya que
>>clear

borra todas las variables del espacio de trabajo!

MATLAB tiene predefinidas algunas variables numericas:


ans
i, j
pi
Inf
NaN
eps

variable de respuesta cuando se eval


ua alguna expresion

representan ambas a la unidad imaginaria 1


el n
umero
infinito (m
as grande que el mayor n
umero que se puede almacenar)
magnitud no numerica resultado de calculos indefinidos
el menor n
umero positivo que sumado a 1 da un n
umero maquina mayor que 1

y las funciones elementales:


abs(x)
sqrt(x)
exp(x)
sin(x)
cos(x)
tan(x)
cot(x)
asin(x)
acos(x)
atan(x)
log(x)
log10(x)
rem(m,n)
eps
ceil(x)
floor(x)
fix(x)
round(x)

valor absoluto de x
raz cuadrada de x
exponencial de base e de x
seno de x
coseno de x
tangente de x
cotangente de x
arcoseno de x
arcocoseno de x
arcotangente de x
logaritmo neperiano de x
logaritmo en base 10 de x
resto de la divisi
on entera de m entre n
el n
umero positivo m
as peque
no con que trabaja MATLAB eps =2.2204e-016
redondeo de x hacia +
redondeo de x hacia
redondeo de x hacia 0
redondeo de x hacia el entero mas proximo

Terminamos esta secci


on explicando c
omo puede controlarse el formato con que se muestran en pantalla
los resultados numericos de los c
alculos.
Hay que se
nalar que MATLAB no cambia la representacion interna del n
umero en los diferentes
formatos, por lo que el formato de visualizacion no afecta a la precision con la que se realizan dichos
calculos
format
format
format
format
format

short
long
short e
rat
bank

con cuatro dgitos decimales (es el formato por defecto)


con dieciseis dgitos
cinco dgitos mas exponente (notacion cientfica)
aproximacion racional
con dos dgitos decimales

Ejemplos:
>> format short
>> pi
ans =
3.1416

>> format long


>> 13/7
ans =
1.85714285714286

>> format rat


>> exp(1)
ans =
1457/536

>> format short e


>> log(2)
ans =
6.9315e-001

1.4.

Vectores

Si queremos introducir un vector fila v, escribiremos sus componentes entre corchetes separ
andolas
con comas o espacios.
Ejemplo. El vector fila v = (1, 2, 1) se introduce en MATLAB como sigue
>> v=[1 2 -1];
Si no se pone el punto y coma final, al pulsar enter MATLAB muestra en pantalla
v=
1 2 -1
Si se pone el punto y coma, MATLAB guarda en memoria el vector v = (1, 2, 1) pero no lo muestra
en pantalla. MATLAB ejecuta la instruccion en cuestion y no muestra en pantalla el resultado ni los
calculos involucrados.
Es importante tener en cuenta esta caracterstica de MATLAB ya que, si los calculos 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 estan 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 indican, separados por dos puntos, la primera componente, el desfase (que puede ser negativo) de uno al siguiente y el u
ltimo. Cuando el desfase es la unidad se puede omitir. La forma m
as
simple de indicar el vector v = (1, 0, 1, 2, 3) es
>> v=-1:3;
Otra forma de introducir un vector fila con las componentes igualmente espaciadas consiste en indicar
la primera componente, la u
ltima y el n
umero total de componentes.
Ejemplo:
El vector v que tiene 10 componentes igualmente espaciadas siendo 1 la primera y 18 la u
ltima se
indica
>> v=linspace(1, 18, 10);
Si tecleamos
>> w=linspace(18,1,10)
entonces w es el vector con 10 componentes igualmente espaciadas, siendo la primera 18 y la u
ltima
1; es decir, invierte el orden de
>> v=linspace(1,18,10)
Este mismo efecto lo hace la orden
>> w=fliplr(v)

Recuerdese que, si no colocamos al final el punto y coma, aparecera en pantalla una fila de 10 n
umeros
que no son otra cosa que las componentes de v.
>> length(v)

nos da el n
umero de componentes del vector v.

>> sort(v)

es el vector que resulta al escribir las componentes de v de menor a mayor.

Si u y v son vectores,
>> w=[u v] es un nuevo vector
Ejemplo:
>> u=[-1 0 2];v=[3 4 -2 5 1];
>> w=[u v]
w=
-1 0 2 3 4 -2 5 1
Algunas operaciones habituales entre vectores son las siguientes:
>> u+v
>> dot(u,v)
>> cross(u,v)

suma de vectores (solo para vectores de la misma dimension)


producto escalar (solo para vectores de la misma dimension)
producto vectorial (solo para vectores de dimension tres)

Operaciones entre un n
umero a y un vector v:
>> a+v
>> a*v

1.5.

suma a a todas las componentes de v


multiplica a por todas las componentes de v

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), mientras 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, escribiremos A(i,j), como es usual
en la teora de matrices.
Tambien podemos 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 es mas simple:
>> 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, entre ellas la matriz unidad y la matriz nula, no necesitan ser introducidas elemento
a elemento ya que MATLAB dispone de funciones que nos permitiran referirnos a ellas de forma muy
facil. A continuaci
on enumeramos algunas:
eye(n)
zeros(m,n)
ones(n,m)
rand(n,m)
randn(n,m)
det(A)
rank(A)
A
inv(A)
sin(A)
diag(A)
size(A)
magic(n)

1.6.

es la matriz unidad de orden n.


es la matriz nula m n.
es la matriz n m cuyos elementos son todos iguales a 1.
es una matriz n m de n
umeros aleatorios distribuidos uniformemente en el intervalo (0,1).
es una matriz de n
umeros aleatorios como antes, pero ahora estan distribuidos normalmente.
nos da el determinante de la matriz cuadrada A.
es el rango de la matriz A.
es la matriz traspuesta de A.
es la matriz inversa de la matriz cuadrada y regular A.
es la matriz (sen(aij )), donde A = (aij ).
(lo mismo ocurre con las otras funciones de MATLAB que hemos descrito)
es una matriz columna con los elementos de la diagonal principal de A.
nos da las dimensiones de la matriz A.
es un cuadrado m
agico de dimension n.

Operaciones con matrices

Los smbolos + ,, * y se reservan para las operaciones matriciales suma, diferencia,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 (recuerdese que el producto solo 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 deberan tener la misma dimension):
>> A+B

Pero tambien 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 indicaran anteponiendo un punto al smbolo usado para denotar la
operacion en cuesti
on. En particular:
A.*B
A.^r
A./B

1.7.

Operaciones entre escalares y matrices

a+B
a*B
A/b

1.8.

es la matriz cuyos elementos se obtienen haciendo el producto de cada elemento de A


por el correspondiente de B.
es la matriz que resulta al elevar cada elemento de A al exponente r.
es la matriz cuyos elementos se obtienen dividiendo cada elemento de A
por el correspondiente de B.

es la matriz que resulta al sumar el escalar a cada elemento de la matriz B.


es la matriz que resulta al multiplicar el escalar a por cada elemento de la matriz B.
es la matriz que resulta al dividirr cada elemento de la matriz A por el escalar b.

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:

x + 2y + 2z = 2
Resolver el sistema
3x + y
= 0

x
+ z = 1
Si designamos por A a la matriz de coeficientes, por X a la columna de incognitas y por b a la columna
de los terminos independientes, sabemos que si el determinante de A es no nulo, existe la matriz inversa
A1 y obtenemos que la u
nica soluci
on del sistema es X = A1 b .
MATLAB permite encontrar esta solucion mediante la instruccion A\b:
>> A=[1 2 2;3 1 0;-1 0 1];b=[2;0;1];
>> A\b
ans =
0
0
1
Mas 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.
8

Ejemplo:
Resolver los dos sistemas siguientes

2 1 1
x
1
2 1 1
x
1

1 2 1 y = 1 ; 1 2 1 y = 0 .
1 1 2
z
1
1 1 2
z
1
Ambos sistemas tienen la misma matriz de coeficientes, A. Matricialmente, los dos sistemas equivalen
a la igualdad A X = B, donde

x1 x2
1
1

X = y1 y2 y B = 1
0 .
z1 z2
1 1
Podemos resolver los dos sistemas de una vez procediendo como sigue
>> A=[2 1 1;1 2 1;1 1 2]; B=[1 1;1 0;1 -1];
>> A\B

0.25
1

ans = 0.25
0 .
0.25 1
Por otra parte, la instrucci
on B/A nos ofrece la solucion del sistema
X A = B.
Ejemplo:
Resolver el sistema (x y z) A = (1 0 1), 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 = (0.5 0.5 1).

1.9.

Matrices definidas mediante cajas

Cuando una matriz A se compone de cajas que ya hemos introducido, se puede introducir A de una
manera mas 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

A=

0
0
2
2

0
0
2
2

0 1 0
0 0 1
1 1 3
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.

10

Captulo 2

Gr
aficos
2.1.

Dibujo de poligonales

Supongamos que se desea dibujar la poligonal de vertices (xi , yi ) con i = 1, .., n. Definimos las matrices
fila x = (x1 , x2 , . . . , xn ) e y = (y1 , y2 , . . . , yn ) que contienen las coordenadas correspondientes y el
comando plot(x,y) dibuja la poligonal.
Si la poligonal es cerrada, el u
ltimo vertice ha de concidir con el primero: (xn , yn ) = (x1 , y1 ).
Ejemplo:
Para dibujar la poligonal cerrada de vertices (0, 0), (2, 1), (1, 3) y (2, 2) tecleamos:
>> x=[0 2 1 -2 0]; y=[0 1 3 2 0];
>> plot(x,y)
y se abre una ventana Figure 1 como la que sigue

2.2.

Gr
afica de una funci
on de una variable

Si se desea obtener la gr
afica de la funcion y = f (x) en el intervalo [a,b], debemos tener presente que
MATLAB dibuja las curvas punto a punto; es decir, calcula los puntos (x, f (x)), para los valores de
x que le indiquemos y representa la poligonal correspondiente. Esta es la razon de haber iniciado el
tema con el dibujo de poligonales. Lo que MATLAB dibuja es una poligonal inscrita a la curva.
11

Por ello, se empieza estableciendo la matriz fila x cuyos elementos son los valores para los que se
computara el valor correspondiente de f (x). Lo usual es 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 sera el de una verdadera curva en lugar de una poligonal.
x
Ejemplo: Dibujar la gr
afica de f (x) = cos(x2 ) en el intervalo [2, 4].
3
Para facilitar la comprensi
on, consideramos en primer lugar una poligonal con muy pocos vertices y
despues con un n
umero suficientemente grande para que a la vista se nos muestre como una curva
suave.
a) Tomamos dieciseis valores de x igualmente espaciados entre 2 y 4
>> x=[-2:0.4:4];

(tambien podemos poner x=linspace(-2,4,16) )

luego definimos el vector y = f (x), en este caso


>> y=(x/3).*cos(x.^2);
y, por u
ltimo, tecleamos
>> plot(x,y)
al pulsar enter se abre una ventana gr
afica con la poligonal (inscrita a la curva):

b) El resultado anterior sugiere elaborar un programa similar con el u


nico cambio de x = 2 : 0.4 : 4
por x = 2 : 0.02 : 4, es decir, tomando ahora 301 puntos equiespaciados en [2, 4]:
>> x=[-2:0.02:4];

(tambien podemos poner x=linspace(-2,4,301) )

>> y=(x/3).*cos(x.^2);
>> plot(x,y)
y resulta

12

La orden plot es muy poderosa:


- Adapta los lmite para los ejes de coordenadas, marca los puntos y dibuja segmentos entre ellos.
- Permite hacer gr
aficos de m
ultiples conjuntos de datos (o funciones) sobre los mismos ejes en la
misma ventana gr
afica, usar diferentes tipos de lneas, marcar solo los puntos o usar diferentes colores.
- Puede colocar etiquetas sobre los ejes, ttulo en la cabecera, dibujar una rejilla, etc.
- Se pueden dibujar varias curvas en la misma ventana grafica. Si el intervalo de variacion de x es el
mismo, se puede proceder como se muestra en el ejemplo siguiente.
Ejemplo:
Representar las curvas y = x2 x e y = x sen(x2 ) en el intervalo [3, 3].
>> x=linspace(-3,3,90);
>> y1=x.^2-x;y2=x-sin(x.^2);
>> plot(x,y1,x,y2)
De esta forma se consigue que se abra una ventana grafica con las dos curvas. Observese que cada
curva tiene un color diferente.

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, tecleamos
>> hold on
13

y a continuaci
on las
ordenes necesarias para dibujar la segunda curva. En este caso, si no damos otros
argumentos, las dos curvas tendr
an el mismo color.
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 curva.
Ejemplo:
 
1
Para dibujar f (x) = x sin
en [-1,1] y g(x) = sen(5x) en [0,2]:
x
>> x1=linspace(-1,1,200);
>> y1=x1.*sin(1./x1);
>> plot(x1,y1)
>> hold on
>> x2=0:.05:2; y2=sin(5*x2);
>> plot(x2,y2)

Por el contrario, cuando ya se tiene una ventana grafica 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 otra ventana gr
afica (Figure 2) donde podremos hacer la nueva representacion.
Ejemplo:
sen x
, para x [6, 6]. Se presenta el problema de que para
x
sen x
x = 0 no est
a definida la funci
on, aunque lm
existe y vale 1. Podemos evitar este problema
x0 x
manejando adecuadamente la variable eps.
Si se desea obtener la gr
afica de f (x) =

>> x=-6:0.1:6;
>> t=x+eps;
>> y=sin(t)./t;
>> plot(t,y)
y obtenemos
14

Otras opciones de la orden plot:


1. Etiquetas: El comando
>> xlabel(texto)
se usa para que en el eje OX aparezca el texto que se desea.
Analogamente,
>> ylabel(texto)
para el eje OY.
Para colocar cualquier cadena de texto en el punto que queramos de la ventana grafica, 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(texto)
entonces podemos colocar el texto donde queramos con el propio raton.
2. Color de la curva y estilo de lnea: Se puede dibujar la curva del color y con el estilo que se desee.
Por ejemplo, si se escribe
>> plot(x,y,.,x,z,- -)
se consigue que la curva y = f (x) aparezca con trazo punteado y la z = g(x) como una lnea de
trazo discontinuo.
Si se quiere elegir el color y estilo:
>> plot(x,y,r - -)
la curva aparece en rojo y con lnea de trazo discontinuo.
Se puede trazar dos veces la gr
afica de una funcion, si queremos destacar los puntos donde se
eval
ua. Por ejemplo:
>> plot(x,y,x,y,+)
pone cruces sobre la gr
afica.

15

La siguiente tabla muestra la sintaxis de diferentes colores y tipo de lnea:


Smbolo
y
m
r
g
b
k

Color
amarillo
magenta
rojo
verde
azul
negro

Smbolo
.

Estilo de lnea
lnea de puntos
crculo
mas
estrella
trazo discontinuo
lnea solida

3. Ejes a medida: Si se quiere que la grafica recoja un trozo determinado de la curva elegimos los
intevalos en ambos 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
4. Si se quiere que aparezca una rejilla sobre los puntos marcados en los ejes:
>> grid on
o para quitarla:
>> grid off
5. Para dar ttulo a la cabecera del grafico
>> title(lo que se quiera)

2.3.

El comando subplot

A veces nos interesar


a disponer en una misma ventana grafica de varias subventanas para dibujar en
cada una de ellas una curva distinta, con el objetivo de poder compararlas mas comodamente.
Ejemplo: Si queremos dibujar en una misma ventana grafica las curvas y = sen(kx), para x [0, 2]
y k = 1, ..., 4, pero cada una en una subventana diferente:
>> x= linspace(0,2*pi,120);
>> subplot(2,2,1)
>> plot(x,sin(x));title(y=sen(x))
subplot(2,2,2)
>> plot(x,sin(2x));title(y=sen(2x))
subplot(2,2,3)
>> plot(x,sin(3x));title(y=sen(3x))
16

subplot(2,2,4)
>> plot(x,sin(4x));title(y=sen(4x))
al final se obtiene

En general, si se necesitan m n subventanas, se tendra 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 tenamos 4 curvas y parece lo mas adecuado disponerlas en dos filas
y dos columnas.

2.4.

Coloreado de polgonos

Al principio hemos visto c


omo se dibuja una poligonal cerrada con MATLAB. Ahora vamos a ver
como se colorea la regi
on interior del color que queramos.

Ejemplo: Se desea colorear de rojo el recinto que limitan las curvas y = x2 y y = x. Ya que los
puntos de corte de ambas curvas se obtienen para x = 0 y x = 1, procedemos as:
>> x=linspace(0,1,101);
>> y1=sqrt(x);y2=x.^2
>> X=[x fliplr(x)];Y=[y1,fliplr(y2)];
>> fill(X,Y,r)

17

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 al intervalo [0, 1] y representan las proporciones en que se deben
tomar los colores principales (rojo, verde y azul) para crear el color en cuestion.

2.5.

La orden ezplot. Curvas en forma implcita

MATLAB dispone de la funci


on ezplot para representar curvas facilmente:
>> ezplot(f)
dibuja la funci
on f = f (x) (que se ha introducido como una cadena de caracteres entre comillas) en
el intervalo [2, 2]. Pone ttulo f a la figura y x bajo el eje de abscisas.
Por ejemplo:
>> ezplot(x.*cos(x))
origina la figura

Si tecleamos
>> ezplot(x.*cos(x),[a b])
obtenemos la gr
afica de f = f (x) sobre el intervalo [a, b].
Esta orden genera de forma muy c
omoda curvas definidas de forma implcita:
18

>> ezplot(f(x,y))
genera la gr
afica de f (x, y) = 0 con x [2, 2] e y [2, 2]. Pone ttulo f (x, y) = 0 a la figura
y a ambos ejes.
Si tecleamos
>> ezplot(f(x,y),[a b])
genera la curva f (x, y) = 0 con x [a, b] e y [a, b].
Si tecleamos
>> ezplot(f(x,y,[xmin xmax ymin ymax])
obtenemos la curva f (x, y) = 0 con x [xmin, xmax] e y [ymin, ymax].
Por ejemplo
>> ezplot(2*(x^2+y^2)^2-25*(x^2-y^2),[-6,6],[-3 3])
genera la gr
afica

La orden
>> ezplot(x,y)
nos genera la curva parametrizada x = x(t), y = y(t) con t [0, 2].
Por ejemplo
>> ezplot(sin(3*t)*cos(t),sin(3*t)*sin(t))
genera la gr
afica

19

La orden
>> ezplot(x,y,[tmin tmax])
nos genera la curva parametrizada x = x(t), y = y(t) con t [tmin, tmax].
La orden hold on se puede aplicar tambien en este caso para incluir nuevas graficas en una figura
previa.

2.6.

Superficies y curvas en tres dimensiones

Para dibujar una superficie de ecuacion z = f (x, y), se comienza por establecer los intervalos de
variacion 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.
p
Por ejemplo, si consideramos la funci
on z = |xy|, la orden
>> [x,y]=meshgrid(-1:.5:1,0:.5:1);
produce las matrices

1 .5 0 .5 1

x = 1 .5 0 .5 1 ,
1 .5 0 .5 1

0 0 0 0 0

y = .5 .5 .5 .5 .5
1 1 1 1 1

De esta forma, cuando escribamos


>> z=sqrt(abs(x.*y));
en la ventana de comandos, 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.
p
Ejemplo: Para dibujar la funci
on z = |xy| para x [1, 1], y [1, 1], tecleamos
>> [x,y]=meshgrid(-1:.05:1,-1:.05:1);
>> z=sqrt(abs(x.*y));
20

>> surf(x,y,z)
y obtenemos el gr
afico de la superficie

La orden
>> plot3(x,y,z)
que genera la figura

y la orden orden
>> mesh(x,y,z)

no rellenan los espacios entre lneas.


21

La orden rotate3d permite girar la superficie con el raton.


La orden colormap([a b c]) con a, b y c en [0, 1] nos permite cambiar el color de la superficie.
Analoga a la orden ezplot para dos dimensiones, disponemos de la orden ezsurf para superficies en
tres dimensiones. As, por ejemplo,
>> ezsurf(sqrt(x.^2+y.^2))
>> colormap([0.8 0.9 0.1])
produce la superficie

La orden
>> ezplot3(x,y,z)
genera la curva parametrizada x = x(t), y = y(t), z = z(t) con t [0, 2].
Por ejemplo
>> ezplot3(sin(t),cos(2*t),sqrt(t))
nos da la gr
afica

La orden
>> ezplot(x,y,z,[tmin tmax])
nos genera la curva con t [tmintmax].
Por ejemplo
22

>> ezplot3(cos(t),sin(t),t,[0 20])


nos genera la helice

2.6.1.

Algunas superficies elementales con MATLAB

El comando
>> cylinder

dibuja un cilindro de radio 1 y altura 1 con eje OZ

Con las
ordenes
>> [x,y,z]=cylinder(5,50);
>> x=1+x;y=2+y;z=2*z;
>> surf(x,y,z)
le pedimos que nos dibuje un cilindro con centro en (1, 2), radio 5, altura 2 y eje OZ tomando
50 puntos.
El resultado es

El comando
>> [x,y,z]=sphere

dibuja una esfera de radio 1 y centro (0, 0, 0).

Si tecleamos
>> [x y z]=sphere;
>> x=-1+3*x;y=3+3*y;z=3*z;
>> surf(x,y,z)
nos representa una esfera con centro en (1, 3, 0) y radio 3.
23

2.6.2.

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.
Si tecleamos
>>hold on

para que mantenga la figura

y el comando
>> contour(x,y,z,[c1,c2,c3,...,cn])
aparecen representadas las curvas de nivel f (x, y) = ci , para i = 1, . . . , n.
Ejemplo: Para representar la superficie de ecuacion z = x2 + y 2 con (x, y) [2, 2] [2, 2] y 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

24

Si solo 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;
>> contour(x,y,z,[1,2,3])
y si se quiere que aparezcan etiquetas sobre cada curva de nivel que reflejen el valor de la constante c,
se usa la funci
on clavel
>> clabel(contour(x,y,z,[1,2,3]))
resultando

Cuando necesitamos representar una superficie y deseamos que aparezcan las curvas de nivel, es muy
comodo usar la orden surfc(x,y,z).

25

Captulo 3

Programaci
on en MATLAB
3.1.

Archivos-M

Los programas en MATLAB se generan mediante archivos con extension .m, que llamaremos archivosM. Las dos modalidades que existen se denominan archivos de guion (o de instrucciones) y archivos
de funcion.
En todos los casos, para generar un archivo -M se debera ir a File New M-File tras lo que
aparece una ventana (Editor-Untitled) donde podemos escribir el programa correspondiente. Una
vez terminado, vamos a File de dicha ventana y haciendo clic en Save As, podemos guardar el archivo
.m con el nombre que le hayamos dado (nombre.m).
Un archivo de guion (script) consiste en una serie de instrucciones a ejecutar de forma interactiva.
Puede ocurrir que en estos se nos pida una serie de valores (inputs).
Por ejemplo para resolver la ecuaci
on de segundo grado ax2 + bx + c = 0 podemos crear el archivo
raices.m siguiente
>> % ra
ces de ax2 + bx + c = 0

Una lnea para describir el objetivo del archivo

>> a=input(coeficiente a=);


>> b=input(coeficiente b=);
>> c=input(t
ermino independiente c=);
>> Delta=b^2-4*a*c;
>> [(-b+sqrt(Delta))/(2*a), (-b-sqrt(Delta))/(2*a)]
las variables introducidas son variables de la sesion de trabajo tambien, por lo que para borrarlas
usaremos el comando clear.
Son mucho m
as u
tiles los arhivos M de funcion, con los que podemos definir nuevas funciones que se
a
nadiran a las que ya trae MATLAB (como sin(x), exp(x) o sqrt(x)).
Las dos primeras lneas de un archivo de funcion tienen la forma
>> function [y,z,..]=nombre(a,b,..)
26

>> % Se da una explicaci


on que sirva para reconocer la funci
on en otro momento
a,b,... denotan las variables de entrada (las variables independientes), van entre parentesis y separadas por comas.
y,z,... son las variables de salida (las variables dependientes), van entre corchetes (no hacen falta
cuando solo es una) y separadas por comas o espacios.
A continuaci
on se dan todas las
ordenes que se necesitan para ejecutar la nueva funcion.
Ejemplo 1:
Queremos crear un archivo de funci
on a la que llamaremos estad cuya entrada sea una matriz fila x
y cuyas salidas sean la media aritmetica y la desviacion tpica de los elementos de x.
>> function [med dest]=estad(x)
>> % La funci
on

determina

media y

desviaci
on t
pica de una fila

de datos $x$

>> n=length(x);
>> med=sum(x)/n;
>> dest=sqrt(sum((x-med).^2)/n);
Puede probarse introduciendo [med dest]=estad(1:20) o [med dest]=estad(rand(100,1)).
Ejemplo 2:
Creamos un archivo de funci
on con el nombre sombrero para a
nadir al listado de funciones que ya
posee MATLAB la funci
on f definida por
sen x
f (x) =
, si x 6= 0, y f (0) = 1
x
>> function y=sombrero(x)
>> % sombrero determina completamente la funci
on

f anterior

>> x=x+eps;
>> y=sin(x)./x;
Una vez creado el archivo sombrero.m, cuando tecleamos sombrero(x), obtenemos el valor de f (x),
si x es un escalar. Si x es un vector o una matriz, obtenemos un vector o una matriz cuyos elementos
son sombrero(x).
Es necesario tener en cuenta que las variables del archivo de funcion son variables locales, no forman
parte del espacio de trabajo general. Cuando se llama a una funcion, MATLAB crea un espacio de
trabajo local para la funci
on y las
ordenes en la funcion no se pueden referir a las del espacio global
a menos que se den como variables de entrada; las variables que no son de salida se borran cuando
termina la ejecuci
on de la funci
on. Puede forzarse un retorno anticipado con la orden return.
El nombre de todo archivo de funci
on debe coincidir con el nombre de la funcion y tiene extensi
on .m
(es decir nombre.m). Recordamos que 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.
Dentro de un archivo de funci
on se pueden crear subfunciones; estas no seran visibles fuera del archivo
de funcion al que pertenecen.
27

Por ejemplo, para generar la funci


on estadis podramos haber optado por definir
>> function [med dest]=estadis(x)
>> n=length(x);
>> med=sum(x)/n;
>> dest=sqrt(var(x,med,n));
>> function var=var(x,med,n)
>> var=sum((x-med).^2/n);

3.2.

Operadores de relaci
on

Sirven para comparar dos expresiones cuantitativamente. Son los siguientes:


<
<=
>
>=
==
=

menor que
menor o igual que
mayor que
mayor o igual que
igual a
no igual a

Si se usa uno de estos operadores para comparar dos matrices (o vectores), la comparacion se hace
elemento a elemento, produciendo una matriz con 1 en los lugares que verifican la relacion y 0 en
el resto. Si, por el contrario, se usan para comparar un escalar con un vector o matriz entonces se
compara el escalar con cada elemento del vector o matriz.
Como ejemplo, se puede practicar con
>> A=[1 3 0;0 1 0;1 2 0];B=[1 3 0;0 0 1;0 1 0];
para obtener
>> B>=A, B==A, A=B

3.3.

Operadores l
ogicos

MATLAB emplea los tres operadores logicos 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, las instrucciones siguientes:
>> A=[1 0;0 2];
>> A&B, A|B y B

B=[4 0;1 0];


producen respectivamente
1 0
0 0

1 0
1 1
28

0 1
0 1

Como se puede ver & coloca un 1 en los lugares donde los elementos correspodientes de ambas matrices
son no nulos y 0 donde al menos uno es 0; | coloca un 1 en los lugares donde alguno de los elementos
correspodientes en ambas matrices es no nulo y 0 donde ambos son 0. Por u
ltimo, crea una matriz
con 1 en los lugares donde los elementos de la matriz a la que se aplica son nulos y 0 en los restantes.

3.3.1.

Funciones l
ogicas

find
Esta funcion determina cu
ales son los ndices de una matriz que verifican determinada expresion l
ogica.
Es muy u
til para crear filtros o matrices de ndices.
Ejemplo:
Sustituir en una matriz m
agica de orden tres los elementos mayores que 5 por 10.
>> A=magic(3)

8 1 6

ans 3 5 7
4 9 2
>> i=find(A>5);
>> A(i)=10
>> A

ans

10 1 10

3 5 10
4 10 2

Si se suprime el punto y coma al final de la lnea i=find(A>5), en pantalla se despliega el valor de i y


vemos que se trata de una matriz columna con los ndices de los elementos de A que superan a 5. 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
on es cero. Sobre una matriz act
ua como en el caso de all.
xor
Si x e y son vectores de la misma dimension, xor(x,y) es un vector fila de ceros y unos 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.

29

3.4.

Bifurcaciones y bucles

MATLAB posee un conjunto de


ordenes que permiten, como es habitual en cualquier lenguaje de
programacion, realizar bifurcaciones y bucles.
Las bifurcaciones facilitan que se efect
uen una u otra operacion seg
un se cumpla o no determinada
condicion (control).
Los bucles permiten repetir las mismas o analogas operaciones sobre distintos valores.

3.4.1.

Sentencias if, else, elseif

En su version m
as simple el comando if se usa de la forma siguiente:
>> if condici
on
sentencias
>> end
MATLAB eval
ua the condici
on y, si es cierta, ejecuta las sentencias.
En caso de varios if anidados, cada uno debe finalizar con su correspondiente end.
En la version m
ultiple:
>> if condici
on1
sentencias1
>> elseif condici
on2
sentencias2
....
>> else % esta es la opci
on por defecto, cuando no se cumple ninguna de las condiciones anteriores
sentencias
>> end
Ejemplo:
Supongamos que queremos obtener las races de una ecuacion de segundo grado ax2 + bx + c = 0.
Podemos crear un archivo de instrucciones que nos pida los coeficientes a, b y c y determine las races,
una vez que haya comprobado que son reales. Le daremos el nombre raices.m.
>> %raices determina las ra
ces reales de
ax2 + bx + c = 0 y nos pide los coeficientes
>> a=input(coeficiente a=);
>> b=input(coeficiente b=);
>> c=input(t
ermino independiente c=);
30

>> Delta=b^2-4*a*c;
>> if Delta<0
disp(no hay ra
ces reales)
>> end
>> [(-b+sqrt(Delta))/2*a,(-b-sqrt(Delta))/2*a]
Para entender c
omo funcionan elseif y else, vamos a considerar el mismo ejemplo anterior pero
definiendo una funci
on con distintas salidas seg
un sea el valor del discriminante de la ecuacion:
>> function [x1,x2]=cuadratica(a,b,c)
>> dis=b*b-4*a*c;
>> if dis>0
x1=(-b+sqrt(dis))/(2*a); x2=(-b-sqrt(dis))/(2*a);
disp(dos ra
ces reales)
>> elseif dis==0
x1=-b/(2*a);x2=x1;
disp(una s
ola raiz doble)
>> else
x1=(-b+sqrt(dis))/(2*a); x2=(-b-sqrt(dis))/(2*a);
disp(no hay ra
ces reales)
>> end
elseif eval
ua la expresi
on l
ogica que aparece en su misma lnea 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 logica a evaluar y MATLAB realiza las instrucciones siguientes
hasta end si las expresiones l
ogicas de if y los elseif anteriores son falsas.

3.4.2.

Sentencia for

Repite un conjunto de sentencias un n


umero predeterminado de veces (bucle). La sintaxis es la siguiente:
>> for
ndice=inicio:incremento:final
instrucciones
>> end
Si el incremento es la unidad, no hace falta indicarlo.
Ejemplo 1:
31

Para crear un archivo de funci


on que determine 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
Los bucles se pueden anidar, de forma que por cada valor del primer ndice el segundo toma todos sus
valores.
Ejemplo 2:
Para construir una matriz A, 3 4 cuyos elementos sean de la forma aij =

1
.
i+j1

>> for i=1:3


>> for j=1:4
>> A(i,j)=1/(i+j-1);
>> end
>> end
>> A
Cuando se introduce un bucle for en la ventana de comandos solo se ejecutara despues de introducir
la orden end con la que termina.

3.4.3.

Sentencia while

Su sintaxis es la siguiente:
>> while expresi
on
instrucciones
>> end
Mientras que la expresi
on que controla while sea verdadera, se ejecutan todas las instrucciones comprendidas entre while y end.
Ejemplo:
Si queremos calcular el menor n
umero natural n tal que n! tiene 100 dgitos, ordenamos
>> n=1;
>> while prod(1:n)<1e100
n=n+1;
32

>>end
>> n;

3.4.4.

Sentencia break

Esta instrucci
on se usa para terminar un for o un while antes de que la ejecucion sea completa. Si
este no es el caso, se usar
a el comando return.
Ejemplo:
Supongamos que, a partir de k = 1, se desea determinar un vector w con un n
umero de componentes
2
menor o igual que 10, no negativas y de la forma 24 k .
>> k=1;
>> w(1)=24-k^2;
>> for k=2:10
a=24-k^2;
>> if a>=0
w(k)=a;
>> else
>> break
>> end
>> end
>> w
El programa anterior determina el vector w = (23, 20, 15, 8). El bucle for se termina cuando k = 5 ya
que w(5) = 1, y la expresi
on l
ogica del if, a>=0 es falsa por lo que MATLAB ejecuta la instrucci
on
break que termina el for, aunque no se ha llegado al final (k = 10).

3.4.5.

Sentencia continue

Este comando pasa el control a la siguiente iteracion en un for o un while, sin realizar las instrucciones
que siguen antes de end.
Ejemplo:
Determinamos un vector y cuyas componentes sean de la forma
x = 0:
>> k=0;
>> for x=-1:.2:1
>> if x==0
>> continue
33

senx
, para x = 1 : .1 : 1, exceptuando
x

>> end
>> k=k+1;
>> y(k)=sin(x)/x;
>> end
>> y

34

Captulo 4

C
alculo Simb
olico
4.1.

Variables simb
olicas

En los captulos anteriores hemos visto como se puede usar MATLAB como una calculadora potente
que act
ua sobre n
umeros para obtener tambien resultados numericos. Vamos a ver en este captulo
que tambien podemos pedirle a MATLAB que opere con expresiones matematicas en lugar de con
n
umeros, proceso que denominamos matematica simbolica.
El toolbox de matem
atica simb
olica es una coleccion de herramientas (funciones) para calcular lmites,
derivar, calcular primitivas, resolver ecuaciones, optimizar, calcular integrales definidas, operar con
matrices y determinantes simb
olicos, resolver sistemas lineales y un largo etcetera. Esta herramienta
esta construida sobre el paquete de software Maple.
Las variables simb
olicas se crean con la instruccion syms. Una vez declaradas las variables simb
olicas,
se pueden definir funciones simb
olicas. Por ejemplo
>> syms x a % Hemos declarado estas dos variables como simbolicas
>> f=x*sin(x/a);
Notese que en el c
alculo simb
olico se prescinde del punto que se antepona con algunas operaciones
para indicar que dicha operaci
on se haca coordenada a coordenada. Si en alg
un momento dudamos
si una funcion es de datos o simb
olica se puede recurrir a la instruccion class. Si tecleamos
>> class(x)
y pulsamos enter, obtenemos
ans

sym

que nos advierte de que x es una variable simbolica.


Para conocer que variables son simb
olicas en una expresion tecleamos
>> findsym(expresion)
Si queremos obtener el valor numerico de f anterior en 2, tecleamos
>> subs(f,2)
35

4.2.

Derivaci
on

Para calcular derivadas, MATLAB dispone de la funcion diff.


x
, con respecto a x (que es la variable por
Si se quiere obtener la derivada tercera de f (x) = x3 sen
a
omision), podemos proceder 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 MATLAB.
Para que aparezca expresada de la forma usual, podemos usar la instruccion pretty
>> pretty(d3f)
Para calcular la derivada primera de f , basta escribir diff(f).
Para funciones de varias variables simbolicas, el comando diff ejecuta las derivadas parciales.
As, por ejemplo
>> daf=diff(f,a)
da nombre y calcula la derivada parcial primera de f con respecto a la variable a mientras que
>> diff(f,a,2)
calcula la derivada parcial segunda de f respecto de a dos veces.
Por defecto, la variable que asume es x y despues la mas cercana a ella en el alfabeto; en caso de igual
cercana, la posterior.
El comando diff tambien act
ua sobre una matriz derivando cada elemento de la misma.
Observese que
>> syms x a
>> f=x*sin(x/a);
>> g=f^2
>> diff(g)
produce
2*x*sin(x/a)^2+2*x^2*sin(x/a)*cos(x/a)/a

4.3.

C
alculo de primitivas

Para calcular una primitiva de una funcion f , se dispone de la funcion int.


Z

Por ejemplo, para calcular ln( x) dx.


36

>> syms x
>> f=log(sqrt(x));
>> F=int(f)
Para funciones de varias variables,
>> syms x y
>> f=cos(x/y)/y^2;
>> F=int(f)
nos devuelve
sin(x/y)/y
cuya derivada parcial con respecto a x es f , mientras que
>> F=int(f,y)
nos devuelve
-1/x*sin(x/y)

4.4.

C
alculo de integrales definidas
Z

Si queremos calcular

1p

1 x2 , dx

>> syms x
>> f=sqrt(1-x^2);
>> I=int(f,0,1)
Tambien se pueden calcular integrales impropias:
Z +
El valor de
ex dx se obtiene tecleando
1

>> int(exp(-x),1,Inf)
mientras que
>> int(log(x),0,1)
Z 1
nos da el valor de
ln(x) dx.
0

La funcion rsums permite evaluar, de forma interactiva, las sumas de Riemann de una integral definida.
Su sintaxis es la siguiente: rsums(f,[a,b]).
Z 1
2
Ejemplo: Si queremos evaluar
ex dx tecleamos
0

>> rsums(exp(-x^2),[0,1])
y, tras pulsar enter, obtenemos la ventana grafica
37

Se puede modificar a nuestro gusto el n


umero de subdivisiones del intervalo de integracion moviendo
(a derecha o izquierda) el cursor que aparece en la base de la ventana grafica.

4.5.

C
alculo de lmites

Para el calculo de lmites, MATLAB dispone de la funcion limit.


Ejemplo 1:
sen(x + h) sen x
h
>> syms x h
Calcular lm

h0

>> f=(sin(x+h)-sin(x))/h;
>> a=limit(f,h,0)
Ejemplo 2:
Calcular lm

x0+

1 + e1/x
1 e1/x

>> syms x
>> f=(1+exp(1/x))/(1-exp(1/x));
>> limit(f,x,0,right)
Obtengase el otro lmite lateral y concl
uyase si existe o no el lmite ordinario.
Ejemplo 3:


1 x
Calcular lm
1+
x+
x
>> syms x
>> f=(1+(1/x))^x;
>> limit(f,x,Inf)
La orden int es m
as flexible que las diff y limit en el sentido de que puede introducirse la funci
on
directamente mediante una cadena de caracteres.
38

4.6.

El polinomio de Taylor

Para determinar el polinomio de Taylor de una funcion f , de orden n en el punto x = a, MATLAB


dispone de la funci
on taylor, cuya sintaxis es:
>> taylor(f,n+1,a)
Si se desea el polinomio de orden n, en la funcion taylor se indica n + 1, que es el n
umero de terminos
de que consta dicho polinomio.
Ejemplo:
Determinar el polinomio de Taylor de orden 3 de la funcion f (x) = (x + 1) sen(x2 ) en el origen:
>> syms x
>> f=(x+1)*sin(x^2);
>> taylor(f,4,0)
la respuesta es
ans = x^2 + x^3
MATLAB dispone de otra herramienta para obtener polinomios de Taylor: se activa con la orden
taylortool que nos abre una ventana grafica interactiva donde podemos introducir la funci
on para
ver la grafica de la funci
on y del polinomio de Taylor. Ademas, permite ir cambiando el orden del
polinomio, el punto x = a, etc, manipulando adecuadamente los correspondientesbotones. La ventana
grafica siguiente se obtiene sin m
as que teclear
>> taylortool((x+1)*sin(x^2))
Tras pulsar enter, obtenemos

La grafica de la funci
on aparece en trazo continuo de color azul. Pulsando en el boton N se puede ir
cambiando el orden del polinomio.
39

4.7.

Resoluci
on de ecuaciones

Para encontrar las soluciones de una ecuacion ( o sistema) algebraica, MATLAB dispone de la funci
on
solve.
>> solve(a*x^2+b*x+c) calcula las soluciones de la ecuacion de segundo grado.
>> solve(a*x^2+b*x+c,b) resuelve la ecuacion en b.
Tambien resuelve ecuaciones simb
olicas conteniendo el signo igual:
>> solve(tan(x)=x+1)
o para resolver un sistema
>> [x,y]=solve(x+2*y=1,x^2-y^2=2)
con resultado
x=
1/3 2/3 71/2
1/3 + 2/3 71/2
y=
2/3 + 1/3 71/2
2/3 1/3 71/2
Para ecuaciones en general, MATLAB dispone de la funcion fzero que puede usarse de dos formas
diferentes.
(a) Partiendo de un intervalo [a,b] que contenga a la raz que buscamos:
Por ejemplo para encontrar en el intervalo [/6, ] una raz de la ecuacion sen x x2 = 0.
Sea f (x) = sen x x2 . Como f (/6) = 2 /36 1/2 = 0.2258 < 0 y f () = 2 > 0, el Teorema
de Bolzano nos asegura que hay una raz de la ecuacion en el intervalo en cuestion. Para encontrarla,
procedemos como sigue
>> fzero(sin(x)-x^2,[pi/6,pi])
ans
0.8767.
(b) Partiendo de un valor cercano a la raiz que buscamos:
Para determinar una raz de la ecuaci
on sen x = cos(2x) con el dato x0 = .
>> fzero(sin(x)-cos(2*x),pi)
ans =
2.6180
o con el dato x0 = /2
40

>> fzero(sin(x)-cos(2*x),pi/2)
ans =
0.5236
Para polinomios puede utilizarse la orden roots cuyo argumento es un vector que contiene los coeficientes del polinomio ordenados en potencias decrecientes.
Por ejemplo, para obtener las races del polinomio p(x) = x3 + x + 1 tecleamos
>> roots([1 0 1 1])
y obtenemos
ans =
0.3412 + 1.1615i
0.3412 - 1.1615i
-0.6823

4.8.

Optimizaci
on de funciones de una variable

Para calcular el valor de x donde se produce el mnimo de la funcion y = f (x) en el intervalo [a, b]
podemos usar la orden fminbnd.
Por ejemplo, para determinar el mnimo de f (x) = ex (cos x sen x) en el intervalo [0, ], tecleamos
>> xmin=fminbnd(exp(-x)*(cos(x)-sin(x)),0,pi)
para obtener
xmin =
1.5708
El punto donde alcanza el m
aximo la funcion y = f (x) en el intervalo [a, b] es el mismo donde alcanza
el mnimo la funci
on y = f (x) en el intervalo [a, b].
>> xmax=fminbnd(exp(-x)*(-cos(x)+sin(x)),0,pi)
xmax =
0
Si queremos conocer el valor mnimo y el valor maximo de la funcion en el intervalo [a, b] procedemos
as
>> ymin=subs(f,xmin);ymax=subs(f,xmax);[ymin ymax]
para obtener
ans =
-0.2079

1.0000
41

S-ar putea să vă placă și