Sie sind auf Seite 1von 88

UNIVERSIDAD NACIONAL

MAYOR DE SAN MARCOS


ING. MECANICA DE FLUIDOS

INFORMTICA Y
2015-I
SISTEMAS
Autor: Ing. William Chauca
Nolasco

MATLAB
INTRODUCCIN

Es un entorno de trabajo para el


clculo cientfico.
Programado originalmente por Clever
Moler a fines de los aos 70
La finalidad era acceder
de una
forma sencilla a las libreras LINPACK
y
EISPACK
donde
estn
implementadas
de
una
forma
eficiente los algoritmos, clave del
anlisis MATRICIAL

MATLAB
es una abreviatura de
Matrix Laboratory
Su primera implementacin se hizo
en FORTRAN que era y aun sigue
sindolo, el lenguaje estndar en la
implementacin
de
mtodos
numricos.
Posteriormente se implemento en C,
que es como se encuentra en la
actualidad.

APLICACIONES EN
MATLAB
Las aplicaciones de matlab se
extienden a otras ramas del clculo
cientfico y de las ciencias aplicadas
en general.
Tiene
gran
aceptacin
en
la
Ingeniera.
Sus
herramientas
como
los
toolboxes, libreras escritas en el
lenguaje propio del Matlab hacen que
se amplen el rango de problemas

REAS DONDE MATLAB SE


DESARROLLA EFICIENTEMENTE
Algebra Lineal Numrica
Procesamiento de seales (anlisis,
compresion de datos,..)
Diseo de sistemas de control.
Salidas graficas.
Estadstica.
Simulacin de sistemas dinmicos.

INGRESANDO AL ENTORNO DEL


MATLAB

COMANDOS BASICOS

Ordenes de importancia
1.- who: Genera una lista de variables almacenadas en
el espacio de trabajo sin detalles.
2.- whos: Genera una lista de variables almacenadas en
el espacio de trabajo con mas detalles respectos a las
variables almacenadas en el espacio de trabajo.
3.- what: Presenta una lista de archivos m, mat y mex
almacenados en el directorio actual.
4.- clc: Limpia la informacin de la ventana de comandos
5.- clear: Borra las variables usadas en memoria (del
espacio de trabajo)
6.-demo:
Gua
al
usuario
a
ejecutar
demostraciones que se eligen en un men.
7.- diary filename

diversas

PERACIONES ARITMTICA
EN MATLAB

Al igual que en la aritmtica , las


operaciones de adicin, sustraccin,
multiplicacin, divisin, potenciacin y
radicacin se pueden realizar
Operadores
Aritmticos

Significado

+
*
/
^

Adicin
Sustraccin
Multiplicacin
Divisin
Potenciacin

UTILIZANDO LA
VENTANA DE
COMANDOS CON
OPERACIONES
ARITMTICAS

Ejemplos de Asignacin
de variables en Matlab

Primero borramos
todas las variables
creada, luego con
el puntero
del
mouse ejecutamos
las ordenes que
estan en la ventana
de nombre
COMMAND
HISTORY

Operadores lgicos
Sirven para operaciones lgicas, es decir,
cuando deseamos comparar variables, se
necesitan operadores cuyo resultado sea
booleano (cierto o falso).
Operador
Funcin que desempea
-A
Negacin Lgica (NOT) o complementario de A
A&B
Conjuncin lgica (AND) o interseccin de A y B
A|B
Disyuncin lgica (OR) o unin de A y B
xor( A , B) OR exclusivo (XOR) o diferencia simtrica de A y
B

Operadores
Relacionales
Operador
Funcin que desempea
<
Menor (complejos slo afecta a partes
reales)
<=
Menor o igual (slo afecta a partes
reales)
>
Mayor (slo afecta a partes reales)
>=
Mayor o igual (slo afecta a partes
reales)
==
Igual lgico
=
Desigualdad

VECTORES

>> Vector=[2 2.25 4/2 3.5]


Vector =
2.0000 2.2500 2.0000
3.5000

Formas de asignar un
vector

ing. William Chauca Nolasco

linspace
(a,b,n)
genera
un
vector
linealmente espaciado entre los valores a
y b con c elementos.
linspace
(a,b)
genera
un
vector
linealmente espaciado entre los valores a
y b con 100 elementos.
logspace
(a,b,n)
genera
un
vector
logartmicamente espaciado entre los
valores 10^a y 10^b con n elementos.
logspace
(a,b)
genera
un
vector
logartmicamente espaciado entre los
valores 10^a y 10^b con 50 elementos.
ing. William Chauca Nolasco

>> Vector1=[1:5]
Vector1 =
1
2
3
4

