Está en la página 1de 35

APUNTES DE MATLAB

Ingeniera Tecnica Forestal


En estas breves notas, se pretende dar un primer paso en el aprendizaje del
uso de MATLAB (Matrix Laboratory).
Hemos dividido este trabajo en las siguientes secciones:
Comandos basicos. Variables
Vectores. polinomios y matrices.
Gracas 2D.
Gracas 3D.
Calculo simb olico.
Programacion con Matlab.
1 Comandos basicos. Variables.
Hagamos algunas consideraciones generales:
Para salir del programa: File Exit Matlab ( o escribiendo >> exit)
Las ordenes se escriben a continuaci on del prompt >>
Ejemplo:
>> 23
Tambien se puede asignar el valor a una variable:
>> x=5+32
Se pueden utilizar las funciones matematicas habituales.
>> sqrt(2)
1
Calculos/comandos encadenados:
>> x=sin(3),y=cos(10),z=tan(8)
Y si no caben en un renglon
>> x=sin(10),...
z=3*6
MATLAB distingue entre may usculas y min usculas.
Si se a nade un punto y coma (;) al nal de la instruccion, la maquina
no muestra la respuesta... pero no por ello deja de realizarse el calculo.
Los comentarios deben ir precedidos por % o, lo que es lo mismo,
MATLAB ignora todo lo que vaya precedido por el smbolo %.
Operadores: +, , , /, .
Las operaciones se eval uan por orden de prioridad: primero las poten-
cias, despues las multiplicaciones y divisiones y, nalmente, las sumas
y restas. Las operaciones de igual prioridad se eval uan de izquierda a
derecha.
La ayuda de MATLAB es bastante util; para acceder a la misma basta
teclear help. Es recomendable usarlo para obtener una informacion
mas precisa sobre la sintaxis y diversas posibilidades de uso de los
comandos.
>> helpwin
>> help det
>> lookfor rota
Formatos n umericos: El usuario puede controlar el n umero de decimales
con que aparece en pantalla el valor de las variables, sin olvidar que ello
no esta relacionado con la precision con la que se hacen los calculos,
sino con el aspecto con que estos se muestran.
Para cambiar la presentacion del valor de la variable se usa el comando
format o bien en File Preferences Numeric Format
>> 1/3
>> format long
2
>> 1/3
Los mas usuales son:
>> format long
>> format short e
>> format long e
>> format short
>> format rat
>> format +
La instruccion format vuelve al formato estandar que es el de 4 cifras
decimales. La representacion interna del n umero siempre es la misma.
Variables:
Para 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:
>> who
o, si se quiere mas informacion:
>> whos
Para deshacerse de una variable
>> clear y
Los calculos que no se asignan a una variable en concreto se asignan a
la variable de respuesta por defecto que es ans (del ingles, answer).
Sin embargo, si el calculo se asigna a una variable, el resultado queda
guardado en ella.
MATLAB tiene denida variables con valor predeterminado.
Por ejemplo:
pi El valor del n umero .
3
Inf Innito, aparece si hacemos 1/0.
NaN Mensaje de error (Not a Number), por ejemplo 0/0.
eps

Epsilon de la maquina (observese que MATLAB trabaja en doble
precision).
>>eps
ans = 2.2204e-016
pero...
estos se pierden si se les asignan otro valor distinto.
>> eps=7
eps = 7
La unidad imaginaria se representa en MATLAB como i o j.
2 Vectores, polinomios y matrices
2.1 Vectores
Para denir un vector la, basta introducir sus coordenadas entre corchetes:
>> v=[1 2 3]
>> w=[4 5 6];
El operador

es el de trasposicion para matrices reales y conjugacion y
trasposicion para matrices complejas. Nos permite denir vectores columnas:
>> w

