Programación en MatLab

Descargar como ppt, pdf o txt
Descargar como ppt, pdf o txt
Está en la página 1de 88

Programacin en

MatLab
Ing. Luis Ricardo Soto, MSc.

MATLAB
MATLAB es el nombre abreviado de MATrix
LABoratory. MATLAB es un programa para
realizar clculos numricos con vectores y
matrices. Como caso particular puede
tambin trabajar con nmeros escalares
tanto reales como complejos, con cadenas de
caracteres y con otras estructuras de
informacin ms complejas. Una de las
capacidades ms atractivas es la de realizar
una amplia variedad de grficos en dos y
tres dimensiones. MATLAB tiene tambin un
lenguaje de programacin propio.

Interfaz de Matlab

Interfaz de Matlab
Ventana de comandos (Command Window)
Ventana histrica de comandos (Command
History)
Espacio de trabajo (Workspace)
El directorio actual (Current Directory)
El editor de ficheros y depurador de errores
(Editor&Debugger)
El editor de vectores y matrices (Array
Editor)
La ventana de ayuda (Help)

Funcionamiento de
Matlab
Guardar archivos

Ventana de comandos
Archivo de texto
Funcin: diary

Ventana histrica de comandos:


Archivo .m

Espacio de trabajo:
Archivo .mat (variables)
Funcin: save

Funcionamiento de
Matlab

Los elementos bsicos del Matlab, como


cualquier otro lenguaje de programacin, son:
constantes,
variables,
operadores,
expresiones y funciones.
Constante numricas:
Nmeros enteros: 2 35 -48
Nmeros reales: 2. -35.2 48.45
Mximo de 16 cifras significativas
Notacin exponencial
[2.2250e-308
1.7e+308]
Nmeros complejos: 2+3i 4*j i,j=(-1)

Funcionamiento de
Matlab

Operaciones aritmticas elementales:


Suma: +
Resta: Multiplicacin: *
Divisin: /
Exponenciacin: ^
Precedencia:
primero
exponenciaciones,
luego divisiones y multiplicaciones por ltimo
sumas y restas.

Funcionamiento de
Matlab
Variable: es la etiqueta que identifica una porcin de
memoria
Matlab diferencia entre maysculas y minsculas
Para ver las variables definidas en
determinado se teclea:
>> who
o bien
>> whos
Para eliminar alguna variable se ejecuta
>> clear variable1 variable2

un

instante

Expresiones numricas: son un conjunto de nmeros,


funciones
y
variables
previamente
definidas,
relacionados todos ellos por operadores aritmticos. Si
una expresin es demasiado larga se indica mediante ...

Funcionamiento de
Matlab

Formatos: por defecto matlab tiene formato


corto pero se puede elegir entre distintos
formatos.

>>
>>
>>
>>
>>

format
format
format
format
format

long (15 o 7 decimales) (16 u 8 dgitos)


short (4 decimales)
short e (notacin exponencial)
long e (notacin exponencial)
rat (aproximacin racional)

Variables predefinidas en Matlab:

i = (-1)
pi =
Inf =
NaN = clculos
indefinidos
eps = exactitud rel. de coma flotante 2.2204e-016
realmin = lmite inferior 2^(-1022) 2.2251e-308
realmax = lmite superior 2^1024 1.7977e+308

Funcionamiento de
Matlab
Funciones: nombre(argumento)

sqrt (x) raz cuadrada


abs(x) mdulo de x
exp(x) calcula ex
log(x) (en base e)
log10(x)
sin(x)
cos(x)
tan(x)
asin(x) [-/2 /2] acos(x) [0 ] atan(x) [-/2 /2]
rats(x)
rem(x,y) resto de x/y
round(x)
sign(x)

Funcionamiento de
Matlab

Ejercicio 1.1 Calcular el valor de la expresin

Ejercicio 1.2 Calcular el valor de la expresin

Y escribir el resultado en al menos 2 formatos


Ejercicio 1.3 Calcular

Funcionamiento de
Matlab

Ejercicio 1.4 Segn Hill y Lounasmaa, la


ecuacin de la curva de inversin del helio es:

P 21.0 5.44T 0.132T 2


Donde la presin viene dada en atmsfera y la
temperatura T en grados Kelvin.
Calcular el valor de la presin a una temperatura
de 293 K.
Calcular el valor de la temperatura para una
presin de 1 N/m2.
Nota: 1 N/m2=9.265*10-6 atm

Funcionamiento de
Matlab

Ejercicio 1.4 Segn Hill y Lounasmaa, la


ecuacin de la curva de inversin del helio es:

P 21.0 5.44T 0.132T 2


Donde la presin viene dada en atmsfera y la
temperatura T en grados Kelvin.
Calcular el valor de la presin a una temperatura
de 20 K.
Calcular el valor de la temperatura para una
presin de 1e6 N/m2.
Nota: 1 N/m2=9.265*10-6 atm

