Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Variables en Matlab PDF
Variables en Matlab PDF
ETSI Industriales
Una introduccion a MATLAB
Curso 04/05
>> A=[1 2 3 4 5 6]
A =
1 2 3 4 5 6
>> a=[1 2 3; 4 5 6]
a =
1 2 3
4 5 6
>> [1 2 3; 2 4 5]
ans =
1 2 3
2 4 5
Una de las caractersticas de MATLAB es la facilidad con la que opera con matrices, as el
operador define la matriz traspuesta de la dada,
>> b=a
b =
1 4
2 5
3 6
>> a+2
ans =
3 4 5
6 7 8
pero la orden
>> a+b
??? Error using ==> +
Matrix dimensions must agree.
c =
2 3
5 6
La multiplicacion de matrices se lleva a cabo con el operador *, siempre que las dimensiones
sean compatibles. As,
ans =
11
29
>> b*a
??? Error using ==> *
Inner matrix dimensions must agree.
Tambien se pueden multiplicar dos matrices elemento a elemento usando el operador .*.
En el siguiente ejemplo, el comando eye(n) define la matriz identidad de orden n:
>> c=a*a
c =
17 22 27
22 29 36
27 36 45
>> d=eye(3)
d =
1 0 0
0 1 0
0 0 1
>> c*d
ans =
17 22 27
22 29 36
27 36 45
>> c.*d
ans =
17 0 0
0 29 0
0 0 45
Del mismo modo actuan los operadores ./ y .^, que dividen o elevan cada uno de los elementos
de la matriz. Veanse los ejemplos,
>> c^2
ans =
>> c.^2
ans =
1.1. Algebra elemental. MATLAB dispone de diversos comandos para realizar distin-
tos calculos con matrices. El comando inv calcula la inversa de una matriz, siempre que esta
exista, mientras que det calcula su determinate:
ans =
-1 1 0
3 -1 1
-2 1 0
>> det(a)
ans =
-1
Por su parte, el comando eig proporciona los autovalores de una matriz, y poly da como
resultado los coeficientes del polinomio caracterstico. Por ejemplo,
ans =
-0.0000
2.0000 + 1.0000i
2.0000 - 1.0000i
>> poly(a)
ans =
1.0000 -4.0000 5.0000 0.0000
1.2. Graficas sencillas. El comando plot permite dibujar una poligonal que une un
conjunto de puntos definidos mediante un par de vectores. Observese el siguiente ejemplo:
>> x=-1:0.3:1
x =
>> y=x.^2
y =
en el hemos definido un vector x tomando los puntos que estan entre 1 y 1 con distancia
0,3. y el vector y, calculando los cuadrados de los elementos de x. El comando plot(x,y)
dibuja una poligonal uniendo los puntos del plano con primera coordenada los elementos de
x y segunda coordenada los elementos de y. Entre punto y punto, MATLAB introduce una
recta. La sentencia siguiente
>> plot(x,y,*-)
f =
Inline function:
f(x) = exp(x)-x^2 - 3*x
Figura 1.1. Ejemplo del comando plot
Para calcular el valor de esta funcion en un punto a basta escribir f(a), mientras que es
posible esbozar su grafica en un intervalo [a, b] con la sentencia fplot(f,[a b]).
Por otro lado, el comando fzero(f,a) resuelve la ecuacion f (x) = 0, en el punto mas
cercano al punto a. Si en lugar de dar el punto a damos un intervalo donde se encuentra una
raz, calcula esta:
>> fzero(f,[0,1])
ans =
0.4568
3. El paquete simbolico. Una de los paquetes mas utiles para el calculo con MAT-
LAB lo constituye el paquete simbolico o Symbolic Math Toolbox, que permite realizar calculo
simbolico avanzado, es decir, se puede prescindir de asignar un numero a una variable y
tratarla como una constante generica.
Por ejemplo, si tratamos de calcular el seno de una variable no numerica:
>> y=sin(x)
??? Undefined function or variable x.
obtenemos un error, pues MATLAB no conoce el valor de x. Para declarar una variable como
simbolica usamos la expresion
>> syms x
Ahora podemos evaluar expresiones que contengan a esta variable a traves del comando
simplify.
>> y=sin(x); z=cos(x);
>> simplify(y^2+z^2)
ans =
M =
[ a, b]
[ c, d]
ans =
a*d-b*c
ans =
x^2-x*d-a*x+a*d-b*c
Con el paquete simbolico podemos calcular lmites, derivadas, integrales impropias, etc. A
continuacion exponemos diversos ejemplos de estos calculos.
Para calcular el lmite
sen(x)
lm ,
x0 x
>> limit(sin(x)/x,0)
ans =
1
o un lmite en infinito:
n3 + 3n2 2n
lm ,
n 3n3 1
>> syms n
>> limit((n^3+3*n^2-2*n)/(3*n^3-1),inf)
ans =
1/3
>> f=exp(z^3)+sin(z)^2
f =
exp(z^3)+sin(z)^2
>> diff(f)
ans =
3*z^2*exp(z^3)+2*sin(z)*cos(z)
>> f=a*exp(a+x)/sin(a*x)
f =
a*exp(a+x)/sin(a*x)
>> diff(f,a)
ans =
exp(a+x)/sin(a*x)+a*exp(a+x)/sin(a*x)-a*exp(a+x)/sin(a*x)^2*cos(a*x)*x
>> pretty(ans)
ans =
exp(a*x)
>> int(f,x,0,1)
ans =
exp(a)-1
Es importante observar que el calculo de una integral definida mediante la ultima sentencia
es un calculo simbolico, de manera que integrales como la siguiente
>> int(exp(x^2),x,0,1)
ans =
-1/2*i*erf(i)*pi^(1/2)
no tienen mucho sentido, pues el resultado viene expresado mediante una funcion extrana, ya
2
que no se conoce una primitiva de la funcion ex . Sin embargo, si acudimos al analisis numerico,
MATLAB proporciona varios comandos que permiten obtener aproximaciones numericas de
cualquier integral definida. Por ejemplo, para usar la regla de Simpson tenemos el comando
quad que puede actuar sobre funciones o expresiones simbolicas
>> f=inline(exp(x.^2));
>> quad(f,0,1)
ans =
1.4627
>> quad(x.*exp(x),0,1)
ans =
1.0000
function y = newton(f,x0)
% f es una cadena de caracteres
% x0 es el punto inicial
df=diff(f);
xk=1;
x=0;
while (abs(xk-x)>1.e-6)
x=x0;
xk = x0 - eval(f)/eval(df);
x0=xk;
end y=xk;
El diseno del programa permite introducir tanto la funcion cuya raz queremos encontrar
como el punto para iniciar el algoritmo. Dado que introducimos parametros en la ejecucion
hemos de formular el m-file como una function, tal y como aparece en la primera lnea. El
dato de salida es la variable y, el nombre del programa (que debe coincidir con el nombre del
fichero m-file) es newton que depende de los parametros de entrada f, que debe ser una cadena
de caracteres y x0 un punto inicial. Las lneas siguientes, comenzando con % son comentarios.
El resto de las lneas son asignaciones y un bucle en el que se itera mediante el metodo de
Newton hasta que la diferencia entre dos iteraciones consecutivas es menor que 106 .
Para poder ejecutar este programa debemos editarlo (MATLAB trae consigo un editor
incorporado) y guardarlo como un fichero con extension .m. Despues, bastara que el fichero se
encuentre en algun lugar en el que MATLAB lo pueda encontrar (en el path), para que pueda
se ejecutado del siguiente modo:
>> newton(exp(x)-x*sin(x),0)
ans =
-0.7271