(La comilla

es la que, en un teclado estandar, se encuentra en la tecla del
signo de interrogaci on.)
Si queremos declarar un vector de coordenadas equiespaciadas entre dos
4
dadas, por ejemplo, que la primera valga 0, la ultima 20 y la distancia entre
coordenadas sea 2, basta poner:
>> vect1=0:2:20
vect1 = 0 2 4 6 8 10 12 14 16 18 20
Equivalentemente, si lo que conocemos del vector es que la primera coor-
denada vale 0, la ultima 20 y que tiene 11 en total, escribiremos:
>> vect2=linspace(0,20,11)
vect2 = 0 2 4 6 8 10 12 14 16 18 20
A las coordenadas de un vector se accede sin mas que escribir el nombre
del vector y, entre parentesis, su ndice:
>> vect2(3)
y se pueden extraer subvectores, por ejemplo:
>> vect2(2:5)
o,
>> vect1(:)
Las funciones matematicas elementales estan denidas de forma que se pueden
aplicar sobre vectores. El resultado es el vector formado por la aplicacion de
la funcion a cada elemento del vector. As:
>> log(v)
Vector denido como el producto de un vector por un escalar
>> p=(0:0.1:1)*pi
>> x=sin(p)
Las operaciones habituales entre vectores (suma, resta y producto escalar
de vectores; suma, resta, producto y potencia de matrices) se representan
con los operadores habituales:
>> v,w
>> z=v*w
>> Z=w*v
>> v*w
5
??? Error using == * Inner matrix dimensions must agree.
Tambien pueden efectuarse multiplicaciones, divisiones y potencias de
vectores, entendiendolas como elemento a elemento (como, de hecho, se re-
alizan la suma y la resta). El operador utilizado para ellas es el habitual
precedido por un punto (.); es decir:
>> v.*w
>> w./v
>> v.2
Finalmente, tambien pueden calcularse longitud, producto escalar, producto
vectorial, etc:
>> length(v)
>> dot(u,v)
>> cross(u,v)
2.2 Variables logicas
Tambien existen variables logicas que toman los valores 0 (falso) o 1 (ver-
dadero). Por ejemplo:
Vector logico cuyas coordenadas valen 1 si la coordenada correspondiente
de v es mayor o igual que 2 y 0 si no lo es
>> abs(v) >= 2
Vector formado por la coordenadas de v que verican la desigualdad
>> vector = v(abs(v) >= 2)
Asignacion de un valor logico (el doble signo igual es el igual logico)
>> v2=[3 2 1]
>> logica=v==v2
6
Distinto ( es el operador de negacion)
>> logic2 = v = v2
2.3 Polinomios
Se puede trabajar con polinomios: basta tener en cuenta que un polinomio
no es mas que un vector. El orden de los coecientes es de mayor a menor
grado, por ejemplo:
Polinomio x
4
+ 2x
2
+ 3
>> p=[1 0 2 0 3]
Polinomio 2x
2
+ x
>> q=[2 1 0]
MATLAB tiene funciones especcas para polinomios como:
Evaluacion del polinomio x
4
+ 2x
2
+ 3 en x = 1
>>polyval(p,-1)
Producto de los polinomios p y q
>>pro=conv(p,q)
Cociente entre pro y p; obviamente el resultado es q
>> deconv(pro,p)
Races del polinomio pro
>> roots(pro)
Polinomio monico (aquel cuyo coeciente principal es 1) que tiene por
races a los n umeros i, i, 0.5 y
7
>> poly([i -i 1/2 pi])
2.4 Matrices
Las matrices se escriben como los vectores, pero separando las las mediante
un punto y coma; as una matriz 3x3:
>> M=[1 2 3;4 5 6;7 8 9]
Su traspuesta (en el caso de matrices reales), su traspuesta y conjugada (
en el caso de matrices complejas) es:
>> N=M

Podemos realizar las operaciones usuales, suma, diferencia, producto, po-
tencia, rango, determinante, inversa
>> S=M+N, M*N
>> S3
>> rank(M),inv(M)
>> det(N)
Para visualizar gracamente la matriz
>> spy(M)
Podemos construir matrices con otros vectores ya denidos
>> mat=[v;w;0 0 1]
A los elementos de una matriz se accede sin mas que escribir el nombre
de la matriz y, entre parentesis, los respectivos ndices:
Elemento en la primera la y tercera columna de la matriz mat
>> mat(1,3)
Tambien se puede acceder a un la o columna completas, por ejemplo a
la segunda columna de mat
8
>> mat(:,2)
O a su segunda la
>> mat(2,:)
Y tambien podemos acceder a la matriz como si fuera una columna. Por
ejemplo: los elementos segundo a septimo de la matriz como columna son
>> M(2:7)
O podemos acceder a cualquiera de sus submatrices. Por ejemplo el comando
que obtiene la submatriz formada por los elementos que estan en todaslas
las que hay entre la segunda y la tercera y en las columnas primera y tercera
de la matriz mat es
>> mat(2:3,[1 3])
Existen algunas matrices denidas previamente; por ejemplo, la matriz iden-
tidad,
>> eye(5)
O la matriz de ceros
>> zeros(3)
O la matriz cuyos elementos valen todos 1:
>> ones(4)
Se puede conocer el tama no de una matriz
>> size(mat)
Existen comandos que permiten crear de forma sencilla matrices. Por ejem-
plo:
Matriz diagonal cuya diagonal es el vector v
>> diag(v)
Matriz diagonal con la diagonal de M. La sentencia diag(M) da el vector
9
formado por la diagonal de la matriz M
>> diag(diag(M))
Matriz tridiagonal 5x5 con 0 en la diagonal principal y 1 en la sub y su-
perdiagonal
>> diag(ones(1,4),1)+diag(ones(1,4),-1)
Indicacion: Ver cheros .m en 6.1
Ejercicios
Vectores
1. (a) Denir un vector la de 10 elementos (valores reales), tal que la
diferencia entre dos elementos consecutivos sea igual a 0.5. Nom-
bre a a ese vector.
(b) Dena un vector columnna b de longitud 10, y cuyos elementos
sean los elementos de a elevados al cuadrado.
(c) Halle el producto escalar a.b.
2. (a) Crear un vector cuyo primer elemento sea 50, el ultimo 480 y tal
que la diferencia entre dos elementos cualesquiera sea 3.
(b) Hallar el n umero de elementos del vector denido en el apartado
anterior.
3. Sean los vectores las u y v denidos de la siguiente forma:
u=[10,-11,12], w=[2,1,3].
(a) Halle el producto escalar entre u y w, y el producto elemento a
elemento entre u y w. C ual es la diferencia entre ambos produc-
tos?
(b) La norma euclideana de un vector v es ||v|| =