Funcionamiento de
Matlab

Ejercicio 1.4 Segn Hill y Lounasmaa, la


ecuacin de la curva de inversin del helio es:

P 21.0 5.44T 0.132T 2


Donde la presin viene dada en atmsfera y la
temperatura T en grados Kelvin.
Calcular el valor de la presin a una temperatura
de 80 K.
Calcular el valor de la temperatura para una
presin -1e6 N/m2.
Nota: 1N/m2=9.265*10-6atm

Vectores y Matrices
Las matrices son el tipo fundamental de dato en
Matlab.
Los escalares se guardan como una matriz de 1x1

A=[1 3 5; 6 9 2; 4 8 7]
A =
1
6
4

3
9
8

5
2
7

Vectores y Matrices
Los vectores pueden ser vectores fila o
vectores columna
Vectores fila; los elementos de una misma
fila estn separados por blancos o comas,
>> v =[2 3 4]
Vectores columna: los elementos de una
misma columna estn separados por Intro o
por caracteres punto y coma (;).
>> w =[2;3;4;7;9;8]
La dimensin de un vector se obtiene por el
comando length(nombre del vector)

Vectores y Matrices
Generacin de vectores:
Operador (:) colon

Especificando el incremento de sus


componentes v=a:h:b.
Especificando su dimensin linspace(a,b,n) si
se omite n toma 100 por defecto; el
incremento es k=(b-a)/(n-1).

Con
componentes
logartmicamente
espaciadas logspace(a,b,n) genera un vector
fila de n puntos logartmicamente espaciados
entre 10a y 10b. Si se omite el valor de n se
toma 50.

Vectores y Matrices
Operaciones con escalares:
v+k adicin o suma
v-k sustraccin o resta
v*k multiplicacin
v/k divide por k cada elemento de v
k./v divide k por cada elemento de v
v.^k potenciacin cada componente de v
esta elevado a k
k.^v
potenciacin
k
elevado
cada
componente de v

Vectores y Matrices
Operaciones entre vectores:
v+w adicin o suma
v-w sustraccin o resta
v.*w multiplicacin cada elemento de v por el
correspondiente de w
v./w divide cada elemento de v por el
correspondiente de w
v.^w potenciacin cada componente de v
esta elevado al correspondiente de w

Vectores y Matrices
Ejemplo: Clculo de errores relativos
Supongamos que para resolver una ecuacin
diferencial ordinaria hemos utilizado:
Un mtodo analtico mediante el cual sabemos que
su solucin en el intervalo [0,1] es y(x)=x 2+cos(x).
Un mtodo numrico para aproximar la solucin en
el intervalo [0,1] con parmetro de discretizacin 0.2
ngulo
(radianes)

Solucin
aproximada

1.0030

0.2

1.0234

0.4

1.0825

0.6

1.1869

0.8

1.3342

1.5415

Solucin exacta
y(x)=x2+cos(x)

%Error

Vectores y Matrices
Para definir una matriz no hace falta establecer
de antemano su tamao (de hecho, se puede
definir un tamao y cambiarlo posteriormente).
MATLAB determina el nmero de filas y de
columnas en funcin del nmero de elementos
que se proporcionan (o se utilizan).
Las matrices se definen por filas; los
elementos de una misma fila estn separados por
blancos o comas, mientras que las filas estn
separadas por pulsaciones intro o por caracteres
punto y coma (;). Por ejemplo, elsiguiente
comando define una matriz A de dimensin (3x3):
A=[1 2 3; 4 5 6; 7 8 9]

Vectores y Matrices
Operadores matriciales:

+ adicin o suma
sustraccin o resta
* multiplicacin
' transpuesta o transpuesta conjugada
^ potenciacin
\ divisin-izquierda
/ divisin-derecha
.* producto elemento a elemento
./ y .\ divisin elemento a elemento
.^ elevar a una potencia elemento a elemento

Vectores y Matrices
En MATLAB se accede a los elementos de un
vector poniendo el subndice entre parntesis (por
ejemplo x(3) x(i)).
Los elementos de las matrices se acceden
poniendo los dos subndices entre parntesis,
separados por una coma (por ejemplo A(1,2)
A(i,j)).
Las matrices se almacenan por columnas
(aunque se introduzcan por filas), y teniendo en
cuenta esto puede accederse a cualquier elemento
de una matriz con un slo subndice. Por ejemplo,
si A es una matriz (3x3) se obtiene el mismo valor
escribiendo A(1,2) que escribiendo A(4).

Vectores y Matrices
Manipulacin de matrices:
Operador (:) colon
Referencia a un elemento A(i,j) o A(k)
Referencia a una fila A(i,:)
Referencia a una columna A(:,j)
Referencia a una matriz bidimensional A(:,:)
Referencia a un vector A(:)
Matriz vaca []
Eliminar filas A(i,:)=[]
Eliminar columnas A(:,j)=[]

