Introducción a MATLAB Introducción El paquete MATLAB es un

Anuncio
Introducción a MATLAB
Introducción
El paquete MATLAB es un sistema interactivo basado en matrices para cálculos cientı́ficos y de
ingenierı́a. El nombre proviene de MATrix LABoratory.
Este apunte está basado en la versión 7.1 de MATLAB y su propósito es ofrecer una guı́a simple
para el uso de MATLAB. Cada uno de los ejemplos ilustran lo que muestra el espacio de trabajo
de MATLAB en una sesión determinada. Por ejemplo:
>> (2+3*pi)/2
ans =
5.7124
Las respuestas se muestran con 5 cifras significativas, mediante la instrucción format puede
cambiarse esta cantidad. Por ejemplo:
>>format long
>>(2+3*pi)/2
ans =
5.71238898038469
Esta instrucción permite obtener hasta 15 cifras decimales significativas.
Operaciones aritméticas
+
suma
−
resta
∗
multiplicación
\
división
∧
potencia
Instrucciones de asignación
Mediante el uso de la igualdad se puede asignar un nombre al resultado de la evaluación de
una expresión. Por ejemplo:
>> a=pi*2
a =
6.2832
1
Cuando se escribe un punto y coma al final de una expresión, el computador realiza las
operaciones correspondientes y almacena el resultado bajo el nombre que se le haya asignado
a dicha expresión, pero no se muestra el resultado en la pantalla. Por ejemplo:
>> a=pi*2;
>>
Matrices
MATLAB trabaja esencialmente con un solo tipo de objetos: una matriz numérica rectangular
con entradas posiblemente complejas, es decir, que todas las variables representan matrices.
Existen distintas formas de introducir una matriz en MATLAB:
• Ingresando una lista explı́cita con sus elementos.
• Generándola mediante declaraciones y funciones.
• Cargándola desde un archivo externo.
• Creándola en un archivo .m
Ejemplos:
>> b=[1 2 3 4 ]
b =
1
2
3
4
>> b=1:1:4
b =
1
2
3
4
>> A=[1 2 3; 4 5 6; 7 8 9]
A =
1
4
7
2
5
8
3
6
9
Los puntos y comas separan las filas de una matriz, mientras que los elementos de la misma
fila deben separarse por un espacio en blanco o por una coma.
Se puede trabajar con los elementos de una matriz de las siguientes formas (para el ejemplo
anterior):
• seleccionando una entrada especı́fica de A:
2
>> A(2,3)
ans =
6
• seleccionando una submatriz de A:
>> A(1:2,2:3)
ans =
2
3
5
6
• asignando un valor a una entrada especı́fica de A:
>> A(2,2)=1
Operaciones con matrices
+
suma
−
resta
∗
multiplicación
\
división izquierda
/
división derecha
∧
potencia
0
transpuesta
Si A es una matriz inversible y b es una columna, entonces:
x = A\b es la solución de Ax = b.
x = b/A es la solución de xA = b.
En la división izquierda, si la matriz es cuadrada, se factoriza usando eliminación gaussiana,
con los factores se resuelve Ax = b. Si la matriz no es cuadrada, se factoriza usando la
ortogonalización de Householder con pivoteo de columnas, con los factores se resuelve el
sistema indeterminado o sobredeterminado en el sentido de los mı́nimos cuadrados. La división
derecha se define a partir de la izquierda por b/A = (A0 \b0 )0 .
Operaciones que se realizan elemento a elemento
Las operaciones matriciales de suma, resta y producto por un escalar se realizan elemento
a elemento, lo cual no ocurre en las operaciones matriciales de multiplicación, división y
potenciación. Estas operaciones pueden realizarse elemento a elemento si se antepone un
punto al sı́mbolo correspondiente, es decir: .∗, ./, .∧, por ejemplo:
3
• para calcular el producto AA:
>> A=[1 2; 3 4];A^2
ans =
7
10
15
22
• para elevar al cuadrado cada elemento de A:
>> A.^2
ans =
1
9
4
16
Funciones escalares
Algunas de ellas son:
abs, cos, sin, exp, log, log10, tan, sqrt, sign, floor, round, ceil.
Por ejemplo:
>> 3*cos(sqrt(4))
ans =
-1.2484
Funciones vectoriales
Algunas de ellas son:
max: elemento máximo de un vector
min: elemento mı́nimo de un vector
sort: permite ordenar un vector en forma ascendente o descendente
sum: permite realizar la suma de los elementos de un vector
prod: permite realizar el producto de los elementos de un vector
mean: permite realizar el promedio de los elementos de un vector
Funciones matriciales
Las funciones matriciales más útiles son las siguientes:
eye: matriz identidad
4
zeros: matriz de ceros
ones: matriz de unos
triu: parte triangular superior de una matriz
tril: parte triangular inferior de una matriz
rand: matriz generada aleatoriamente
hilb: matriz de Hilbert
chol: factorización de Cholesky
cond: número de condición en la norma 2
det: determinante
eig: autovalores y autovectores
inv: inversa
lu: factorización LU
norm: norma 1, norma 2, norma de Frobenius, norma ∞
poly: polinomio caracterı́stico
qr: factorización QR
rank: rango
size: tamaño
svd: descomposición en valores singulares
Gráficos
MATLAB puede generar dibujos bidimensionales y tridimensionales de curvas y superficies.
La instrucción plot permite generar gráficos de curvas planas. Por ejemplo:
>>
>>
>>
>>
>>
>>
>>
x=-pi:0.1:pi;
y=cos(x);
z=sin(x);
plot(x, y, x, z);
title(’Seno vs Coseno’);
xlabel(’x’);
ylabel(’f(x)’);
En la primera lı́nea se especifica el dominio de las funciones, teniendo en cuenta el tamaño
5
de paso 0.1. En las dos lı́neas siguientes se definen las funciones. La cuarta lı́nea contiene la
instrucción para graficar la función.
Para obtener dibujos tridimensionales de superficies hay que especificar un rectángulo del
dominio de la función, mediante la instrucción meshgrid y luego la instrucción mesh para
obtener el gráfico. Por ejemplo:
>>
>>
>>
>>
x=-pi:0.1:pi;
y=x;[x,y]=meshgrid(x,y);
z=cos(x+y);
mesh(z)
Operadores relacionales
==
igual que
∼=
no igual que
<
menor que
>
mayor que
<=
menor o igual que
>=
mayor o igual que
Operadores lógicos
<
menor que
∼
no
&
y
|
o
Cuando se aplican a escalares, el resultado es 1 o 0 de acuerdo a que la relación sea verdadera
o falsa respectivamente. Cuando se aplican a matrices del mismo orden, el resultado es
una matriz de ceros y unos, que corresponden al valor de la relación entre los coeficientes
correspondientes.
>>
>>
>>
>>
a=rand(3);
b=tril(a);
a==b;
ans=
1
0
1
1
1
1
0
0
1
6
Estructuras de control
Las instrucciones for, if y while de MATLAB operan como en la mayor parte de los lenguajes
usuales. Finalizan con end.
Archivos .m
Existen dos tipos de archivos .m:
• Archivos de instrucciones
• Archivos de funciones
Un archivo de instrucciones está formado por una sucesión de instrucciones de MATLAB, las
variables son globales y por lo tanto, cambiarán los valores del espacio de trabajo.
Un archivo de funciones está formado por una sucesión de instrucciones de MATLAB que conforman funciones especı́ficas, las variables son locales. Una función admite argumentos de
salida simples o múltiples. Por ejemplo, y = eig(A) genera un vector columna conteniendo
los autovalores de A mientras que [U, D] = eig(A) genera una matriz U cuyas columnas
son los autovectores de A y una matriz diagonal D con los autovalores de A en su diagonal.
La siguiente función permite calcular el producto de a y b mediante sumas sucesivas:
function c=CalcularProducto(a, b)
c=0;
for i=1:b
c=c+a;
end
La siguiente función permite determinar los valores mı́nimo y máximo de un vector:
function [vMin vMax]=CalcularExtremos(v)
vMin=min(v);
vMax=max(v);
Tratamiento de matrices mediante archivos de texto
El siguiente archivo de instrucciones permite generar un archivo de texto a partir de datos de
MATLAB y generar una matriz a partir de un archivo de texto.
7
%Generacion del archivo de texto
x=-pi:0.5:pi;
AInput=[];
AOutput=[];
%Primera columna de la matriz, : indica todas las filas de la primera columna
AOutput(:, 1)=x’;
%Segunda columna de la matriz, : indica todas las filas de la segunda columna
AOutput(:, 2)=cos(x);
save ’miArchivo.txt’ AOutput -ASCII
%Generacion de una matriz a partir de un archivo de texto, en este ejemplo,
%el mismo generado en el paso anterior
AInput=load(’miArchivo.txt’)
8
Descargar