>> Vector2=[1:0.5:4]
Vector2 =
Columns 1 through 7
1.0000 1.5000 2.0000 2.5000 3.0000
3.5000 4.0000
>> Vector3=linspace(1,10,10)
Vector3 =
Columns 1 through 10
1
2
3
4
5
6
7
8
9 10
>> Vector4=linspace(1,21,10)
Vector4 =
Columns 1 through 10
1.0000 3.2222 5.4444 7.6667 9.8889
14.3333 16.5556 18.7778 21.0000
>> Vector5=logspace(0,2,4)
Vector5 =
1.0000 4.6416 21.5443 100.0000
ing. William Chauca Nolasco

12.1111

COMANDO FORMAT

>> format short %Por


default
>> 20.2
ans =
20.2000
>> format short e
>> 120.3
ans =
1.2030e+002

>> format long e


>> 120.3
ans =
1.203000000000000e+002

>> format bank


>> 2.1
ans =
2.10

ing. William Chauca Nolasco

FUNCIONES DE APROXIMACIONES

(con x escalar, vector o matriz, pero redondeara


en cada caso los elemento individualmente)

>>
ceil(1.25)
ans =
2
>> ceil(1.25)
ans =

>>
>>
fix(10.97)
floor(4.269)
ans =
ans =
10
4
>> fix(>> floor(10.97)
4.269)
Nolasco
ans ing.
= William Chaucaans
=

>>
round(3.5)
ans =
4
>>
round(3.25)
ans =

FUNCIONES TRIGONOMTRICAS

ing. William Chauca Nolasco

>> sin(pi/2)
ans =
1
>> cos(pi/2)
ans =
6.1232e-017

>> sinh(pi/2)
ans =
2.3013
>>
cosh(pi/2)
ans =
2.5092

>> sind(90)
ans =
>> sin(pi/6)
1
ans =
>> sind(-90)
0.5000
ans =
>>
-1
asin(0.5000)*180/p
>> cosd(-90)
i
ans =
ans =
0
ing. William Chauca Nolasco
30.0000

FUNCIONES DE OPERACIONES
BSICAS

(x e y cualquier escalar, m y n enteros)


ing. William Chauca Nolasco

>> abs(-5)
ans =
5
>> abs(3-4i)
ans =
5
>> x=-1
x=
-1
>> y=0
y=
0
>> z=2
z=
2

>> sign(x)
ans =
-1
>> sign(y)
ans =
0
>> sign(z)
ans =
1
ing. William Chauca Nolasco

>> gcd(9,12)
ans =
3
>> lcm(10,25)
ans =
50

>> rem(12,5)
ans =
-2
>> rem(12,5)
ans =
2

>> mod(-12,5)
>> nthroot(8,3)
ans =
ans =
3
2
Su equivalencia
>> -12-floor(>>
12/5)*5
nthroot([8,27,64],3
ans =
)
3
ans
=
>> mod(12,5)
2
3
4
ans =
ing. William Chauca Nolasco
2

FUNCIONES PARA CONSTRUIR MATRICES ESPECIALES


Al igual que pasa con los vectores, existen unas sentencias que
nos ayudan a crear ms rpidamente algunas matrices que
Matlab ya tiene predefinidas (m y n deben tomar valores
naturales):
zeros (n) crea una matriz cuadrada n x n de ceros.
zeros (m,n) crea una matriz m x n de ceros.
ones (n) crea una matriz cuadrada n x n de unos.
ones (m,n) crea una matriz m x n de unos.
rand (n) crea una matriz cuadrada n x n de nmeros aleatorios
con distribucin uniforme (0,1).
rand (m,n) crea una matriz m x n de nmeros aleatorios con
distribucin uniforme (0,1).
randn (n) crea una matriz n x n de nmeros aleatorios con
distribucin normal (0,1).
randn (m,n) crea una matriz m x n de nmeros aleatorios con
distribucin normal (0,1).
eye (n) crea una matriz cuadrada n x n de unos en la
diagonal y ceros el resto.
eye (m,n) crea una matriz m x n de unos en la
Chauca Nolasco
diagonal y cerosing.
elWilliam
resto.

magic (n) crea una matriz cuadrada n x n de enteros de


modo que sumen lo mismo las filas y las columnas.

ing. William Chauca Nolasco

>> eye(2)
ans =
1
0
0
1
>> magic(4)
ans =
16
2
3 13
5 11 10
8
9
7
6
12
4 14 15
1

ing. William Chauca Nolasco

OPERACIONES BSICAS CON MATRICES

ing. William Chauca Nolasco

FUNCIONES PARA OPERAR CON


VECTORES Y MATRICES

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

FUNCIONES PARA EL ANLISIS DE


MATRICES
>> v=[1 2 3]
v=
1
2
3
>> diag(v)
ans =
1
0
0
0
2
0
>>0A =0 [1 2 3 4; 7 8 9 2;
2
3 4 6 8]