Vectores y Matrices
Generacin de matrices:
Generacin de una matriz de ceros, zeros(n,m)
Generacin de una matriz de unos, ones(n,m)
Generacin de una matriz identidad eye(n,m)
Generacin de una matriz de elementos
aleatorios rand(n,m)
Matrices con diagonal dada diag(v), diag(v,k)

diag(A) obtencion de la diagonal de una matriz.


diag(A,k) busca la k-sima diagonal.
diag(v) matriz cuya diagonal contiene los elementos
del vector v

magic(n)pascal(n)

Vectores y Matrices
Desde la versin 5 de matlab se admiten
variables subindicadas multidimensionalmente
a=ones(2,2,3)
Funcin cat

Matrices dispersas o huecas son aquellas que


tienen gran cantidad de elementos nulos
>> a= sparse(i,j,c,m,n)
m indica filas, n columnas, c vector que contiene los
elementos no nulos i,j son dos vectores que indican
la posicin de cada elemento de c
para visualizar la matriz entera >>full(a)

Vectores y Matrices
Ejemplo: Tomemos la siguiente matriz
12

7
0

3
0

0
0

0
0

13

11

8
0

Y trabajemos con ella como una matriz dispersa,


para ello definimos el vector de elementos no
nulos, el vector definido por las filas y el vector
definido por las columnas.

Vectores y Matrices
m=[12,-4,7,3,-8,-13,11,2,7,-4];
f=[1,1,2,2,2,4,4,5,5,5];
c=[1,2,1,2,5,3,4,3,4,5];
a=sparse(f,c,m,5,5)
full(a)
m1=[12,7,-4,3,-13,2,11,7,-8,-4];
f1=[1,2,1,2,4,5,4,5,2,5];
c1=[1,1,2,2,3,3,4,4,5,5];
b=sparse(f1,c1,m1,5,5)
full(b)
s=a+b

Vectores y Matrices
Caractersticas generales de las funciones de
MATLAB
El concepto de funcin en MATLAB es semejante al de
C y al de otros lenguajes de programacin, aunque con
algunas diferencias importantes. Al igual que en C, una
funcin tiene nombre, valor de retorno y argumentos.
Una funcin se llama utilizando su nombre en una
expresin o utilizndolo como un comando ms. Las
funciones se pueden definir en ficheros de texto *.m
en la forma que se ver ms adelante. Considrense
los siguientes ejemplos de llamada a funciones:
>> [maximo, posmax] = max(x);
>> r = sqrt(x^2+y^2) + eps;
>> a = cos(alfa) - sin(alfa);

Vectores y Matrices
Los nombres de las funciones de MATLAB no son
palabras reservadas del lenguaje. Es posible crear
una variable llamada sin o cos, que ocultan las
funciones correspondientes.

Equivalencia entre comandos y funciones


Existe una equivalencia entre las funciones y los
comandos con argumentos de MATLAB. As, un
comando en la forma,
>> comando arg1 arg2
es equivalente a una funcin con el mismo nombre
que el comando a la que los argumentos se le pasan
como cadenas de caracteres,
>> comando('arg1', 'arg2')

Vectores y Matrices
Funciones que actan sobre vectores y matrices
sum(v) suma
prod(v) producto
v' transposicin de vectores (filas x columnas)
dot(v,w) producto escalar de vectores
cross(v,w) producto vectorial de vectores
[y,k]=max(v) valor mximo de las componentes de un
vector k indica la posicin, lo mismo para min(v) valor
mnimo
Funciones
matriciales
especiales
sqrtm(A),
expm(A),logm(A)

Vectores y Matrices
Ejercicio 2.1 Dados los vectores definidos por
x=(1,4.5,7.8) y=(sen(90),cos(45),0)
Realizar los clculos siguientes:
x+y; el producto escalar de x e y; calcular el ngulo
que forman ambos vectores.
Ejercicio 2.2 Dadas las matrices a y b calcular:

a+b, a-b, Inv(a), Inv(b). Comprobar que el


producto de matrices no es conmutativo. Elegir la
submatriz de a formada por la primera y la tercera
fila y la submatriz de b formada por la segunda y
tercera columna 1y calcular
2 3
4 producto.
2
1
el

a 2 3 4
4 2 5

b 2 0
4
1 2 5

Vectores y Matrices
Polinomios
Los polinomios se representan en MatLab por un vector
fila de dimensin n+1 siendo n el grado del polinomio.

Dado un polinomio

x3+2x
se representa por

>> pol1=[1 0 2 0]
para el clculo de las races de un polinomio
existe el comando roots.

>>raices=roots(pol1)
da un vector columna, aunque pol1 es un vector
fila

Vectores y Matrices
Un polinomio puede ser reconstruido a partir de sus
races con el comando poly

>> p=poly(raices) (da un vector fila) **