n
i=1
|v
i
|
2
, donde
v = (v
1
, v
2
, ..., v
n
). Calcule la norma del vector u denido en (a) de
10
dos formas distintas. Existe una funcion predenida en matlab
para determinar la norma de un vector? Como podra determi-
narlo?
(c) El angulo formado entre dos vectores x e y se dene a partir de:
cos =
x.y
||x||||y||
,
donde x.y es el producto escalar entre ambos vectores. Aplique
esta formula para determinar el angulo entre u y w.
Exprese el angulo en grados.
Matrices
1. Dena una matriz A (3x5) tal que la primera la este formada por los
enteros consecutivos entre 1 y 5, la segunda la por los enteros entre 6
y 10, y la tercera por los enteros entre 11 y 19 con incremento 2.
(a) Halle la matriz transpuesta de A.
(b) Dena una matriz cuyos elementos sean unos, y de las mismas
dimensiones que A.
(c) Compruebe si la siguiente matriz B es simetrica (una matriz es
simetrica cuando es igual a su transpuesta).
B =

2 1 0
1 2 1
0 1 2

(d) Halle el producto matricial entre B y A.


2. Sea la matriz
J =

1 2 3 4
5 6 7 8
9 10 11 12
20 0 5 4

11
(a) Dena un vector formado por la tercera columna de J.
(b) Dena un vector igual a la cuarta la de J.
(c) Dena una matriz (4x2) formada por la segunda y tercera colum-
nas de J.
(d) Dena una matriz (2x2) formada por los elementos de la segunda
y tercera las y la segunda y tercera columnas de J.
3 Gracas 2D.
MATLAB tiene un gran potencial de herramientas gracas.
3.1 Gracas de funciones y = f(x)
Para representar gracamente una funcion, por ejemplo y = sen (x), se siguen
los siguientes pasos:
En primer lugar generamos los valores:
>> x=linspace(0,2*pi,10);
Sustituimos en la funcion:
>> y=sin(x);
Y dibujamos la graca con el comando plot:
>> plot(x,y)
Por defecto une los puntos (x(i),y(i)) mediante una poligonal. Con pocos
puntos la graca tiene un aspecto demasiado lineal a trozos. Para evitarlo,
basta tomar mas puntos.
>> x=linspace(0,2*pi,100);
12
>> y=sin(x);
>> plot(x,y)
Tambien pueden dibujarse funciones con el comando fplot. Este comando
genera los valores de la variable independiente automaticamente.
Dibuja la funcion seno en el intervalo [0,2*pi]
>> fplot(

sin(x)

,[0 2*pi])
3.1.1 Superposicion de gracas
El comando hold on mantiene en la ventana graca los dibujos anteriores
Dibuja sobre la graca anterior la funcion cos(x).
>> hold on
>> fplot(

cos(x)

,[0 2*pi])
El comando hold o desactiva la superposicion de gracos.
>> hold o
Dibuja la funcion x
2
sen (1/x):
>> fplot(

x2*sin(1/x)

,[-0.05 0.05])
Podemos tambien dibujar dos gracas en la misma ventana creando dos
funciones y dibujandolas.
>> x=linspace(0,2*pi,100);
>> y=sin(x);
>> z=cos(x);
>> plot(x,y,x,z)
13
3.1.2 Estilos de lneas y color.
Por ejemplo,
>> plot(x,y,

m+

)
>> plot(x,y,

g*

)
>> plot(x,y,

yd

,x,z,

r

)
Para ver todos los estilos, teclea
>> help plot
Para poner una malla:
>> grid on
Para desactivarla
>> grid o
Para modicar los ejes que aparecen por defecto, usamos el comando
axis, con el siguiente formato:
>> axis([xmin xmax ymin ymax]).
Por ejemplo,
>> axis([-1 1 -1 1])
Para que vuelvan a la situacion inicial:
>> axis auto
Para cuadrar los ejes:
>> axis square
14
3.1.3 Etiquetado de gracas.
Ejemplo:
>> x=linspace(-3,3,500);
>> y=exp(-x.2);
>> z=2*exp(-x. 2);
>> plot(x,y,

-

,x,z,


) % dibujamos
>> title (

Campanas de Gauss

)% ttulo
>> xlabel (

Eje de Abscisas

) % eje horizontal
>> ylabel (

Eje de Ordenadas

) % eje vertical
y por ultimo a nadimos un texto explicativo de cada uno de los gracos
con el comando legend
>> legend (

exp(-x2)

,

2*exp(-x2)

)
Para insertar texto sobre un punto cualquiera de la ventana, (En las
nuevas versiones esto se puede hacer directamente sobre la ventana):
>> gtext(

texto

)
3.1.4 Comando subplot
El comando subplot sirve para dibujar varios gracos en una misma ventana.
Ejemplo:
>> x=linspace(-2,2,100);
>> y1=x;y2=x.2; y3=x.3; y4=x.4;
>> subplot(2,2,1), plot(x,y1), title(

y=x

)
15
>> subplot(2,2,2), plot(x,y2), title(

y=x2

)
>> subplot(2,2,3), plot(x,y3), title(

y=x3

)
>> subplot(2,2,4), plot(x,y4), title(

y=x4

)
3.2 Curvas en parametricas
Dibujar la curva dada por:

x(t) = (1/t) cos(t)


y(t) = (1/t) sen (t)
; t [1, 100]
>>t=linspace(1,100,10000);
>>x=(1./t).*cos(t); y=(1./t).*sin(t);
>> plot(x,y)
Podemos dibujar las curvas y sus vectores tangentes utilizando el comando
quiver
>> t=linspace(0,2*pi,1000);
>> x=3*cos(t); y=2*sin(t);
>> plot(x,y), hold on
>> t=linspace(0,2*pi,30);
>> x=3*cos(t);y=2*sin(t);
>> dx=-3*sin(t);dy=2*cos(t);
>> quiver(x,y,dx,dy)
16
3.3 Curvas en implcitas
El comando ezplot dibuja curvas como plot en cartesianas y parametricas
de una manera mas sencilla ya que genera automaticamente los valores de la
variable independiente. Tambien se utiliza para dibujar curvas en implcitas.
Utiliza el intervalo [2, 2] por defecto.
>> ezplot(

cos(x)

)
Tomando otro intervalo en la variable independiente:
>> ezplot(

sin(1/x)

, [ 0 , pi ])
Podemos tomar un intervalo en la variable independiente y otro en la
dependiente:
>> ezplot(

sin(1/x)

, [ 0, pi, -1.2, 1.2 ])
Para dibujar curvas en forma implcita se utiliza el comando ezplot con
el siguiente formato ezplot(

g(x,y)

) donde la curva es g(x, y) = 0, y se
pueden especicar los intervalos de variacion de x e y. Por ejemplo:
>> ezplot(

x2+y2-1

, [-1,1,-1,1])
4 Gracas 3D
4.1 Curvas en el espacio
Dibujar la curva r(t) = (cos(t), sen (t), t) con t [0, 10]
Con el comando plot3
>> t=linspace(0,10*pi,5000);
>> plot3(cos(t),sin(t),t),grid on
>> xlabel(

Eje x

), ylabel(

Eje y

), zlabel(

Eje z

)
17
>> title(

Helice

)
Con el comando ezplot3
>> ezplot3(

cos(t)

,

sin(t)

,

t

,[0,10*pi])
Tambien existe el comando quiver3 que funciona de manera analoga
al correspondiente en 2D.
4.2 Gracas de funciones z = f(x, y)
Podemos tambien dibujar supercies. Por ejemplo, para dibujar la supercie
z = e
x
2
y
2
seguimos los siguientes pasos:
Primero generamos un mallado de la region de XY sobre la que vamos
a dibujar
>> [x,y]=meshgrid(-2:0.1:2)
Tambien podemos generar mallados no cuadrados, por ejemplo:
>> [x,y]=meshgrid(-2:0.1:2,-1:0.1:3);
Sustituimos en la funcion
>> z=exp(-x.2-y.2);
Dibujamos la funcion con cualquiera de los tres comandos siguientes
plot3, mesh, sur.
>> plot3(x,y,z)
>> mesh(x,y,z)
>> surf(x,y,z)
Los comandos siguientes sirven para modicar el dibujo obtenido.
Para cambiar el color:
>> shading interp;
18
>> colormap(pink);
Para girar la gura mediante el raton:
>> rotate3d;
4.3 Imprimir, exportar, guardar gracos
Podemos imprimir desde la ventana graca: File Print o File Print
Preview
Podemos exportar graco a un procesador de textos con Edit Copy
Figure y se pega en el procesador de textos. Tambien podemos exportar
con File Export
Podemos guardar gracos como un chero graco con File Save As
Otra posibilidad es crear un chero-M (Script) con los comandos que
generan el graco.
Ejercicios
Gracos
1. Sea la funcion y = sen (3x), denida en 0 x 1.
(a) Eval ue la funcion en N puntos igualmente espaciados en el rango
[0, 1], y represente y = y(x) uniendo los puntos mediante segmen-
tos de recta: tomando N = 10 y N = 100
(b) Dibuje las gracas anteriores en dos guras diferentes, para verlas
simult aneamente y compararlas (utilice el comando gure).
(c) Ponga ttulo y nombre a los ejes de la segunda graca.
(d) Superponga luego una malla.
19
(e) Limpie la ventana de gracos, o abra una nueva gura.
(f) Represente y=y(x) con una lnea de color azul.
(g) Represente y=y(x) con crculos de color rojo.
2. Dibuje la graca de las funciones: y = cos x e y = x, para 0 x 2,
en la misma ventana, con 100 puntos.
(a) Aplique el comando zoom para determinar en forma aproximada
el punto de interseccion.
(b) Limpie la ventana de gracos.
(c) Represente y = sen (3x) con 0 x 1.
(d) Vare el rango de los ejes x e y mediante el comando axis, tal que
el rango en el eje x sea entre 0.5 y 1.5, y el rango en y sea entre
1.2 y 1.2.
3. Mediante el comando subplot cree una gura con cuatro gracas,
tal que en la primera graca (contando de arriba hacia abajo, y de
izquierda a derecha) se represente la funcion y = sen (3x), en la
segunda y = cos(3x), en la tercera y = sen (6x) y en la cuarta
y = cos(6x),con 0 x 1. Nombre a los ejes en cada graca.
4. Represente la graca de las siguientes funciones, para 0 x 10, en
una misma gura pero en diferentes subventanas (mediante el comando
subplot). Experimente con los comandos axis, grid y hold.
y =
sen x
x
, u =
1
(x1)
2
+ x, v =
x
2
+1
x
2
4
, w =
(10x)
1/3
4x
2
)
1/2
.
5. Sean las funciones g(x) = sen (2x) y h(x) = cos(2x), con 0 x 1.
Represente ambas funciones en la misma ventana, cada una con 100
puntos como mnimo, y tal que la curva (x, g(x)) este representada por
un trazo continuo de color rojo, y la curva (x, h(x)) por una lnea pun-
teada de color verde. Agregue un texto (mediante el comando legend)
dentro de la ventana de gracos, indicando cual trazo representa cada
curva Ponga ttulo a la graca y nombre a los ejes.
20
6. Representar gracamente las siguientes curvas en parametricas
(a) x = 3 sen (2t) cos(t), y = 3 sen (2t) sen (t). Donde t varia entre
y .
(b) x = t sen (t), y = cos(t), z = t. Donde el parametro vale 0 t
20.
7. Representar las siguientes supercies utilizando los distintos comandos.
(a) f(x, y) = e
x
2
+y
2
(b) f(x, y) =
sen (

x
2
+ y
2
)

