1) El documento presenta apuntes sobre el uso del software MATLAB para ingeniería. Se dividen en secciones sobre comandos básicos, vectores, matrices, gráficas 2D y 3D, cálculo simbólico y programación.
2) Explica comandos básicos como variables, operadores matemáticos, formatos numéricos y ayuda. También introduce variables lógicas.
3) Detalla operaciones con vectores como suma, multiplicación y funciones matemáticas aplicadas a vectores. Explica también polinomios y matrices
1. APUNTES DE MATLAB
Ingenier´ T´cnica Industrial.
ıa e
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 b´sicos. Variables
a
• Vectores. polinomios y matrices.
• Gr´ficas 2D.
a
• Gr´ficas 3D.
a
• C´lculo simb´lico.
a o
• Programaci´n con Matlab.
o
1 Comandos b´sicos. Variables.
a
Hagamos algunas consideraciones generales:
• Para salir del programa: File Exit Matlab ( o escribiendo >> exit)
• Las ´rdenes se escriben a continuaci´n del prompt >>
o o
Ejemplo:
>> 2 3
Tambi´n se puede asignar el valor a una variable:
e
>> x=5+3 2
Se pueden utilizar las funciones matem´ticas habituales.
a
>> sqrt(2)
1
2. C´lculos/comandos encadenados:
a
>> x=sin(3),y=cos(10),z=tan(8)
Y si no caben en un rengl´n
o
>> x=sin(10),...
z=3*6
• MATLAB distingue entre may´sculas y min´sculas.
u u
Si se a˜ade un punto y coma (;) al final de la instrucci´n, la m´quina
n o a
no muestra la respuesta... pero no por ello deja de realizarse el c´lculo.
a
Los comentarios deben ir precedidos por % o, lo que es lo mismo,
MATLAB ignora todo lo que vaya precedido por el s´ ımbolo %.
• Operadores: +, −, ∗, /, .
Las operaciones se eval´an por orden de prioridad: primero las poten-
u
cias, despu´s las multiplicaciones y divisiones y, finalmente, las sumas
e
y restas. Las operaciones de igual prioridad se eval´an de izquierda a
u
derecha.
• La ayuda de MATLAB es bastante util; para acceder a la misma basta
´
teclear help. Es recomendable usarlo para obtener una informaci´no
m´s precisa sobre la sintaxis y diversas posibilidades de uso de los
a
comandos.
>> helpwin
>> help det
>> lookfor rota
• Formatos n´mericos: El usuario puede controlar el n´mero de decimales
u u
con que aparece en pantalla el valor de las variables, sin olvidar que ello
no est´ relacionado con la precisi´n con la que se hacen los c´lculos,
a o a
sino con el aspecto con que ´stos se muestran.
e
Para cambiar la presentaci´n del valor de la variable se usa el comando
o
format o bi´n en File Preferences Numeric Format
e
>> 1/3
>> format long
2
3. >> 1/3
Los m´s usuales son:
a
>> format long
>> format short e
>> format long e
>> format short
>> format rat
>> format +
La instrucci´n format vuelve al formato est´ndar que es el de 4 cifras
o a
decimales. La representaci´n interna del n´mero siempre es la misma.
o u
• 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 m´s informaci´n:
a o
>> whos
Para deshacerse de una variable
>> clear y
Los c´lculos que no se asignan a una variable en concreto se asignan a
a
la variable de respuesta por defecto que es ans (del ingl´s, answer).
e
Sin embargo, si el c´lculo se asigna a una variable, el resultado queda
a
guardado en ella.
MATLAB tiene definida variables con valor predeterminado.
Por ejemplo:
pi El valor del n´mero π.
u
3
4. Inf Infinito, aparece si hacemos 1/0.
NaN Mensaje de error (Not a Number), por ejemplo 0/0.
´
eps Epsilon de la m´quina (obs´rvese que MATLAB trabaja en doble
a e
precisi´n).
o
>>eps
ans = 2.2204e-016
pero...
´stos se pierden si se les asignan otro valor distinto.
e
>> eps=7
eps = 7
La unidad imaginaria se representa en MATLAB como i o j.
2 Vectores, polinomios y matrices
2.1 Vectores
Para definir un vector fila, basta introducir sus coordenadas entre corchetes:
>> v=[1 2 3]
>> w=[4 5 6];
El operador es el de trasposici´n para matrices reales y conjugaci´n y
o o
trasposici´n para matrices complejas. Nos permite definir vectores columnas:
o
>> w
(La comilla es la que, en un teclado est´ndar, se encuentra en la tecla del
a
signo de interrogaci´n.)
o
Si queremos declarar un vector de coordenadas equiespaciadas entre dos
4
5. 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 m´s que escribir el nombre
a
del vector y, entre par´ntesis, su ´
e ındice:
>> vect2(3)
y se pueden extraer subvectores, por ejemplo:
>> vect2(2:5)
o,
>> vect1(:)
Las funciones matem´ticas elementales est´n definidas de forma que se pueden
a a
aplicar sobre vectores. El resultado es el vector formado por la aplicaci´n de
o
la funci´n a cada elemento del vector. As´
o ı:
>> log(v)
Vector definido 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
6. ??? Error using ==¿ * Inner matrix dimensions must agree.
Tambi´n pueden efectuarse multiplicaciones, divisiones y potencias de
e
vectores, entendi´ndolas como elemento a elemento (como, de hecho, se re-
e
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, tambi´n pueden calcularse longitud, producto escalar, producto
e
vectorial, etc:
>> length(v)
>> dot(u,v)
>> cross(u,v)
2.2 Variables l´gicas
o
Tambi´n existen variables l´gicas que toman los valores 0 (falso) o 1 (ver-
e o
dadero). Por ejemplo:
Vector l´gico cuyas coordenadas valen 1 si la coordenada correspondiente
o
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 verifican la desigualdad
>> vector = v(abs(v) >= 2)
Asignaci´n de un valor l´gico (el doble signo igual es el igual l´gico)
o o o
>> v2=[3 2 1]
>> logica=v==v2
6
7. Distinto (∼ es el operador de negaci´n)
o
>> logic2 = v ∼= v2
2.3 Polinomios
Se puede trabajar con polinomios: basta tener en cuenta que un polinomio
no es m´s que un vector. El orden de los coeficientes es de mayor a menor
a
grado, por ejemplo:
Polinomio x4 + 2x2 + 3
>> p=[1 0 2 0 3]
Polinomio 2x2 + x
>> q=[2 1 0]
MATLAB tiene funciones espec´
ıficas para polinomios como:
Evaluaci´n del polinomio x4 + 2x2 + 3 en x = −1
o
>>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)
Ra´ del polinomio pro
ıces
>> roots(pro)
Polinomio m´nico (aquel cuyo coeficiente principal es 1) que tiene por
o
ra´ a los n´meros i, −i, 0.5 y π
ıces u
7
8. >> poly([i -i 1/2 pi])
2.4 Matrices
Las matrices se escriben como los vectores, pero separando las filas 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
>> S 3
>> rank(M),inv(M)
>> det(N)
Para visualizar gr´ficamente la matriz
a
>> spy(M)
Podemos construir matrices con otros vectores ya definidos
>> mat=[v;w;0 0 1]
A los elementos de una matriz se accede sin m´s que escribir el nombre
a
de la matriz y, entre par´ntesis, los respectivos ´
e ındices:
Elemento en la primera fila y tercera columna de la matriz mat
>> mat(1,3)
Tambi´n se puede acceder a un fila o columna completas, por ejemplo a
e
la segunda columna de mat
8
9. >> mat(:,2)
O a su segunda fila
>> mat(2,:)
Y tambi´n podemos acceder a la matriz como si fuera una columna. Por
e
ejemplo: los elementos segundo a s´ptimo de la matriz como columna son
e
>> M(2:7)
O podemos acceder a cualquiera de sus submatrices. Por ejemplo el comando
que obtiene la submatriz formada por los elementos que est´n en ”todas”las
a
filas 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 definidas 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˜o de una matriz
n
>> 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
10. 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)
Indicaci´n: Ver ficheros .m en 6.1
o
Ejercicios
Vectores
1. (a) Definir un vector fila 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) Defina 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´mero de elementos del vector definido en el apartado
u
anterior.
3. Sean los vectores filas u y v definidos 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´al es la diferencia entre ambos produc-
u
tos?
n 2
(b) La norma euclideana de un vector v es ||v|| = i=1 |vi | , donde
v = (v1 , v2 , ..., vn ). Calcule la norma del vector u definido en (a) de
10
11. dos formas distintas. ¿Existe una funci´n predefinida en matlab
o
para determinar la norma de un vector? ¿C´mo podr´ determi-
o ıa
narlo?
(c) El ´ngulo θ formado entre dos vectores x e y se define a partir de:
a
x.y
cos θ = ,
||x||||y||
donde x.y es el producto escalar entre ambos vectores. Aplique
esta f´rmula para determinar el ´ngulo entre u y w.
o a
Exprese el ´ngulo en grados.
a
Matrices
1. Defina una matriz A (3x5) tal que la primera fila est´ formada por los
e
enteros consecutivos entre 1 y 5, la segunda fila 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) Defina una matriz cuyos elementos sean unos, y de las mismas
dimensiones que A.
(c) Compruebe si la siguiente matriz B es sim´trica (una matriz es
e
sim´trica cuando es igual a su transpuesta).
e
2 −1 0
B = −1 2 −1
0 −1 2
(d) Halle el producto matricial entre B y A.
2. Sea la matriz
1 2 3 4
5 6 7 8
J =
9 10 11 12
20 0 5 4
11
12. (a) Defina un vector formado por la tercera columna de J.
(b) Defina un vector igual a la cuarta fila de J.
(c) Defina una matriz (4x2) formada por la segunda y tercera colum-
nas de J.
(d) Defina una matriz (2x2) formada por los elementos de la segunda
y tercera filas y la segunda y tercera columnas de J.
3 Graficas 2D.
MATLAB tiene un gran potencial de herramientas gr´ficas.
a
3.1 Gr´ficas de funciones y = f (x)
a
Para representar gr´ficamente una funci´n, por ejemplo y = sen (x), se siguen
a o
los siguientes pasos:
En primer lugar generamos los valores:
>> x=linspace(0,2*pi,10);
Sustituimos en la funci´n:
o
>> y=sin(x);
Y dibujamos la gr´fica con el comando plot:
a
>> plot(x,y)
Por defecto une los puntos (x(i),y(i)) mediante una poligonal. Con pocos
puntos la gr´fica tiene un aspecto demasiado lineal a trozos. Para evitarlo,
a
basta tomar m´s puntos.
a
>> x=linspace(0,2*pi,100);
12
13. >> y=sin(x);
>> plot(x,y)
Tambi´n pueden dibujarse funciones con el comando fplot. Este comando
e
genera los valores de la variable independiente autom´ticamente.
a
Dibuja la funci´n seno en el intervalo [0,2*pi]
o
>> fplot( sin(x) ,[0 2*pi])
3.1.1 Superposici´n de gr´ficas
o a
El comando hold on mantiene en la ventana gr´fica los dibujos anteriores
a
Dibuja sobre la gr´fica anterior la funci´n cos(x).
a o
>> hold on
>> fplot( cos(x) ,[0 2*pi])
El comando hold off desactiva la superposici´n de gr´ficos.
o a
>> hold off
Dibuja la funci´n x2 sen (1/x):
o
>> fplot( x 2*sin(1/x) ,[-0.05 0.05])
Podemos tambi´n dibujar dos gr´ficas en la misma ventana creando dos
e a
funciones y dibujandolas.
>> x=linspace(0,2*pi,100);
>> y=sin(x);
>> z=cos(x);
>> plot(x,y,x,z)
13
14. 3.1.2 Estilos de l´
ıneas 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 off
Para modificar 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 situaci´n inicial:
o
>> axis auto
Para ”cuadrar” los ejes:
>> axis square
14
15. 3.1.3 Etiquetado de gr´ficas.
a
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 )% t´
ıtulo
>> xlabel ( Eje de Abscisas ) % eje horizontal
>> ylabel ( Eje de Ordenadas ) % eje vertical
y por ultimo a˜adimos un texto explicativo de cada uno de los gr´ficos
´ n a
con el comando legend
>> legend ( exp(-x 2) , 2*exp(-x 2) )
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 gr´ficos en una misma ventana.
a
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
16. >> subplot(2,2,2), plot(x,y2), title( y=x 2 )
>> subplot(2,2,3), plot(x,y3), title( y=x 3 )
>> subplot(2,2,4), plot(x,y4), title( y=x 4 )
3.2 Curvas en param´tricas
e
Dibujar la curva dada por:
x(t) = (1/t) cos(t)
; t ∈ [1, 100]
y(t) = (1/t) sen (t)
>>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
17. 3.3 Curvas en impl´
ıcitas
El comando ezplot dibuja curvas como plot en cartesianas y param´tricas
e
de una manera m´s sencilla ya que genera autom´ticamente los valores de la
a a
variable independiente. Tambi´n se utiliza para dibujar curvas en impl´
e ıcitas.
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 impl´ıcita se utiliza el comando ezplot con
el siguiente formato ezplot( g(x,y) ) donde la curva es g(x, y) = 0, y se
pueden especificar los intervalos de variaci´n de x e y. Por ejemplo:
o
>> ezplot( x 2+y 2-1 , [-1,1,-1,1])
4 Graficas 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
18. >> title( H´lice )
e
• Con el comando ezplot3
>> ezplot3( cos(t) , sin(t) , t ,[0,10*pi])
• Tambi´n existe el comando quiver3 que funciona de manera an´loga
e a
al correspondiente en 2D.
4.2 Gr´ficas de funciones z = f (x, y)
a
Podemos tambi´n dibujar superficies. Por ejemplo, para dibujar la superficie
e
−x2 −y 2
z=e seguimos los siguientes pasos:
• Primero generamos un mallado de la regi´n de XY sobre la que vamos
o
a dibujar
>> [x,y]=meshgrid(-2:0.1:2)
Tambi´n podemos generar mallados no cuadrados, por ejemplo:
e
>> [x,y]=meshgrid(-2:0.1:2,-1:0.1:3);
• Sustituimos en la funci´n
o
>> z=exp(-x. 2-y. 2);
• Dibujamos la funci´n con cualquiera de los tres comandos siguientes
o
plot3, mesh, surfl.
>> plot3(x,y,z)
>> mesh(x,y,z)
>> surf(x,y,z)
Los comandos siguientes sirven para modificar el dibujo obtenido.
Para cambiar el color:
>> shading interp;
18
19. >> colormap(pink);
Para girar la figura mediante el rat´n:
o
>> rotate3d;
4.3 Imprimir, exportar, guardar gr´ficos
a
• Podemos imprimir desde la ventana gr´fica: File Print o File Print
a
Preview
• Podemos exportar gr´fico a un procesador de textos con Edit Copy
a
Figure y se pega en el procesador de textos. Tambi´n podemos exportar
e
con File Export
• Podemos guardar gr´ficos como un fichero gr´fico con File Save As
a a
• Otra posibilidad es crear un fichero-M (Script) con los comandos que
generan el gr´fico.
a
Ejercicios
Gr´ficos
a
1. Sea la funci´n y = sen (3πx), definida en 0 ≤ x ≤ 1.
o
(a) Eval´e la funci´n en N puntos igualmente espaciados en el rango
u o
[0, 1], y represente y = y(x) uniendo los puntos mediante segmen-
tos de recta: tomando N = 10 y N = 100
(b) Dibuje las gr´ficas anteriores en dos figuras diferentes, para verlas
a
simult´neamente y compararlas (utilice el comando figure).
a
(c) Ponga t´
ıtulo y nombre a los ejes de la segunda gr´fica.
a
(d) Superponga luego una malla.
19
20. (e) Limpie la ventana de gr´ficos, o abra una nueva figura.
a
(f) Represente y=y(x) con una l´
ınea de color azul.
(g) Represente y=y(x) con c´
ırculos de color rojo.
2. Dibuje la gr´fica de las funciones: y = cos x e y = x, para 0 ≤ x ≤ 2,
a
en la misma ventana, con 100 puntos.
(a) Aplique el comando zoom para determinar en forma aproximada
el punto de intersecci´n.
o
(b) Limpie la ventana de gr´ficos.
a
(c) Represente y = sen (3πx) con 0 ≤ x ≤ 1.
(d) Var´ el rango de los ejes x e y mediante el comando axis, tal que
ıe
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 figura con cuatro gr´ficas,a
tal que en la primera gr´fica (contando de arriba hacia abajo, y de
a
izquierda a derecha) se represente la funci´n y = sen (3πx), en la
o
segunda y = cos(3πx), en la tercera y = sen (6πx) y en la cuarta
y = cos(6πx),con 0 ≤ x ≤ 1. Nombre a los ejes en cada gr´fica.
a
4. Represente la gr´fica de las siguientes funciones, para 0 ≤ x ≤ 10, en
a
una misma figura pero en diferentes subventanas (mediante el comando
subplot). Experimente con los comandos axis, grid y hold.
sen x 1 x2 +1 (10−x)1/3
y= x
, u= (x−1)2
+ x, v = x2 −4
, w= 4−x2 )1/2
.
5. Sean las funciones g(x) = sen (2πx) y h(x) = cos(2πx), con 0 ≤ x ≤ 1.
Represente ambas funciones en la misma ventana, cada una con 100
puntos como m´ ınimo, y tal que la curva (x, g(x)) est´ representada por
e
un trazo continuo de color rojo, y la curva (x, h(x)) por una l´ınea pun-
teada de color verde. Agregue un texto (mediante el comando legend)
dentro de la ventana de gr´ficos, indicando cual trazo representa cada
a
curva Ponga t´ıtulo a la gr´fica y nombre a los ejes.
a
20
21. 6. Representar gr´ficamente las siguientes curvas en param´tricas
a e
(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 par´metro vale 0 ≤ t ≤
a
20.
7. Representar las siguientes superficies utilizando los distintos comandos.
2 +y 2
(a) f (x, y) = ex
sen ( x2 + y 2 )
(b) f (x, y) = para −8 ≤ x ≤ 8, −8 ≤ y ≤ 8.
x2 + y 2
Indicaci´n Para que no haya problemas de divisi´n por cero con-
o o
siderar la funci´n R = x2 + y 2 + eps y construir la funci´n como
o o
z = sin(R)/R.
5 C´lculo Simb´lico.
a o
5.1 Expresiones Simb´licas.
o
Son cadenas de caracteres representando n´meros, funciones, operadores y
u
variables. Las variables no requieren valores predefinidos.
• Definici´n de variable simb´lica El comando syms define simb´licamente
o o o
variables y tiene el siguiente formato syms nombre variable
• Ejemplo
>>syms x
• Definici´n de funci´n simb´lica
o o o
Despu´s de tener definida la variable independiente como variable simb´lica
e o
es posible definir funciones simb´licas de la siguiente forma
o
nombre funci´n = expresi´n matem´tica
o o a
21
22. • Ejemplo
>> f = (x 2-7*x+8)/(x+2)
5.2 C´lculo de derivada n-´sima de una funci´n.
a e o
El comando diff permite hallar la derivada n-´sima de una funci´n simb´lica
e o o
con el siguiente formato diff(nombre funcion, n). Si queremos hallar la deriva-
da de la funci´n basta escribir el comando como diff(nombre funcion)
o
Ejemplo
Calculemos la derivada tercera de la funci´n f definida anteriormente y
o
la pondremos en forma bonita con el comando pretty.
>>d3=diff(f,3)
>>pretty(d3)
5.3 C´lculo de integrales.
a
5.3.1 C´lculo de integrales indefinidas
a
>>int (nombre funci´n)
o
5.3.2 C´lculo de integrales definidas
a
>> int(nombref uncion, variable, liminf erior, limsuperior)
• Ejemplo
sin(x) 1
Calculemos 0 1+t2
dt
Definimos las variables simb´licas x y t:
o
>> syms t x
22
23. Definimos la funci´n simb´lica:
o o
>>f=1/(1+t 2)
Y calculamos la integral:
>> int(f, t, 0, sin(x))
• Ejercicio
1 √
Calcular 0
1 − x2 dx
• Resultado de las integrales definidas en forma num´rica
e
>> numeric(ans)
Con m´s decimales:
a
>>vpa(ans, no decimales)
5.4 Ecuaciones Algebraicas.
Nos planteamos la resoluci´n de ecuaciones o sitemas de ecuaciones, tanto
o
con ra´ reales como complejas, para lo que se utiliza el comando ”solve”.
ıces
• Resoluci´n de una ecuaci´n
o o
>>solve( ecuaci´n ), donde por ecuaci´n se entiende la expresi´n al-
o o o
gebraica de la misma.
• Ejemplo
Si queremos resolver una ecuaci´n de segundo grado ax2 +
o
+ bx + c = 0:
>>solve( a ∗ x 2+b ∗ x + c = 0 )
• Resoluci´n de una ecuaci´n respecto a otra variable
o o
>>solve( ecuaci´n , nombre variable )
o
23
24. • Ejemplo
Si queremos resolver la ecuaci´n anterior ax2 + bx + c = 0 respecto de
o
la variable b:
>> solve( a ∗ x 2+b*x+c=0 , b )
• Resoluci´n de un sistema de ecuaciones
o
>>[var 1,var 2]= solve( ecuaci´n 1 , ecuaci´n 2 )
o o
• Ejemplo
x−y =0
Resolver el sistema:
x+y =1
• Observaci´n:
o
Si no se puede encontrar una soluci´n en forma algebraica (ecuaci´n
o o
no algebraica), el comando solve devuelve una aproximaci´n num´rica
o e
de la soluci´n. Ocurre por ejemplo al intentar resolver sin(x) = x − 1:
o
>>solve ( sin(x) = x-1 )
Entonces, en estos casos es mejor utilizar el comando f zero que
utiliza el m´todo de bisecci´n para calcular las ra´
e o ıces, bien dentro de
un intervalo, o bien a partir de un valor real.
• Comando fzero:
>> fzero( ecuaci´n , [a,b]): busca una ra´ en el intervalo [a, b], y
o ız
para ello es necesario que la funci´n tome valores de distinto signo en
o
los extremos del intervalo, ya que su b´squeda se basa en el teorema
u
de Bolzano.
Ejemplo
>> fzero( sin(x)- x+1 , [0,pi])
>>fzero( ecuaci´n , a)): busca una r´´ de la ecuaci´n a partir del
o aız o
valor real a.
Ejemplo
24
25. >> fzero( sin(x)- x+1 , 0)
Observaci´n: En este caso necesitamos tener la ecuaci´n en la forma
o o
f (x) = 0, y al colocarla en el comando fzero s´lo ponemos f (x).
o
5.5 Ecuaciones Diferenciales Ordinarias.
Para resolver ecuaciones de este tipo, usaremos el comando dsolve:
>>var resultado =dsolve( ecuaci´n diferencial , var )
o
• Ejemplo
dy
Resolver la ecuaci´n diferencial
o dx
= 1 + y2.
>>y= dsolve( Dy= 1+y 2 , x )
Resuelve la ecuaci´n y el resultado lo mete en la variable y.
o
• Resoluci´n de un problema con condiciones iniciales
o
>> variable resultado =dsolve( ecuaci´n diferencial , condici´n o
o o
condiciones iniciales separadas por comas , var )
• Ejemplo
dy
dx
= 1 + y2
Resolver
y(0) = 1
>>y= dsolve( Dy= 1+y 2 , y(0)=1 , x )
• Ejercicio
d2 x
dt2
− 2 dx − 3x = 0
dt
Resolver x(0) = 0
x (0) = 1
25
26. 5.6 Herramientas interactivas
• Sumas de Riemann
Nos permiten aproximar el valor de la integral definida de una funci´n f o
en el intervalo [0,1]. Si queremos hacerla para otro intervalo, habr´ que
ıa
b 1
hacer antes un cambio de variable que convierta a f (x)dx en 0 g(t)dt
y aplicar luego las sumas de Riemann.
>> rsums(f )
• Ejemplo
2
Evaluemos la integral de f (x) = 10xe−5x y la comparamos luego con
la aproximaci´n de las sumas de Riemann
o
>>f= ’10*x*exp(-5*x 2)’
Evaluamos el valor de la integral definida de f en [0,1] con 6 decimales:
>>vpa(int(f,0,1),6)
Activamos las sumas de Riemann:
>> rsums(f)
6 Programaci´n en Matlab.
o
• Los tipos de programas que podemos realizar en Matlab son dos: tipo
Scripts (ficheros de comandos) y tipo Function (en el que se definen fun-
ciones matem´ticas de una o varias variables). Ambos son ficheros de
a
texto con extensi´n .m, que contienen instrucciones propias de Matlab.
o
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 instrucci´n:
o
>> edit nombre del archivo;
Para conocer los archivos existentes de este tipo podemos teclear what.
26
27. 6.1 Ficheros de comando o tipo Scripts y ficheros tipo
Funtion
• Ficheros de comandos o tipo Scripts.
Son los m´s simples, no tienen argumentos de entrada ni de salida. Son
a
utiles para automatizar bloques de instrucciones y c´lculos que deben
´ a
efectuarse repetidamente. Operan sobre datos existentes en el espacio
de trabajo. Adem´s, cualquier variable creada por uno de estos archivos
a
permanece en el espacio de trabajo una vez que finaliza su lectura.
• Observaci´n.
o
Matlab trabaja con memoria din´mica, por lo que no es necesario
a
declarar las variables que se van a usar. Por esta misma raz´n, habr´
o a
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 sesi´n), porque ´sto podr´ provocar conflictos.
o e ıa
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 est´ usando mucha
a
memoria, puede ser conveniente liberar parte de ella (clear) variables
que no se vayan a usar m´s.a
• 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 definirse variables
propias locales que no afectan al espacio de trabajo general.
Los pasos principales para definir una funci´n en Matlab son:
o
1) Decidir un nombre para la funci´n, que no sea igual al de
o
alguna funci´n predefinida en Matlab.
o
2) La primera l´
ınea del archivo debe tener el formato:
27
28. Function [lista de salidas]= nombre de la funci´n [lista de
o
entradas]
3) Documentar la funci´n: describir brevemente el prop´sito
o o
de la funci´n y c´mo puede ser usada. Estas l´
o o ıneas deben estar prece-
didas del s´
ımbolo %, pues son l´
ıneas de comentarios y debe indicarse
al programa que las ignore.
4) Incluir el c´digo que defina la funci´n.
o o
• Ejemplo
Vamos a realizar un peque˜o programa para calcular el ´rea de un
n a
tri´ngulo, conocidas las longitudes de sus lados.
a
El nombre de la funci´n que defina puede ser area, y el archivo: area.m.
o
Siguiendo los paso anteriores ser´
ıa:
function [A]= area(a,b,c)
%Calcula el ´rea de un tri´ngulo de lados de longitud a, b y c
a a
%Entradas: a,b,c: longitudes de los lados
% Salidas: A: ´rea del tri´ngulo
a a
% Uso: area=area(a,b,c)
s = (a + b + c)/2;
A = sqrt(s ∗ (s − a) ∗ (s − b) ∗ (s − c));
La funci´n ´rea puede invocarse desde la ventana de comandos de Mat-
o a
lab, como cualquier otra funci´n predefinida.
o
6.2 Control de flujo. 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 flujo, se pueden alterar utilizando
algunas instrucciones:
28
29. a) Condicionales: Las secuencias de ´rdenes se ejecutan bas´ndose en
o a
alguna condici´n.
o
b) Bucles (instrucciones iterativas): una o un grupo de ´rdenes que se
o
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
30. • Ejemplo:
>>a=n;
if a>5
b= a+5
else
b= a-1
end
• Estructura if-else-if
Se usa cuando hay m´s de dos condiciones que puedan cunplirse. Su
a
forma es:
if condicional primero
comando primero
elseif condicional segundo
comando segundo
elseif condicional tercero
comando tercero
......
else
comando final
end
• Ejemplo:
>>b= 1:5;n=5;
if n==1
x=b. 1
elseif n==2
x=b. 2
30
31. elseif n==3
x=b. 3
else
x=b
end
• Orden switch
El mismo resultado del ejemplo anterior se podr´ haber obtenido con
ıa
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´mero predeterminado de veces.
u
Su forma general es:
for i=1:n
sentencias
end
31
32. • 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 = (aij )1≤i,j≤n , donde
1
aij = i+j−1
• Bucles while.
Sirve para ejecutar una sentencia o grupo de sentencias mientras se
cumpla una condici´n. Su forma general es:
o
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´n input
o
La funci´n input permite imprimir un mensaje en la l´
o ınea de comandos de
MATLAB y recuperar como valor de retorno un valor num´rico o el resultado
e
de una expresi´n tecleada por el usuario. Despu´s de imprimir el mensaje,
o e
el programa espera que el usuario teclee el valor num´rico o la expresi´n.
e o
Cualquier expresi´n v´lida de MATLAB es aceptada por este comando. El
o a
usuario puede teclear simplemente un vector o una matriz. En cualquier caso,
la expresi´n introducida es evaluada con los valores actuales de las variables
o
32
33. de MATLAB y el resultado se devuelve como valor de retorno. Veamos dos
ejemplos de uso de esta funci´n:
o
Ejemplo 1:
>> n= input(’Teclee el n´mero de elmentos’);
u
Ejemplo 2:
>> direccion= input(’¿D´nde vives?’, ’s’);
o
Observemos el par´metro ’s’. En este caso el texto tecleado como re-
a
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 f´rmula, se almacena
ı o
como texto sin evaluarse.
6.5.2 Funci´n disp
o
La funci´n disp permite imprimir en pantalla un mensaje de texto o el valor
o
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)
6.5.3 Observaci´n
o
Cuando se escribe un punto y coma al final de una instrucci´n, el ordenador
o
realiza las operaciones correspondientes y almacena el resultado bajo el nom-
bre que le hayamos asignado (para su uso en c´lculos posteriores) pero no
a
muestra el resultado del proceso en la pantalla.
33
34. Ejercicios
1. Calcular la suma de los n primeros t´rminos de la sucesi´n: 1, 2x, 3x2 ,
e o
3
4x , ...,
2. Decidir si un no natural es primo.
3. Escribir un no natural en una base dada (menor de 10).
4. Represente la funci´n sin(nπx)en el intervalo −1 ≤ x ≤ 1 , para
o
n=1,2,3,...,8.
5. La Sucesi´n de Fibonnaci empieza con los n´meros 0 y 1, y los t´rminos
o u e
restantes son la suma de los dos t´rminos anteriores:
e
f1 = 0, f2 = 1, fn = fn−1 + fn−2 , n = 3, 4, ...
a) Definir una funci´n que determine el en´simo t´rmino de la serie
o e e
(input: n, output: )
b) Comprobar la hip´tesis de que el cociente entre dos t´rminos suce-
o √
e
5+1
sivos de la serie tiende al valor 2 (sugerencia: calcule el cociente
para los primeros 20 t´rminos).
e
6. Almacenar en un vector las ra´ cuadradas de los primeros 25 n´meros
ıces u
pares.
7. Almacenar en un vector los productos entre los 10 primeros n´meros
u
impares con los m´ltiplos de 3 positivos menores que 100.
u
8. Escriba un script que determine si un a˜o dado es bisiesto (nota: debe
n
ser m´ltiplo de 4). El a˜o debe ser leido desde la pantalla, y el resultado
u n
mostrarse en pantalla.
9. Escriba un script tal que determine si π e > eπ , y entonces asigne a
√
una variable b el valor: b = a2 − c2 , y b = 0 en caso contrario.
34
35. 10. Escriba un script tal que, dada una ecuaci´n cuadr´tica de la forma:
o a
2
ax + bx + c = 0 , calcule las dos ra´ reales si el discriminante es no
ıces
negativo, y en caso contrario despliegue un mensaje indicando que no
hay ra´ reales.
ıces
11. Escriba un script que lea los coeficientes de las rectas:
ax + by = c
dx + ey = f
y determine si son paralelas, y en caso de no serlo, determine si son
perpendiculares.
12. Escriba un script que lea las coordenadas de 3 puntos en el plano, y
determine si est´n alineados. 14.
a
13. Defina la funci´n area (ver el te´rico) y apl´
o o ıquela para calcular el ´rea
a
de un tri´ngulo de lados de longitudes 10, 15, 20.
a
14. a) Dado un vector v, escriba una funci´n que determine sus coordenadas
o
cartesianas (x,y) a partir de sus coordenadas polares (r,θ).
b) Aplique la funci´n anterior para determinar las coordenadas carte-
o
sianas para r=5 y θ = π .
6
sin(πx)
15. a) Defina la funci´n f (x) =
o x
, donde x puede ser un escalar o un
vector
ımite de la funci´n , cuando x → 0. Sugerencia: Observe
b) Estime el l´ o
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 num´rico (de short a long p.e.).
e
7 Ap´ndice: Algunas funciones utiles para
e ´
los ejercicios.
1. Funci´n rem (n,i))
o
35
36. Nos da el resto de dividir n entre i.
2. Funci´n fix (n/a))
o
Parte entera del cociente n/a.
36