en caso de que el argumento de poly fuera una matriz
obtendramos como resultado el polinomio caracterstico
de la matriz. As mismo si queremos calcular los
autovalores de la matriz bastara con calcular las races
del polinomio caracterstico.

Ejemplo 1:
pol2=[2 4 0 1];
% definicin del polinomio 2x3+4x2+1
raices=roots(pol2)
% clculo de sus races
pol2_n=poly(raices)
% reconstruccin del polinomio
real(pol2_n)
% qu pas?

Vectores y Matrices
Ejemplo 2:
A=[1 2 3 ; 2 3 4; 4 2 5]; p=poly(A)
% pol.
caracterstico
roots(p)
% autovalores de A
Para calcular el valor de un polinomio p en un punto
dado x basta con utilizar el comando polyval

>>y=polyval(p,x)
Ejemplo 3:
p=[1 -1 -1 1]
% definicin del polinomio x3-x2-x+1
polyval(p,2)
Ejemplo 4:
x=-2:0.1:2;
Y=polyval(p,x);

Vectores y Matrices
Para multiplicar y dividir polinomios tenemos los
comandos especiales conv(p1,p2) y deconv(p1,p2)
Para conocer el resto de la divisin de polinomios basta
con poner

>>[p4,r] = deconv(p3,p2)
p2 debe tener races reales

Ejemplo 5:
p1=[1, -2, 1]; p2=[1,1]; p3=conv(p1,p2)
p4=deconv(p3,p2)
[p4,r]=deconv(p3,p2) % resto de la divisin

Vectores y Matrices
El comando residue, permite el clculo del desarrollo en
suma de fracciones simples del cociente p1/p2.
El formato del comando es: >>[r,p,k] =residue(p1,p2)
donde:
r= vector columna con los numeradores
p= vector columna con las raices del denominador

k= vector fila con los coeficientes del polinomio


independiente.

p1( x )
r (1)
r (n )

k(x)
p2( x ) x p(1)
x p(n )
>>[p1,p2]=residue(r,p,k) hace la operacin inversa

Vectores y Matrices
Ejemplo 6:
Descomponer en fracciones simples el cociente

x3 x2 1
3
2
x 3x 4

p1=[1 1 0 1]
p2=[1 -3 0 4]
[r,p,k]=residue(p1,p2)
rats(r)
[pol1,pol2]=residue(r,p,k)

x3 x2 1
35
13
1

1
3
2
2
x 3 x 4 9( x 2) 3( x 2)
9( x 1)

Vectores y Matrices
Para calcular la derivada de un polinomio tenemos el
comando,

>>polyder(p)
Para encontrar la integral se usa:

>>polyint(p)

>>polyint(p,k)
Ejemplo 7:
Dado el polinomio x3+6x2+1 encontrar su derivada y
luego integrar
p=[1, 6,0,1]
d=polyder(p)
i=polyint(d)
i=polyint(d,1)

Vectores y Matrices
Ejercicio 3.1 Consideremos el polinomio p(x)=x-1. Calcular
p(x)3 e identificar el polinomio obtenido y calcular sus
races.
Ejercicio 3.2 Segn Hill y Lounasmaa, la ecuacin de la
curva de inversin del helio es:

P 21.0 5.44T 0.132T 2

Donde la presin vienen dada en atmsfera y la


temperatura T en grados Kelvin.
Calcular el valor de la presin a una temperatura de 293 K.
Calcular el valor de la temperatura para una presin de
1N/m2.
Nota: 1N/m2=9.265*10-6atm

Grficos en 2 y 3
dimensiones

La funcin bsica de todos los grficos 2-D en


MATLAB es plot. El elemento bsico de los
grficos bidimensionales es el vector. Se utilizan
tambin cadenas de 1, 2 3 caracteres para
indicar colores y tipos de lnea. La funcin plot, no
hace otra cosa que dibujar vectores.
Ejemplo 1:
x=[1 -3 6 4 5 3]
x=
1 -3 6 4 5 3
plot(x)

Grficos en 2 y 3
dimensiones

Existen funciones orientadas a aadir ttulos al


grfico, a los ejes, a dibujar una cuadrcula auxiliar,
a introducir texto, etc.

title('ttulo') aade un ttulo al dibujo.


Con title('') se borra el ttulo.
xlabel('tal') aade una etiqueta al eje de abscisas.
ylabel('cual') idem al eje de ordenadas.
Con xlabel('') y ylabel('') se borran las etiquetas.
legend() define rtulos para las distintas lneas o
ejes utilizados en la figura.
grid activa o desactiva una cuadrcula en el dibujo.
Con grid off desaparece la cuadrcula

Grficos en 2 y 3
dimensiones

plot(Y) grafica Y en funcin del subndice de los