x
2
+ y
2
para 8 x 8, 8 y 8.
Indicacion Para que no haya problemas de division por cero con-
siderar la funcion R =

x
2
+ y
2
+eps y construir la funcion como
z = sin(R)/R.
5 Calculo Simb olico.
5.1 Expresiones Simb olicas.
Son cadenas de caracteres representando n umeros, funciones, operadores y
variables. Las variables no requieren valores predenidos.
Denicion de variable simb olica El comando syms dene simbolicamente
variables y tiene el siguiente formato syms nombre variable
Ejemplo
>>syms x
Denicion de funcion simbolica
Despues de tener denida la variable independiente como variable simbolica
es posible denir funciones simb olicas de la siguiente forma
nombre funcion = expresion matematica
21
Ejemplo
>> f = (x2-7*x+8)/(x+2)
5.2 Calculo de derivada n-esima de una funcion.
El comando di permite hallar la derivada n-esima de una funcion simb olica
con el siguiente formato di(nombre funcion, n). Si queremos hallar la deriva-
da de la funcion basta escribir el comando como di(nombre funcion)
Ejemplo
Calculemos la derivada tercera de la funcion f denida anteriormente y
la pondremos en forma bonita con el comando pretty.
>>d3=di(f,3)
>>pretty(d3)
5.3 Calculo de integrales.
5.3.1 Calculo de integrales indenidas
>>int (nombre funcion)
5.3.2 Calculo de integrales denidas
>> int(nombrefuncion, variable, liminferior, limsuperior)
Ejemplo
Calculemos