A=
1
7
2

2
8
4

3
9
6

4
2
8

ing. William Chauca Nolasco

>> diag(A)
ans =
1
8
6

>> length(A) %Numero de lineas de una


matriz
ans =
3
>> v=1:0.01:100;
>> length(v) %Cantidad de elementos de
un vector
ans =
9901
ing. William Chauca Nolasco

>> size(A)
ans =
3 4
>> XX = [1
2 4 6 8]
XX =
1
2
7
8
2
4

2 3 4; 7 8 9 2;
3
9
6

4
2
8

>>
>> UPPER=triu(XX)
LOW=tril(XX)
UPPER =
LOW =
1
2
3
4
1
0
0
0
8
9
2
0
0
0
6
8
7
8
0
0
ing. William Chauca Nolasco
2
4
6

FUNCIONES QUE ACTAN SOBRE VECTORES


Las siguientes funciones slo actan sobre vectores (no sobre matrices, ni
sobre escalares):

[xm,im]=max(x) mximo elemento de un vector. Devuelve el valor


mximo xm y la posicin que ocupa im
min(x) mnimo elemento de un vector. Devuelve el valor mnimo y la
posicin que ocupa
sum(x) suma de los elementos de un vector
cumsum(x) devuelve el vector suma acumulativa de los
elementos de un vector (cada elemento del resultado es una
suma de elementos del original)
mean(x) valor medio de los elementos de un vector
std(x) desviacin tpica
prod(x) producto de los elementos de un vector
cumprod(x) devuelve el vector producto acumulativo de los
elementos de un vector
[y,i]=sort(x) ordenacin de menor a mayor de los elementos de un
vector x. Devuelve el vector ordenado y, y un vector i con las
posiciones iniciales en x de los elementos en el vector ordenado y.
ing. William Chauca Nolasco

En realidad estas funciones se pueden aplicar


tambin a matrices, pero en ese caso se aplican por
separado a cada columna de la matriz, dando como
valor de retorno un vector resultado de aplicar la
funcin a cada columna de la matriz considerada
como vector. Si estas funciones se quieren aplicar a
las filas de la matriz basta aplicar dichas funciones a
la>>
matriz
traspuesta.
vector=[2
7 10 4 1]

vector =
2
7 10
4
1
>> [xm,im]=max(vector)
xm =
10
im =
>>
3
[ym,imenor]=min(vector)
ym =
1
imenor =
ing. William Chauca Nolasco
5

>> vector
>> cumprod(vector)
vector =
ans=
2
7 10
4
1
2 14 140 560
>> sum(vector)
560
ans =
24
>> vector
>> cumsum(vector) vector =
ans =
2
7 10
4
2
9 19 23 24
1
>> mean(vector)
ans =
>> [y,i]=sort(vector)
4.8000
y=
>> std(vector)
1
2
4
7
ans =
10
3.7014
>> prod(vector)
i=
ans =
5
1
4
2
ing. William Chauca 3
Nolasco
560

FUNCIONES LGICAS PARA


MATRICES/VECTORES
De ordinario, las matrices "binarias" que se obtienen
de la aplicacin de los operadores relacionales no se
almacenan en memoria ni se asignan a variables,
sino que se procesan sobre la marcha. MATLAB
dispone de varias funciones para ello. Recurdese
que cualquier valor distinto de cero equivale a true,
mientras que un valor cero equivale a false. Algunas
de estas funciones son:
any(x) funcin vectorial; chequea si alguno de los
elementos del vector x cumple una determinada
condicin (en este caso ser distinto de cero).
Devuelve
un uno5 7un
cero
>> vector=[2
9 8]
vector =
2
5
7
9
8
>> any(vector>10)
ans =
0
>> any(vector<10)
ans =
1
ing. William Chauca Nolasco

any(A)

se aplica por separado a cada columna de la


matriz A. El resultado es un vector de unos y ceros
>> A=[3 3 5;1 2 9; 8 9 0]
A=
3
3
5
1
2
9
8
9
0
>> any(A>10)
ans =
0
0
0
>> any(A>=5)
ans =
1
1
1

all(x)

funcin vectorial; chequea si todos los


elementos del vector x cumplen una condicin.
Devuelve un uno un cero
>> A = [0.53 0.67 0.01 0.38 0.07 0.42 0.69]
A = Columns 1 through 7
0.5300 0.6700 0.0100 0.3800 0.0700 0.4200
0.6900
>> B = (A > 0.5)
B=
1
1
0 ing. William
0
0
0
1
Chauca
Nolasco

>> C=(A>=0)
C=
1
1
>> all(C)
ans =
1

all(A) se aplica por separado a cada columna de la matriz


