Escolar Documentos
Profissional Documentos
Cultura Documentos
1
ndice general
1.3. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2. Bucles y funciones 12
2.1. Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2. Ficheros.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2. Grcos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2
Captulo 1
Introduccin al programa MatLab
Existe algn comando del MatLab que permita trabajar con comandos o
cheros externos al MatLab?
3
Se puede guardar la sesin de trabajo en un chero?
Cmo se puede detener algn clculo, grco o impresin del MatLab sin
salir del paquete?
4
1.2. Operaciones elementales, variables y cons-
tantes
Con el MatLab se puede realizar cualquier operacin que podramos hacer
con una calculadora. Cada una de estas operaciones por defecto se guarda
en la variable ans. Si nosotros no queremos trabajar con esta variable, antes
de realizar cualquier operacin, deberemos hacer una asignacin a la variable
donde pretendemos que se guarde el resultado. El proceso consiste en escribir
el nombre de la variable seguida del signo = y de la operacin que pretende-
mos realizar. Cada vez que escribamos la variable y apretemos ENTER, el
programa devolver su valor. El nombre de la variable se puede utilizar tan-
tas veces como deseemos, pero hay que recordar que guardar slo el ltimo
valor.
Si se desea conocer las variables que estn activas hasta este momento
utilizaremos el comando who, si adems queremos saber de qu tipo son y su
tamao se utiliza el comando whos. Si queremos borrar alguna variable te-
clearemos el comando clear seguido del nombre de la variable que deseamos
borrar. Utilizando slo el comando clear se borran todas las variables, que
se tienen asignadas en la memoria.
(2+3*i)+(5-2*i)
7+1i
Si escribimos
5
(2+3*i)*(5-2*i)
o bien
(2+3*i)/(5-2*i)
obtenemos respectivamente
16+11i
0.1379+0.6552i
abs(2+3*i) = 3.6056
angle(2+3*i) = 0.9828
real(2+3*i) = 2
imag(2+3*i) = 3
conj(2+3*i) = 2-3i
1.3. Funciones
Al igual que otros paquetes matemticos, MatLab dispone de un catlogo
completo con las funciones ms utilizadas. Siempre podremos buscar infor-
macin de dichas funciones con la ayuda. A modo de ejemplo, a continuacin
daremos una lista de algunas de estas funciones:
6
sqrt( ) raz cuadrada.
round( ) redondeo entero ms cercano.
sign( ) funcin signo.
exp( ) exponencial.
log( ) logartmo neperiano.
log10( ) logartmo decimal.
sin( ) seno.
cos( ) coseno.
tan( ) tangente.
asin( ) arcoseno.
acos( ) arcocoseno.
atan( ) arcotangente.
etc.
A=[1,2,3;4,5,6;7,8,9]
7
B =[1
2
3]
C =[1 0 0
2 0 1
0 0 2]
Una vez que hemos denido estas matrices se puede obtener el elemento
i, j de la matriz A escribiendo A(i,j).
Se pueden realizar multiples operaciones con matrices y vectores. Los
signos que se utilizan son: para sumar +, para restar -, para multiplicar *, la
potenciacin se indica con ^ seguido de nmero al que se pretende elevar la
matriz. Todas las operaciones se llevan a cabo entre dos matrices. Si ello no
es posible, MatLab devuelve un mensaje de error.
A\B es equivalente a A1 B .
A/B es equivalente a AB 1 .
A=[1 2 3]
A.^2
[1 4 9]
8
Este resultado se puede obtener tambin escribiendo
A.*A
1 2 3
A = 4 5 6 ,
7 8 9
1 3
.
7 9
9
A parte se pueden construir matrices por bloques, por ejemplo la intruc-
cin
B=[zeros(2,3),eye(2);zeros(3,2),eye(3)]
1.5. Ejercicios
1. a) Si z1 = 3 + 5i y z2 = 1 2i. Calcular
|z1 | , z1 + z2 , z1 z2 , z1 /z2 .
c) Calcular
2. Dadas
1 2 3 1
A = 0 1 6 y b = 2 ,
0 1 9 3
calcular
a ) A + A,
b ) 2A,
c ) AA,
d ) A2 ,
e ) A\b y comprobar que el resultado coincide con A1 b,
f ) bT /A y comprobar que el resultado coincide con bT A1 ,
10
g) Calcular el producto escalar bb y el producto vectorial b b.
1 3 4 2 4 6 1
D = 2 5 7 , E = 4 5 6 , c = 2 .
0 1 1 3 1 2 0
a) Calcular D + E, DE, DT E.
b) A patir de las matrices D y E anteriores sacar sus vectores la,
sus vectores columna y una submatriz 22 formada por las las
1 y 2 y las columnas 2 y 3.
c) Resolver el sistema
E x=c
d) Construir una matriz diagonal que contenga la diagonal de la ma-
triz E.
e) Construir las matrices por bloques
D
D E , .
E
4. Dada la matriz
2 4 6
E= 4 5 6
3 1 2
obtener su parte estrctamente triangular inferior (sin la diagonal) y su
parte estrctamente triangular superior.
11
Captulo 2
Bucles y funciones
2.1. Bucles
La utilizacin de bucles permite realizar mltiples operaciones que se
repiten, mediante instrucciones muy sencillas. El bucle ms sencillo que se
puede escribir es un bucle tipo for y tiene la forma
for i =1:n
instrucciones
end
10
X
2i ,
i=1
suma=0;
for i=1:10
suma=suma+2^i;
end
suma
10
Y j
,
j=1
j + 1
12
las instrucciones a utilizar seran
produc=1;
for j=1:10
produc=produc*j/(j+1);
end
produc
while relacion
instrucciones
end
Por ejemplo, si se quiere calcular el mayor nmero entero n tal que 2n <
3000, se puede hacer utilizando las siguientes instrucciones
n=0
while 2^n < 3000
n=n+1;
end
n-1
13
if relacion
instrucciones
end
if n<0
paridad=0;
elseif rem(n,2)==0
paridad=2;
else
paridad=1;
end
switch method
case {1,2}
disp('metodo lineal')
case 3:
disp('metodo cubico}
otherwise:
disp('metodo de orden superior')
end
14
2.2. Ficheros.m
Matlab dispone, en general de un editor que permite crear cheros de
texto. Estos cheros suelen llevar la extensin .m y permite crear programas,
que no son ms que un conjunto de instrucciones y funciones. Para ejecutar
estos programas bastar incluir el directorio donde se tiene el chero en el
path del MatLab, haciendo uso de la funcin path() y teclear el nombre del
chero sin extensin.
function s=suma5(x)
% suma5 es una funcion que suma 5 a x
s=x+5;
function [media,desv]=estad(x)
[m,n]=size(x);
if m==1
m=n;
end
media =sum(x)/m;
desv =sqrt(sum(x.^2)/m-media^2);
n n
21X 1X 2
= (xi x)2 = xi x2 .
n i=1 n i=1
15
La instruccin disp('mensaje') muestra un mensaje al ususario.
La instrucccin
2.3. Ejercicios
1. Calcular, utilizando la instruccin sum( )
10
X
2i .
i=1
3. Construir una funcin que calcule la nota media del expediente acad-
mico de un alumno de primer curso, a partir de un vector donde estn
almacenadas las notas.
b k
m
s
+m
F (s) = ,
s2 + mb s + k
m
16
donde b es el amortiguamiento, k la elasticidad del muelle y m la masa.
Utilizando MatLab, denir esta funcin de transferencia. Calcular los
valores de la funcin de transferencia si tomamos b = 1, m = 2, k = 3
y se hace variar la variable s de 0 a 100 de una unidad en una unidad,
guardando el resultado en un vector.
6. La siguiente expresin
log(n!) n log(n) n ,
n2 a
P + 2 (V nb) = nRT ,
V
8. Dada una matriz A n m, escribe una funcin que permute las las k
e i de la matriz A cuya llamada sea B = permuta(A,k,i).
17
9. Calcula aproximadamente el valor de utilizando el siguienete resul-
tado
2 8 X 1
= 2 (2n + 1)2
.
16 n=1
(2n 1)
Cantos trminos de la serie hace falta sumar para obtener una pre-
12
cisin de 1 10 ?.
Fn = Fn1 + Fn2 ,
con F0 = F1 = 1
18
Captulo 3
Grcas con Matlab
3.1. Grcas 2D
La representacin grca 2D de una funcin se puede obtener cuando la
funcin se expresa en coordenadas cartesianas o paramtricas.
El comando plot(x,y) representa los pares que tienen como abcisas los
elementos del vector x y como ordenadas los elementos del vector y. Con
el comando plot(y) toma como abcisas los nmeros naturales 1,2, . . . , n.
El comando linspace(a,b,N) genera N puntos igualmente espaciados com-
prendidos entre a y b. As, para la generacin de grcas de funciones se
procede, por ejemplo, del siguiente modo:
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y)
19
1
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7
plot(x,y,x,y,'+')
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7
Por otra parte, se pueden controlar los colores y los estilos de las lneas
utilizando los smbolos de la siguiente tabla:
20
Smbolo Color Smbolo Estilo
y amarillo . puntos
m magenta o crculos
c cyan x aspas
r rojo + cruces
g verde * estrella
b azul - lnea
w blanco : lnea de puntos
k negro - . lnea y puntos
- - lnea de guiones
y=sin(x)
plot(x,y,'g:',x,y,'wo',x,y,'r:',x,y,'c+')
obtenindose
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7
plot(x,y,'g:',x,y,'wo',x,y,'r:',x,y,'c+')
hold on
z=cos(x)
plot(x,z)
21
1
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7
plot(x,y)
title('titulo de la funcion seno')
xlabel('eje x')
ylabel('sen(x)')
text(2.5,0.7,'sen(x)')
0.8
sen(x)
0.6
0.4
0.2
sen(x)
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7
eje x
La funcin axis tiene control sobre la apariencia de los ejes, as, por
ejemplo:
22
axis([xmin, xmax, ymin, ymax])
ja el eje x y el eje y de forma que el valor mnimo para las x-s sea xmin, el
valor mximo para las x-s sea xmax, el valor mnimo para las y -s sea ymin,
el valor mximo para las y -s sea ymax.
axis equal: usa la misma escala para las x-s que para las y -s.
axis normal: devuelve la escala a sus valores de defecto.
x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
a=2*sin(x).*cos(x);
b=sin(x)./(cos(x)+eps);
subplot(2,2,1) % se divide la zona de dibujo
% en 2 x 2 graficos y se selciona
% la primera zona (arriba izquierda).
plot(x,y)
axis([0, 2*pi, -1, 1])
title('sen(x)')
subplot(2,2,2) % se seleciona la segunda zona
plot(x,z)
axis([0, 2*pi, -1, 1])
title('cos(x)')
subplot(2,2,3) % se seleciona la tercera zona
plot(x,a)
axis([0, 2*pi, -1, 1])
title('sen(2x)')
subplot(2,2,4) % se seleciona la cuarta zona
plot(x,b)
axis([0, 2*pi, -15, 15])
title('sen(x)/(cos(x)+e'))
23
sen(x) cos(x)
1 1
0.5 0.5
0 0
0.5 0.5
1 1
0 2 4 6 0 2 4 6
sen(2x) sen(x)/(cos(x)+e)
1 15
10
0.5
5
0 0
5
0.5
10
1 15
0 2 4 6 0 2 4 6
loglog : Es una funcin igual que plot pero usa escalas logartmicas para
el eje x y el eje y.
semilogx : Es una funcin igual que plot pero usa escala logartmica para
el eje x y lineal para el eje y.
semilogy : Es una funcin igual que plot pero usa escala logartmica para
el eje y y lineal para el eje x.
ezplot('sin(2*t)','cos(2*t)',[0,2*pi])
x = sin(2 t), y = cos(2 t)
1
0.8
0.6
0.4
0.2
0
y
0.2
0.4
0.6
0.8
1 0.5 0 0.5 1
x
24
Una grca de una funcin en coordenadas polares puede crearse usando
la funcin polar, como muestra el siguiente ejemplo:
t=0:0.01:2*pi;
r=sin(2*t).*cos(2*t);
polar(t,r)
90
0.5
120 60
0.4
0.3
150 30
0.2
0.1
180 0
210 330
240 300
270
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
3 2 1 0 1 2 3
25
x=-2.9:0.2:2.9; % especifica el numero de divisiones
y= randn(5000,1);
hist(y,x)
450
400
350
300
250
200
150
100
50
0
3 2 1 0 1 2 3
x=0.1:0.1:10;
y= log(x);
e=rand(size(x))/10; % crea un vector de errores aleatorio
errorbar(x,y,e)
2.5
1.5
0.5
0.5
1.5
2.5
0 2 4 6 8 10 12
26
forma fplot('fun',[xmin xmax]) o bien fplot('fun',[xmin xmax ymin
ymax]).
Un ejemplo de su uso es el siguiente:
grafica de sin(x)/(x+eps)
1.2
0.8
0.6
f(x)
0.4
0.2
0.2
0.4
20 15 10 5 0 5 10 15 20
x
3.2. Grcos 3D
Para generar la representacin de una curva en el espacio, se puede utilizar
la funcin plot3. Supongamos que se quiere dibujar la espiral
x(t) = cos(t)
E= y(t) = sen(t)
z(t) = t , t [0, 10] .
t=0:pi/50:10*pi;
x=sin(t);
y=cos(t);
z=t;
plot3(x,y,z,'r');
title('espiral')
xlabel('x'), ylabel('y'),zlabel('z')
27
espiral
35
30
25
20
z
15
10
0
1
0.5 1
0.5
0
0
0.5
0.5
1 1
y
x
p
z(x, y) = sen x2 + y 2 .
x=-7.5:0.5:7.5;
y=x;
[X,Y]=meshgrid(x,y);
Z=sin(sqrt(X.^2+ Y.^2));
mesh(X,Y,Z)
28
1
0.5
0.5
1
10
5 10
5
0
0
5
5
10 10
mesh(Z)
surf(X,Y,Z)
contour(X,Y,Z,20)
contour3(X,Y,Z,20)
pcolor(Z)
produce esta representacin con el juego de colores que tiene Matlab por
defecto. El juego de colores que usa Matlab se puede cambiar mediante la
funcin colormap. Distintas posibilidades de colores que tiene matlab imple-
mentadas se muestran en la siguiente tabla
29
funcin Descripcin
hsv Saturacin de tonos
hot Negro, rojo, amarillo y blanco
pink Sombras pastel rosa
gray Escala de grises
bone Escala de grises con matices azules
jet Una variante de hsv
copper Tonos cobre
prism prisma
ag rojo, blanco, azul y negro alternativos
colormap(hot)
pcolor(X,Y,Z)
shading flat % quita la rejilla
hold on
contour(X,Y,Z,20,'k')
hold off
view(phi,theta)
view([x1,x2,x3])
3.3. Ejercicios
1. Representar grcamente las siguientes curvas:
a) y = x5 + 3x + 5, x [0, 1],
b) y = e3x + sen(x), x [0.5, 0.5],
x(t) = t sen(t)
c) y(t) = t cos(t)
, t [0, 4] .
30
d) = cos() + sen(/4), [0, 2].
2. Los polinomios de Legendre se denen mediante la siguiente relacin
de recurrencia
y = tan(x)
y = cosh(5 x)
y = e2x + 5 sen(2x)
y = x2 + 3x + 4, x [0, 1].
z(x, y) = x2 + y 2 ,
31
Captulo 4
Races de ecuaciones, integrales y
ecuaciones diferenciales
1 1
f (x) = + 6 .
(x 0.3)2 + 0.01 (x 0.9)2 + 0.4
Primero se dibuja la funcin junto con el eje de las x-s, para ello, primero se
dene la funcin
function y=func(x)
% funcion de la que se quiere buscar la raiz
y =1/((x-0.3).^2 +0.01) + 1/((x-0.9).^2 + 0.4)- 6;
fplot('func', [0 2])
hold on
fplot('0', [0 2], 'g')
hold off
obteniendo
32
100
80
60
40
20
20
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
fzero('func', 0.8)
function [xr,k]=newtonsi(x,tol,imax)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Metodo de Newton para sistemas de ecuaciones
% Uso: [xr,k]=newtonsi(x,tol,imax)
%
% Input:
% x = vector x1,x2,...,xn inicial,
% tol=tolerancia
%
% Se ha de disponer de las funciones:
% f.m funcion y=f(x) donde se define el sistema
% jac.m funcion df=jac(x) donde se define la matriz
33
% derivada del sistema.
%
% Output: xr= raiz, k= numero de iteraciones.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
k=1;
epi=1;
x1=x;
while norm(epi)>tol
x=x1;
fxn=f(x);
axn=jac(x);
epi=axn\fxn';
x1=x-epi';
k=k+1;
if k>imax
disp('no converge')
break
end
end
xr=x1;
Esta funcin usa dos funciones auxiliares, f.m y jac.m donde se denen la
funcin que dene el sistema de ecuaciones y la matriz derivada de esta
funcin, respectivamente. Para el problema (4.1) estas funciones son de la
forma
function y=f(x)
% funcion para utilizar con newtonsi.m
y(1)=x(1)^2-10*x(1)+x(2)^2+8;
y(2)=x(1)*x(2)^2+x(1)-10*x(2)+8;
function df=jac(x)
% matriz jacabiana para usar con newtonsi.m
df(1,1)=2*x(1)-10;
df(1,2)=2*x(2);
df(2,1)=x(2)^2+1;
df(2,2)=2*x(1)*x(2)-10;
34
niendo como resultado la raz xr= [1.00, 1.00] en k= 10 iteraciones.
x=0:pi/10:pi/2;
y=sin(x);
integral=trapz(x,y)
integral=quad('sin',0,pi/2)
o bien,
integral=quad8('sin',0,pi/2)
d2 x dx
2
(1 x2 ) + x = 0 .
dt dt
35
Primero se ha de expresar la ecuacin diferencial en forma normal, esto es,
dx
se introducen las variables y1 = x y y2 = , con lo que se tiene el sistema
dt
de ecuaciones
dy1
= y2 ,
dt
dy2
= (1 y12 )y2 y1 .
dt
function yprime=vdpol(t,y)
% devuelve las derivadas del oscilador de Van der Pol
% se escoge mu = 2
mu=2;% se suele elegir 0 < mu < 10
yprime = [ y(2);
mu*(1-y(1)^2)*y(2) - y(1) ] ;
[t,y]=ode23('vdpol',[0,30],[1;0]);
y1=y(:,1);
y2=y(:,2);
plot(y1,y2) % diagrama de fases
4.4. Ejercicios
1. Los problemas relacionados con la cantidad de dinero requerida para
pagar una hipoteca en un periodo jo de tiempo involucran una frmula
de la forma,
P
1 (1 + i)n ,
A=
i
36
conocida como ecuacin de anualidad ordinaria. En esta ecuacin, A
es la cantidad de la hipoteca, P es la cantidad de cada pago, e i es la
tasa de inters por periodo para los n periodos de pago.
x = x2 sen(x) ,
cos(3x) = cos(7x) ,
Mg M 2g kt
S(t) = S0 + t 2 1 e M ,
k k
donde g = 9.8m/s2 y k representa el coeciente de rozamiento con el
aire. Si M = 0.1 kg, S0 = 9.2m y k = 0.15 kg s/m. Calcular con una
2
precisin de 10 s en qu momento el objeto estar a 2.3m de tierra.
37
Calcula el trabajo necesario para disminuir V de 80 a 32.5,
Z 80
W = P dV .
32.5
7. Se tiene que construir una hoja de techo corrugado usando una mquina
que comprime una hoja plana de aluminio convirtindola en una cuya
seccin transversal tiene la forma de una onda senoidal. Supongamos
que se necesita una hoja corrugada de 50 cm de longitud y que cada
ondulacin tiene una altura de un cm respecto de la lnea horizontal y
un periodo de 2 cm. El problema de encontrar la longitud de la hoja
inicial viene dado por la integral
Z 50 p
L= 1 + cos2 (x) dx .
0
b)
Cando alcanza el objeto la temperatura de 46 C ?.
dI 1
L + RI + Q = E(t) .
dt C
Supongamos que se tiene una resistencia de 2, un condensador de 1
F y una autoinduccin de 0.5 H. Si la fuerza electromotriz del circuito
es de la forma E(t) = 5 sen(t). Sabiendo que se cumple la relacin
dQ
=I ,
dt
38
que el condensador en el tiempo t = 0 est descargado, y que ini-
cialmente no pasa corriente por el circuito, obtener la evolucin de la
intensidad en una rama del circuito en funcin del tiempo desde t=0
a t=1 segundos, y la carga del condensador a los 0.5 segundos.
d2
+ sen () = 0
dt2
y una aproximacin de esta ecuacin es la ecuacin del pndulo simple
d2
+ =0 .
dt2
Compara la evolucin temporal del ngulo , desde t = 0 hasta t = 10,
(0) = 6 , d
con las condiciones iniciales: a)
dt
(0) = 0. b) (0) = 3 ,
d
dt
(0) = 0.
39