sin(x)
0
1
1+t
2
dt
Denimos las variables simb olicas x y t:
>> syms t x
22
Denimos la funcion simb olica:
>>f=1/(1+t 2)
Y calculamos la integral:
>> int(f, t, 0, sin(x))
Ejercicio
Calcular

1
0

1 x
2
dx
Resultado de las integrales denidas en forma numerica
>> numeric(ans)
Con mas decimales:
>>vpa(ans, n
o
decimales)
5.4 Ecuaciones Algebraicas.
Nos planteamos la resolucion de ecuaciones o sitemas de ecuaciones, tanto
con races reales como complejas, para lo que se utiliza el comando solve.
Resolucion de una ecuacion
>>solve(

ecuacion

), donde por ecuacion se entiende la expresion al-


gebraica de la misma.
Ejemplo
Si queremos resolver una ecuacion de segundo grado ax
2
+
+ bx + c = 0:
>>solve(

a x2+b x + c = 0

)
Resolucion de una ecuacion respecto a otra variable
>>solve(

ecuacion

,

nombre variable

)
23
Ejemplo
Si queremos resolver la ecuacion anterior ax
2
+ bx + c = 0 respecto de
la variable b:
>> solve(

a x2+b*x+c=0

,

b

)
Resolucion de un sistema de ecuaciones
>>[var 1,var 2]= solve(

ecuacion 1

,

ecuacion 2

)
Ejemplo
Resolver el sistema:

x y = 0
x + y = 1
Observaci on:
Si no se puede encontrar una solucion en forma algebraica (ecuacion
no algebraica), el comando solve devuelve una aproximacion numerica
de la solucion. Ocurre por ejemplo al intentar resolver sin(x) = x 1:
>>solve (

sin(x) = x-1

)
Entonces, en estos casos es mejor utilizar el comando fzero que
utiliza el metodo de biseccion para calcular las races, bien dentro de
un intervalo, o bien a partir de un valor real.
Comando fzero:
>> fzero(

ecuacion

, [a,b]): busca una raz en el intervalo [a, b], y


para ello es necesario que la funcion tome valores de distinto signo en
los extremos del intervalo, ya que su b usqueda se basa en el teorema
de Bolzano.
Ejemplo
>> fzero(

sin(x)- x+1

, [0,pi])
>>fzero(

ecuacion

, a)): busca una raz de la ecuacion a partir del
valor real a.
Ejemplo
24
>> fzero(

sin(x)- x+1

, 0)
Observaci on: En este caso necesitamos tener la ecuacion en la forma
f(x) = 0, y al colocarla en el comando fzero solo ponemos f(x).
5.5 Ecuaciones Diferenciales Ordinarias.
Para resolver ecuaciones de este tipo, usaremos el comando dsolve:
>>var resultado =dsolve(

ecuacion diferencial

var

)
Ejemplo
Resolver la ecuacion diferencial
dy
dx
= 1 + y
2
.
>>y= dsolve(

Dy= 1+y 2

,

x

)
Resuelve la ecuacion y el resultado lo mete en la variable y.
Resolucion de un problema con condiciones iniciales
>> variable resultado =dsolve(

ecuacion diferencial

,

condicion o
condiciones iniciales separadas por comas

,

var

)
Ejemplo
Resolver

dy
dx
= 1 + y
2
y(0) = 1
>>y= dsolve(

Dy= 1+y2

,

y(0)=1

,

x

)
Ejercicio
Resolver

d
2
x
dt
2
2
dx
dt
3x = 0
x(0) = 0
x

(0) = 1
25
5.6 Herramientas interactivas
Sumas de Riemann
Nos permiten aproximar el valor de la integral denida de una funcion f
en el intervalo [0,1]. Si queremos hacerla para otro intervalo, habra que
hacer antes un cambio de variable que convierta

b
a
f(x)dx en