elementos
plot(X,Y) grafica Y en funcin de X
Ejemplo 2:
x=0:pi/90:2*pi;
y=sin(x).*cos(x);
plot(x,y)
grid on
xlabel('eje x (en radianes) ')
ylabel('eje y')
title('y=sen(x)*cos(x) ')
legend('funcin trigonomtrica')

Grficos en 2 y 3
dimensiones

Eleccin del trazo y color de la curva


plot(X,Y, 'LineSpec')

Grficos en 2 y 3
dimensiones
text(x,y,'texto') introduce 'texto' en el lugar especificado

por las coordenadas x e y. Si x e y son vectores, el texto se


repite por cada par de elementos.
gtext('texto') introduce texto con ayuda del ratn.
[x,y]=ginput(n) calcula las coordenadas de puntos sobre
la curva.
Es posible incluir en el ttulo, etiquetas de los ejes, etc. el
valor de una variable numrica. Ya que el argumento de los
comandos title, xlabel, ylabel, legend, etc. es una variable
carcter, es preciso transformar las variables numricas
int2str(n) convierte el valor de la variable entera n en
carcter
num2str(x) convierte el valor de la variable real o compleja
x en carcter (se puede especificar la precisin o el
formato)

Grficos en 2 y 3
dimensiones

Eleccin de la escala de los ejes


axis([xmin xmax ymin ymax])
axis auto: devuelve a la escala por defecto.
axis off: desactiva los etiquetados de los ejes
desapareciendo los ejes sus etiquetas y la cuadrcula.
axis on: activa los ejes desactivados.
axis equal: los mismos factores de escala para los
dos ejes.
axis square: hace la regin actual cuadrada (o
cbica cuando est en tres dimensiones).
axis normal: automticamente ajusta la relacin de
aspecto de los ejes y la escala relativa para que el
grfico se ajuste lo mejor posible.

Grficos en 2 y 3
dimensiones

Ejemplo 3: Calcular grficamente las soluciones de


la ecuacin.
2 x cos( 2 x )
teta=0:pi/360:pi/4;

0
.
4
f1=(2*teta-cos(2*teta))/2;
2
f2=0.4*ones(size(f1));
plot(teta,f1,'g--',teta,f2,'r')
axis square
xlabel('Angulo (radianes)')
gtext('2x-cos(2x))/2')
text(0.2,0.43,'y=0.4')
[teta0,y0]=ginput(1)
title(['Raiz aproximada=',num2str(teta0)])

Grficos en 2 y 3
dimensiones

Dibujar varias curvas


plot(X1,Y1, 'LineSpec1', X2,Y2, 'LineSpec2'...)
plot(X,M) grafica las columnas de la matriz M en
funcin de X
hold: retiene el grfico actual en la figura.
Se libera con hold off
Llamar una nueva figura figure o referirnos a una
figura n figure(n)
Borrar la figura actual clf
close all borra todas las figuras close(n) la
figura n

Grficos en 2 y 3
dimensiones

Ejemplo 4: plot(vector, Matriz)


x=0:pi/180:2*pi;
y=sin(x);
z=cos(x);
figure
plot(x,y,x,z)
A=[y' z']
figure
plot(x,A)

Grficos en 2 y 3
dimensiones

La funcin eval se utiliza para evaluar funciones


(expresiones)
definidas
como
cadena
de
caracteres.
y=eval('expresin')
Ejemplo 5:
f='sin(x)-2*cos(x)';
x=0:pi/90:2*pi;
y=eval(f);
plot(x,y)
axis([0 6 0 2.4]);
gtext('sen(x)-2cos(x)')

Grficos en 2 y 3
dimensiones

Funcin fplot se utiliza para graficar funciones


definidas como cadena de caracteres entre los
lmites especificados.

fplot('funcin', [xmin xmax ymin ymax], 'LineSpec')


fplot(@funcin, [xmin xmax], 'LineSpec')
[X,Y] = fplot('funcin', [xmin xmax ymin ymax]) en
este caso se devuelven los vectores X e Y, pero no
se dibuja nada.
Ejemplo 6:
f='sin(x)-2*cos(x)';
fplot(f,[0 2*pi],'g--')

Grficos en 2 y 3
dimensiones

Funcin Subplot
Una ventana grfica se puede dividir en m
particiones horizontales y n verticales, con objeto
de representar mltiples grficos en ella. Cada
una de estas subventanas tiene sus propios ejes,
aunque otras propiedades son comunes a toda la
figura. La forma general de este comando es:
subplot(m,n,i) donde m y n son el nmero de
subdivisiones en filas y columnas, e i es la
subdivisin que se convierte en activa. Las
subdivisiones se numeran consecutivamente
empezando por las de la primera fila, siguiendo
por las de la segunda, etc.

Grficos en 2 y 3
dimensiones

Grficos en 2 y 3
dimensiones

Grficos en 2 y 3
dimensiones
Ejemplo 7:
subplot(121)
f='sin(x)-2*cos(2*x)';
fplot(f,[0 2*pi])
legend('sen(x)-2cos(2x)')
subplot(122)
fplot('sin',[0 4*pi],'r')
legend('sen(x)')

