Sunteți pe pagina 1din 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 un instante determinado se
teclea:
>> who
o bien
>> whos
Para eliminar alguna variable se ejecuta
>> clear variable1 variable2

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 long (15 o 7 decimales) (16 u 8 dgitos)
>> format short (4 decimales)
>> format short e (notacin exponencial)
>> format long e (notacin exponencial)
>> format rat (aproximacin racional)

Variables predefinidas en Matlab:
i = (-1)

pi = t 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) raiz cuadrada
abs(x) mdulo de x
exp(x) calcula e
x
log(x) (en base e)
log10(x)
sin(x) cos(x) tan(x)
asin(x) [-t/2 t/2] acos(x) [0 t] atan(x) [-t/2 t/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:

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/m
2
.
Nota: 1 N/m
2
=9.265*10
-6
atm

2
132 . 0 44 . 5 0 . 21 T T P + =
Funcionamiento de Matlab
Ejercicio 1.4 Segn Hill y Lounasmaa, la ecuacin de la curva
de inversin del helio es:

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/m
2
.
Nota: 1 N/m
2
=9.265*10
-6
atm

2
132 . 0 44 . 5 0 . 21 T T P + =
Funcionamiento de Matlab
Ejercicio 1.4 Segn Hill y Lounasmaa, la ecuacin de la curva
de inversin del helio es:

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/m
2
.
Nota: 1N/m
2
=9.265*10
-6
atm

2
132 . 0 44 . 5 0 . 21 T T P + =
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 3 5
6 9 2
4 8 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 10
a
y 10
b
. 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
Solucin exacta
y(x)=x
2
+cos(x)
%Error
0 1.0030
0.2 1.0234
0.4 1.0825
0.6 1.1869
0.8 1.3342
1 1.5415
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






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.



|
|
|
|
|
|
.
|

\
|

4 7 2 0 0
0 11 13 0 0
0 0 0 0 0
8 0 0 3 7
0 0 0 4 12
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 y calcular el producto.




|
|
|
.
|

\
|

=
|
|
|
.
|

\
|
=
5 2 1
4 0 2
1 2 4

5 2 4
4 3 2
3 2 1
b a
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
x
3
+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 2x
3
+4x
2
+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,p2]=residue(r,p,k) hace la operacin inversa

) (
) (
) (
) 1 (
) 1 (
) ( 2
) ( 1
x k
n p x
n r
p x
r
x p
x p
+

+ +

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


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


4 3
1
2 3
2 3
+
+ +
x x
x x
1
) 1 ( 9
1
) 2 ( 3
13
) 2 ( 9
35
4 3
1
2 2 3
2 3
+
+
+

=
+
+ +
x x x x x
x x
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 x
3
+6x
2
+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:


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/m
2
.
Nota: 1N/m
2
=9.265*10
-6
atm

2
132 . 0 44 . 5 0 . 21 T T P + =
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.
teta=0:pi/360:pi/4;
f1=(2*teta-cos(2*teta))/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)])





4 . 0
2
) 2 cos( 2
=
x x
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 atml
2
/mol
2
,
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
RT b V
V
a
P = + ) )( (
2
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 anloga a su homloga 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')

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 superficie de revolucin obtenida al
girar la curva y=x
2
+1 alrededor del eje x (x=0:0.1: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 off
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
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
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
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
Sentencia if
if condicin
sentencias
end
if condicin1
bloque1
elseif condicin2
bloque2
elseif condicin3
bloque3
else
bloque4
end
Bifurcacin mltiple
Si no existe, significa que no se
hace nada en caso de que no se
cumplan las 3 condiciones
Programacin en Matlab
Sentencia switch
switch switch_expresion
case case_expr1,
bloque1
case {case_expr2, case_expr3, ...}
bloque2
...
otherwise,
bloque3
end
El resultado debe ser
un escalar o un string
Programacin en Matlab
Sentencia for
for i = 1:n
sentencias
end
for i = vectorValores
sentencias
end
for i = n:-0.2:1
sentencias
end
for i = 1:m
for j = 1:n
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
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++.

S-ar putea să vă placă și