1
0
g(t)dt
y aplicar luego las sumas de Riemann.
>> rsums(f)
Ejemplo
Evaluemos la integral de f(x) = 10xe
5x
2
y la comparamos luego con
la aproximacion de las sumas de Riemann
>>f= 10*x*exp(-5*x2)
Evaluamos el valor de la integral denida de f en [0,1] con 6 decimales:
>>vpa(int(f,0,1),6)
Activamos las sumas de Riemann:
>> rsums(f)
6 Programacion en Matlab.
Los tipos de programas que podemos realizar en Matlab son dos: tipo
Scripts (cheros de comandos) y tipo Function (en el que se denen fun-
ciones matematicas de una o varias variables). Ambos son cheros de
texto con extension .m, que contienen instrucciones propias de Matlab.
Como archivos de texto, se pueden crear con cualquier procesador. Re-
comendamos no obstante, utilizar el editor que trae incorporado Mat-
lab, que se invoca con la siguiente instruccion:
>> edit nombre del archivo;
Para conocer los archivos existentes de este tipo podemos teclear what.
26
6.1 Ficheros de comando o tipo Scripts y cheros tipo
Funtion
Ficheros de comandos o tipo Scripts.
Son los mas simples, no tienen argumentos de entrada ni de salida. Son
utiles para automatizar bloques de instrucciones y calculos que deben
efectuarse repetidamente. Operan sobre datos existentes en el espacio
de trabajo. Ademas, cualquier variable creada por uno de estos archivos
permanece en el espacio de trabajo una vez que naliza su lectura.
Observaci on.
Matlab trabaja con memoria dinamica, por lo que no es necesario
declarar las variables que se van a usar. Por esta misma razon, habra
que tener especial cuidado y cerciorarse de que entre las variables del
espacio de trabajo no haya ninguna que se llame igual que las de nue-
stro programa (proveniente, por ejemplo, de un programa previamente
ejecutado en la misma sesion), porque esto podra provocar conictos.
A menudo, es conveniente reservar memoria para las variables (por
ejemplo, si se van a utilizar matrices nuy grandes); para ello, basta con
asignarles cualquier valor. Del mismo modo, si se esta usando mucha
memoria, puede ser conveniente liberar parte de ella (clear) variables
que no se vayan a usar mas.
Ficheros tipo Function.
Aceptan argumentos de entrada y salida. Sirven para extender el
lenguaje de Matlab usando nuestras propias funciones. Tienen su
propio espacio de trabajo reservado, donde puede denirse variables
propias locales que no afectan al espacio de trabajo general.
Los pasos principales para denir una funcion en Matlab son:
1) Decidir un nombre para la funcion, que no sea igual al de
alguna funcion predenida en Matlab.
2) La primera lnea del archivo debe tener el formato:
27
Function [lista de salidas]= nombre de la funcion [lista de
entradas]
3) Documentar la funcion: describir brevemente el proposito
de la funcion y como puede ser usada. Estas lneas deben estar prece-
didas del smbolo %, pues son lneas de comentarios y debe indicarse
al programa que las ignore.
4) Incluir el codigo que dena la funcion.
Ejemplo
Vamos a realizar un peque no programa para calcular el area de un
triangulo, conocidas las longitudes de sus lados.
El nombre de la funcion que dena puede ser area, y el archivo: area.m.
Siguiendo los paso anteriores sera:
function [A]= area(a,b,c)
%Calcula el area de un triangulo de lados de longitud a, b y c
%Entradas: a,b,c: longitudes de los lados
% Salidas: A: area del triangulo
% Uso: area=area(a,b,c)
s = (a + b + c)/2;
A = sqrt(s (s a) (s b) (s c));
La funcion area puede invocarse desde la ventana de comandos de Mat-
lab, como cualquier otra funcion predenida.
6.2 Control de ujo. Bucles.
En el entorno de trabajo las instrucciones se ejecutan en el orden en el que
se van introduciendo.
Dentro de un programa, el orden, el ujo, se pueden alterar utilizando
algunas instrucciones:
28
a) Condicionales: Las secuencias de ordenes se ejecutan basandose en
alguna condicion.
b) Bucles (instrucciones iterativas): una o un grupo de ordenes que se
ejecutan varias veces.
6.3 Condicionales.
Estructura if simple
Su forma es la siguiente:
if condicional
comando
end
El comando se ejecuta si todos los elementos en condicional son ver-
daderos.
Ejemplo:
>>a=3;
if a>2
b=a+5
end
Estructura if compuesta
if condicional
comando primero
else
comando segundo
end
29
Ejemplo:
>>a=n;
if a>5
b= a+5
else
b= a-1
end
Estructura if-else-if
Se usa cuando hay mas de dos condiciones que puedan cunplirse. Su
forma es:
if condicional primero
comando primero
elseif condicional segundo
comando segundo
elseif condicional tercero
comando tercero
......
else
comando nal
end
Ejemplo:
>>b= 1:5;n=5;
if n==1
x=b. 1
elseif n==2
x=b. 2
30
elseif n==3
x=b. 3
else
x=b
end
Orden switch
El mismo resultado del ejemplo anterior se podra haber obtenido con
switch, de la siguiente forma:
switch(n)
case(1)
x=b. 1
case(2)
x=b. 2
case(3)
x=b. 3
otherwise
x=b
end
6.4 Bucles.
Bucles for.
Ejecuta una o varias sentencias un n umero predeterminado de veces.
Su forma general es:
for i=1:n
sentencias
end
31
Ejemplo:
for i= 1:10
a(i)= i+2;
end
Produce el vector a= (3,4,5,6,7,8,9,10,11,12)
Ejercicio:
Crear la matriz de Hilbert. Es decir, una matriz A = (a
ij
)
1i,jn
, donde
a
ij
=
1
i+j1
Bucles while.
Sirve para ejecutar una sentencia o grupo de sentencias mientras se
cumpla una condicion. Su forma general es:
while condicional
comando
end
6.5 Lectura y escritura interactiva de variables.
Veremos una forma sencilla de leer variables desde el teclado y escribir men-
sajes en la pantalla del PC.
6.5.1 Funci on input
La funcion input permite imprimir un mensaje en la lnea de comandos de
MATLAB y recuperar como valor de retorno un valor numerico o el resultado
de una expresion tecleada por el usuario. Despues de imprimir el mensaje,
el programa espera que el usuario teclee el valor numerico o la expresion.
Cualquier expresion valida de MATLAB es aceptada por este comando. El
usuario puede teclear simplemente un vector o una matriz. En cualquier caso,
la expresion introducida es evaluada con los valores actuales de las variables
32
de MATLAB y el resultado se devuelve como valor de retorno. Veamos dos
ejemplos de uso de esta funcion:
Ejemplo 1:
>> n= input(Teclee el n umero de elmentos);
Ejemplo 2:
>> direccion= input(Donde vives?, s);
Observemos el parametro s. En este caso el texto tecleado como re-
spuesta se lee y se devuelve sin evaluar, con lo que se almacena en la cadena
direccion , As pues, en este caso, si se teclea una formula, se almacena
como texto sin evaluarse.
6.5.2 Funci on disp
La funcion disp permite imprimir en pantalla un mensaje de texto o el valor
de una matriz, pero sin imprimir su nombre. En realidad, disp siempre im-
prime vectores y/o matrices: las cadenas de caracteres son un caso particular
de vectores. Veamos un ejemplo de su uso:
>> disp (El valor de la matriz es)
>> disp (A)
Ejercicios
1. Calcular la suma de los n primeros terminos de la sucesion: 1, 2x, 3x
2
,
4x
3
, ...,
2. Decidir si un n
o
natural es primo.
3. Escribir un n
o
natural en una base dada (menor de 10).
33
4. Represente la funcion sin(nx)en el intervalo 1 x 1 , para
n=1,2,3,...,8.
5. La Sucesion de Fibonnaci empieza con los n umeros 0 y 1, y los terminos
restantes son la suma de los dos terminos anteriores:
f
1
= 0, f
2
= 1, f
n
= f
n1
+ f
n2
, n = 3, 4, ...
a) Denir una funcion que determine el enesimo termino de la serie
(input: n, output: )
b) Comprobar la hipotesis de que el cociente entre dos terminos suce-
sivos de la serie tiende al valor