Grficos en 2 y 3
dimensiones

Representacin de polgonos

fill(x,y,c)
Si
c
es
un
carcter
de
color
('r','g','b','c','m','y','w','k'), o un vector de valores [r g
b], el polgono se rellena de modo uniforme con el
color especificado.
Ejemplo 8:
x=[1,2,1,0];
y=[0,1,2,1];
fill(x,y, 'r')
axis square
title('rombo')

Grficos en 2 y 3
dimensiones

Otras funciones grficas 2-D

loglog() grfico de lneas en escala logartmica.


semilogx(), semilogy()
gr. de lneas en escala
semilogartmica.
comet() grfica de lneas animada.
polar() grfica en coordenadas polares.
fill() dibuja polgonos
bar() crea diagramas de barras.
barh() diagramas de barras horizontales.
pie() grficos con forma de tarta.
area() similar plot, pero rellenando en ordenadas de 0 a y.
hist() dibuja histogramas de un vector.

Grficos en 2 y 3
dimensiones

GRFICOS: 2D Y 3D______________________________
Ejercicio 5.1: Consideremos la ecuacin de Van
der Waals. Se considera el benceno para el cual
a=18.78 atml2/mol2, b=0.1208 l/mol. Representar
sobre una misma grfica las dos subgrficas
correspondientes a:
Isotermas de 100, 200, 300 y 400 C
Isobaras de 25, 35, 45 y 55 atm
Cada curva debe ir con trazo diferenciado, con el
texto que indique la isolnea que se ha
representado, as como el ttulo de la grfica y la
etiqueta de los ejes. R=0.0821 y V=2:100

a
(P 2 )(V b ) RT
V

GRFICOS: 2D Y 3D______________________________
a=18.78;
b=0.1208;
R=0.0821;
subplot(1,2,1)
T=373:100:673;
V=2:100;
fac1=R./(V-b);
fac2=a./V.^2;
P=zeros(4,length(V));
P(1,:)=T(1)*fac1-fac2;
P(2,:)=T(2)*fac1-fac2;
P(3,:)=T(3)*fac1-fac2;
P(4,:)=T(4)*fac1-fac2;
plot(V,P(1,:),'-',V,P(2,:),'--',V,P(3,:),':',V,P(4,:),'-.')
title('Ecuacion de Van der Waals: Isotermas')
xlabel('Volumen, ltr.')
ylabel('Presion, atm.')
axis([0, 50,0,15])
legend('T=100C','T=200C','T=300C','T=400C')