A. El resultado es un vector de unos y ceros
>> XXX=[2 3 7;5 9 1; 2 7 6]
XXX =
2
3
7
5
9
1
2
7
6
>> all(XXX>10)
ans =
0
0
0
>> all(XXX<10)
ans =
1
1
1
ing. William Chauca Nolasco

find(x) busca ndices correspondientes a elementos


de vectores que cumplen una determinada
condicin. El resultado es un vector con los ndices
de los elementos que cumplen la condicin
find(A) cuando esta funcin se aplica a una matriz la
considera como un vector con una columna detrs
de otra, de la 1 a la ltima.

ing. William Chauca Nolasco

Ahora se van a sustituir los elementos que cumplen


la condicin anterior por valores de 10. Obsrvese
cmo se hace y qu resultado se obtiene:

donde ha sido necesario convertir el 10 en un vector


del mismo tamao que m. Para chequear si hay
algn elemento de un determinado valor por
ejemplo 3 puede hacerse lo siguiente:

ing. William Chauca Nolasco

mientras que para comprobar que


elementos de A son mayores que cero:

todos

los

>> all(all(A))
ans =
1
En este caso no ha hecho falta utilizar el operador
relacional porque cualquier elemento distinto de
cero equivale a true.

ing. William Chauca Nolasco

GENERACIN DE GRFICOS
PREDEFINIDOS EN MATLAB

ing. William Chauca Nolasco

>> y=[1 2 3 8 2 1 4
6];
>> bar(y)

ing. William Chauca Nolasco

Grfico de barras para la funcin


cuando x vara de -3 a 3

>> x = -3:0.2:3;
>> y = exp(-x.*x);
>> bar(x,y)

ing. William Chauca Nolasco

y = e-x*x

>> barh(x,y)

ing. William Chauca Nolasco

>> bar(x,y,'g')

ing. William Chauca Nolasco

>> y=[10 8 6;2 5 8;6 0 9;5 8


7;9 4 2]
y=
10
8
6
2
5
8
6
0
9
5
8
7
9
4
2

>>bar(y,'grouped')

ing. William Chauca Nolasco

>> bar(y,'stacked')

ing. William Chauca Nolasco

bar3(y,'stacked')

ing. William Chauca Nolasco

>> x = 0:0.2:20;
>>y = sin(x).*exp(-0.2*x);
>> plot(x,y)

ing. William Chauca Nolasco

>> plot(x,y,'r*')

ing. William Chauca Nolasco

>> fplot('[sin(x), sin(2*x), sin(3*x)]',[0,2*pi]


>> legend('sen(x)','sen(2x)','sen(3x)')

ing. William Chauca Nolasco

>> x=linspace(0,2,30);
>> y=sin(x.^2);
>> plot(x,y)
>> text(1,0.8,'y=sin(x^2)');
>> hold on
>> z=log(sqrt(x));
>> plot(x,z)
>> text(1,-0.1,'y=log(sqrt(x))')
>> xlabel('Eje x')
>> ylabel('Eje y')
>> title('Grfico senoidal y
logartmico')
ing. William Chauca Nolasco

ing. William Chauca Nolasco

Graficar en dos subgrficas una fila y dos


columnas:

>>
>>
>>
>>
>>
>>
>>
>>
>>

x = [0:0.1:2*pi];
y = sin(x);
z = cos(x);
subplot(121);
plot(x,y)
title('sin(x)')
subplot(122);
plot(x,z)
title('cos(x)')

ing. William Chauca Nolasco

Graficar en dos subgrficas dos fila y una


columna:

>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

x = [0:0.1:2*pi];
y = sin(x);
z = cos(x);
subplot(211);
plot(x,y)
title('sen(x)')
hold on
subplot(212)
plot(x,z)
title('cos(x)')

ing. William Chauca Nolasco

Graficar en cuatro subgrficas dos filas y dos


columnas:

>>subplot (221);
>>fplot(sin(x),[-2*pi 2*pi]);
>>subplot (222);
>>fplot(cos(x),[-2*pi 2*pi]);
>>subplot (223);
>>fplot(csc(x),[-2*pi 2*pi -10
10]);
>>subplot (224);
>>fplot(sec(x),[-2*pi 2*pi -10
10]);
ing. William Chauca Nolasco

ing. William Chauca Nolasco

Graficar en diferentes escalas


>>x = 0:0.01:3;
>>y = abs(exp(-0.5*x).*sin(5*x));
>>subplot(221);
>>plot(x,y)
>>title('normal')
>>hold on
>>subplot(222)
>>loglog(x,y)
>>title('logaritmica')
>>subplot(223)
>>semilogx(x,y)
>>title('semilogaritmico en eje x')
>>subplot(224)
>>semilogy(x,y)
>>title('semilogaritmico en eje y')
ing. William Chauca Nolasco

ing. William Chauca Nolasco

Das könnte Ihnen auch gefallen