5+1
2
(sugerencia: calcule el cociente
para los primeros 20 terminos).
6. Almacenar en un vector las races cuadradas de los primeros 25 n umeros
pares.
7. Almacenar en un vector los productos entre los 10 primeros n umeros
impares con los m ultiplos de 3 positivos menores que 100.
8. Escriba un script que determine si un a no dado es bisiesto (nota: debe
ser m ultiplo de 4). El a no debe ser leido desde la pantalla, y el resultado
mostrarse en pantalla.
9. Escriba un script tal que determine si
e
> e

, y entonces asigne a
una variable b el valor: b =

a
2
c
2
, y b = 0 en caso contrario.
10. Escriba un script tal que, dada una ecuacion cuadratica de la forma:
ax
2
+ bx + c = 0 , calcule las dos races reales si el discriminante es no
negativo, y en caso contrario despliegue un mensaje indicando que no
hay races reales.
11. Escriba un script que lea los coecientes de las rectas:

ax + by = c
dx + ey = f
y determine si son paralelas, y en caso de no serlo, determine si son
perpendiculares.
34
12. Escriba un script que lea las coordenadas de 3 puntos en el plano, y
determine si estan alineados. 14.
13. Dena la funcion area (ver el teorico) y aplquela para calcular el area
de un triangulo de lados de longitudes 10, 15, 20.
14. a) Dado un vector v, escriba una funcion que determine sus coordenadas
cartesianas (x,y) a partir de sus coordenadas polares (r,).
b) Aplique la funcion anterior para determinar las coordenadas carte-
sianas para r=5 y =

6
.
15. a) Dena la funcion f(x) =
sin(x)
x
, donde x puede ser un escalar o un
vector
b) Estime el lmite de la funcion , cuando x 0. Sugerencia: Observe
el comportamiento de f(x) al evaluarla en una secuencia de valores que
se aproximan a 0: [0.1,0.01,0.001,0.0001,...etc]. Pruebe a cambiar el
formato numerico (de short a long p.e.).
7 Apendice: Algunas funciones utiles para
los ejercicios.
1. Funci on rem (n,i))
Nos da el resto de dividir n entre i.
2. Funci on x (n/a))
Parte entera del cociente n/a.
35

También podría gustarte