GRFICOS: 2D Y 3D______________________________
subplot(1,2,2)
P=25:10:55;
T=zeros(4,length(V));
fac1=(V-b)/R;
T(1,:)=((P(1)+fac2).*fac1)-273.15;
T(2,:)=((P(2)+fac2).*fac1)-273.15;
T(3,:)=((P(3)+fac2).*fac1)-273.15;
T(4,:)=((P(4)+fac2).*fac1)-273.15;
plot(V,T(1,:),'-',V,T(2,:),'--',V,T(3,:),':',V,T(4,:),'-.')
title('Ecuacion de Van der Waals: Isobaras')
xlabel('Volumen, ltr.')
ylabel('Temperatura, C')
legend('P=25 atm.','P=35 atm.','P=45 atm.','P=55
atm.')

GRFICOS: 2D Y 3D______________________________

Grficos en 2 y 3
dimensiones

La funcin plot3 es
bidimensional plot.
plot3(x,y,z)
Ejemplo 9:
teta=0:pi/80:8*pi;
x=1+2*cos(teta);
y=1+2*sin(teta);
z=4*teta;
plot3(x,y,z)
axis([-1 3 -1 3 0 120]);
xlabel('eje x')
ylabel('eje y')
zlabel('eje z')

anloga

su

homloga

Grficos en 2 y 3
dimensiones
Representacin grfica de superficies
mesh(X,Y,Z)
Creacin de una malla [X, Y]=meshgrid(x,y)
mesh(X,Y,Z) grfica de la malla construida sobre la
superficie Z
meshz(X,Y,Z) adems hace una proyeccin sobre el
plano Z=0
meshc(X,Y,Z) adems crea lneas de contorno en el plano
Z=0
hidden off desactiva le eliminacin de lneas escondidas
hidden on situacin previa

Grficos en 2 y 3
dimensiones
Ejemplo 10:
x=[0:2:200];
y=[0:50];
[X Y]=meshgrid(x,y);
length(x),length(y)
size(X), size(Y)
Z=X.^2-Y.^2;
figure(1);mesh(X,Y,Z)
figure(2);meshz(X,Y,Z)
figure(3);meshc(X,Y,Z)

Grficos en 2 y 3
dimensiones

Tambin se puede graficar mallas en 3-D con


surf(X,Y,Z), surfc(X,Y,Z) y surfl(X,Y,Z).
Una forma distinta de representar funciones
tridimensionales es por medio de isolneas o
curvas de nivel. Con contour(X,Y,Z) y con
contour3(X,Y,Z) generamos las lneas de nivel
de una superficie.
Existen etiquetas especiales, primero necesitamos
saber
los
valores
del
contorno
cs=contour(X,Y,Z) y luego ponemos clabel(cs).
pcolor(Z) dibuja una proyeccin con sombras de
color sobre el plano, la gama de colores est en
consonancia con las variaciones de la matriz Z.

Grficos en 2 y 3
dimensiones
La funcin surf y pcolor tiene diversas posibilidades
referentes a la forma en que son representadas las
facetas o polgonos coloreados (shading) . Las tres
posibilidades son las siguientes:

shading flat: determina sombreado con color constante


para cada polgono. Este sombreado se llama plano o
flat.
shading interp: establece que el sombreado se calcular
por interpolacin de colores entre los vrtices de cada
faceta. Se llama tambin sombreado de Gouraud
shading faceted: consiste en sombreado constante con
lneas negras superpuestas. Esta es la opcin por
defecto.

Grficos en 2 y 3
dimensiones
colormap(mapa de colores) distintas

escalas

de

colores
colorbar() barra con la escala de colores.
[X,Y,Z]=peaks(n) funcin de ejemplo de dos variables
[X,Y,Z]=sphere(n) dibuja una representacin de la
esfera unidad con n puntos de discretizacin
[X,Y,Z]=cylinder(rad,n) dibuja una representacin de
un cilindro unidad con n puntos igualmente espaciados
cuya seccin viene dada por la curva cuyos radios se
guardan en el vector rad. (1,1) y 20 valores por
defecto.
fill3(x,y,z,c) polgonos tridimensionales

Grficos en 2 y 3
dimensiones

GRFICOS: 2D Y 3D______________________________
Ejercicio 5.2 Representar la
revolucin obtenida al girar la
alrededor del eje x (x=0:0.1:1)

superficie de
curva y=x2+1

x=0:0.1:1;
%puntos de discretizacion del eje x
rad=x.^2+1;
%vector de radios
n=length(rad);
%numero de radios
cylinder(rad,n)
%representacion del cilindro
[X,Y,Z]=cylinder(rad,n);
h=surf(X,Y,Z);
%manejador del objeto
rotate(h,[0,1,0],90)
xlabel('eje x')
ylabel('eje y')
zlabel('eje z')
view(15,15)
%cambiamos el punto de
observacion
grid of
axis([-1 1 -2 2 -1.5 2.5])
legend('f(x)=x^2+1')

GRFICOS: 2D Y 3D______________________________

ToolBox de Matemtica
Simblica
Hasta ahora hemos aprendido a usar MATLAB como una
calculadora de gama alta, programable, capaz de realizar
y manipular grficos, pero an la calculadora ms
potente tiene sus limitaciones, slo manipulan nmeros.
El MATLAB bsico debe tener nmeros con los que
trabajar, o variables a las que se les a asignado un valor
numrico, por ejemplo, no podemos preguntar a MATLAB
por el seno de una variable a la que no se le a asignado
valor previamente.
Ahora estudiaremos como conseguir que MATLAB
manipule expresiones de este tipo (expresiones
simblicas), formadas por smbolos matemticos y no
solamente nmeros.

Programacin en Matlab
Comandos de entrada salida

input: nos permite introducir datos


Variable_numrica=input('mensaje a pantalla');
Variable_de_texto=input('mensaje a pantalla', 's');
disp: muestra un texto por pantalla
disp('El algoritmo no ha convergido')
menu: genera un men grfico que permite al usuario elegir
entre distintas opciones
opcion=menu('titulo del mensaje', 'opcion1','opcion2',...)
error: informa de la existencia de un error y detiene la
ejecucin del programa devolviendo el control al teclado

Programacin en Matlab
Sentencia if

Bifurcacin mltiple

if condicin1
if condicin
sentencias
end

bloque1
elseif condicin2
bloque2
elseif condicin3
bloque3

Si no existe, significa que no


se hace nada en caso de
que no se cumplan las 3
condiciones

else
bloque4
end

Programacin en Matlab
Sentencia switch

switch switch_expresion
case case_expr1,

El resultado debe
ser un escalar o un
string

bloque1
case {case_expr2, case_expr3, ...}
bloque2
...
otherwise,
bloque3
end

Programacin en Matlab
Sentencia for

for i = 1:n
sentencias
end

for i =
vectorValores
sentencias
end
for i = 1:m

for i = n:-0.2:1

for j = 1:n

sentencias
end

sentencias
end
end

Programacin en Matlab
Sentencia
while

while
condicin
sentencias
end

Sentencia break
Hace que se termine la
ejecucin del bucle for o
while
Sentencia continue
Hace que se pase
inmediatamente a la
sgte. iteracin del bucle
for o while

Programacin en
Matlab
Operadores relacionales y lgicos

Menor: < Menor o igual:<=


Mayor: > Mayor o igual: >=
Igual: == Distinto: ~=
O: | Y: & no: ~
El resultado de realizar operaciones relacionales o
lgicas ser un 1 si es verdadera o un 0 si es falsa.
Otras funciones relacionales o lgicas
any(x): si x es un vector devuelve un 1 si alguna
componente de x es no nula. Si es una matriz
devuelve un vector fila con un 1 para cada columna
de la matriz x que tenga alguna de sus filas no nulas
y 0 en otro caso.

Programacin en
Matlab
all(x): Si es un vector devuelve un 1 si todas sus

componentes son no nulas. Si es una matriz


devuelve un vector fila con un 1 para cada
columna de la matriz x que tenga todas de sus
filas no nulas y 0 en otro caso.
isempty(x): devuelve un 1 si la matriz x es vaca
y 0 en caso contrario.
isequal(x1,x2,,xn): Devuelve un 1 si todas las
matrices son idnticas y un 0 en caso contrario.
isnumeric(x): Devuelve 1 si es x un valor
numrico y un 0 si es de otro tipo.
ischar(x): Devuelve 1 si es x cadena de texto y
un 0 si es otro tipo de dato.

Programacin en Matlab
Todos los ficheros de comandos Matlab deben de
llevar la extensin .m hay 2 tipos:
Ficheros de funcin (function) la primera lnea es
ejecutable y comienza con la palabra function
Ficheros de programa (script) no constituyen
funciones y se construye mediante una secuencia
de comandos se ejecuta tecleando el nombre sin
extensin.

Programacin en Matlab
El archivo tipo script solo puede ejecutarse a continuacin
del >> de Matlab o como una lnea de otro fichero, una
funcin puede ser llamada desde cualquier expresin.
El script no admite argumentos de entrada, simplemente
trabaja con datos existentes en el espacio de trabajo.
Las variables de una funcin son locales de la funcin y
las de un script son globales.
Si queremos que una variable sea compartida por varias
funciones a de definirse en todas ellas como global.
global variable1 variable2 variable3

Programacin en Matlab
Programacin de funciones
La primera lnea es ejecutable y empieza por la palabra
function de la forma:
function arg_salida=nombre_funcion(arg_entrada)
Despus cuantos comandos sean necesarios incluidos
comentarios como si se tratase de un fichero tipo script. El
fichero se debe guardar con nombre_funcion.m
Para devolver el control al programa desde cualquier punto
de una funcin basta con escribir la sentencia return.

Programacin en Matlab
Ejemplo 1:
function temp_c=fconvert(temp_f)
% Archivo tipo Funcin
% Convierte F A C
temp_c=5/9*temp_f-5/9*32;
Ejemplo 2:
% Archivo tipo Script
% Convierte F A C
clear
temp_f=100
temp_c=5/9*temp_f-5/9*32

Programacin en Matlab
function t=gases(p,v,n)
%t=gases(p,v,n)
%Funcin que considera la ley de los gases ideales
%Argumentos de entrada:
%presin p (atmosferas)
%volumen v (litros)
%nmero de moles n
%Argumentos de salida:
%temperatura t (grados kelvin)
%R=0.0821 atm.litro/mol.grado
R=0.0821
t=p*v/(n*R);

Programacin en Matlab
Nmero de argumentos de la funcin
nargin devuelve el nmero de argumentos de entrada
con los que el usuario ha llamado a la funcin
nargout devuelve el nmero de argumentos de salida
con los que el usuario ha llamado a la funcin
nargchk chequea si el nmero de argumentos de
entrada calculados con nargin esta entre el valor
mximo y mnimo previsto, si no da error.
nargchk(mnimo, mximo, nmero_entrada)

Programacin en
Matlab
Tcnicas para mejorar el desempeo
Vectorizar lazos
Calcular 1001 valores en el rango de 0 10:
i = 0;
for t = 0:0.01:10
i = i + 1;
y(i) = sin(t);
end
Versin vectorizada:
t = 0:0.01:10;
y = sin(t);

Programacin en
Matlab
Preasignar arreglos
Sin preasignacin
x = 0;
for k = 2:1000
x(k) = x(k-1) + 5;
end
Con preasignacin
x = zeros(1, 1000);
for k = 2:1000
x(k) = x(k-1) + 5;
end

Interfaz Grfica de Usuario (GUI) en


Matlab
GUIDE es un entorno de programacin visual
disponible en MATLAB para realizar y ejecutar
programas que necesiten ingreso continuo de
datos. Tiene las caractersticas bsicas de todos
los programas visuales como Visual Basic o Visual
C++.

También podría gustarte