Está en la página 1de 72

UNIDAD 01_B: LENGUAJE DE PROGRAMACIN

Facultad: Escuela: Ao Acadmico: Docente: FIAG ESIC 2013 MSc. Javier Lozano Marreros
MSc. Javier Lozano Marreros

LENGUAJE DE PROGRAMACIN:

MATLAB

MSc. Javier Lozano Marreros

Introduccin a Matlab
M A T L A B = (MATrix LABoratory - Laboratorio de matrices)

Es un medio computacional tcnico, con un gran desempeo para el clculo numrico computacional y de visualizacin. MATLAB integra anlisis numrico, matrices, procesamiento de seales y grficas, todo esto en un ambiente donde los problemas y soluciones son expresados tal como se escriben matemticamente.

MSc. Javier Lozano Marreros

MATLAB,

es un lenguaje de programacin amigable al usuario con caractersticas ms avanzadas y mucho ms fciles de usar que los lenguajes de programacin como Pascal o C
MATLAB

cuenta con paquetes de funciones especializadas llamadas toolboxes y un entorno Visual similar al Visual Basic o al C++ Builder.

MSc. Javier Lozano Marreros

ENTORNO DE DESARROLLO

MSc. Javier Lozano Marreros

VENTANA DE COMANDOS

Prompt

Carpeta de trabajo por defecto

MSc. Javier Lozano Marreros

>>instrucciones a ejecutar

MSc. Javier Lozano Marreros

EDITOR DE CDIGO

Se pulsa para ejecutar el programa

MSc. Javier Lozano Marreros

VENTANA DE GRFICOS

MSc. Javier Lozano Marreros

10

VARIABLES
No requiere declarar variables. La variable se crea mediante asignacin directa.

Las variables deben empezar con una letra, seguida por cualquier nmero de letras, dgitos o guiones de subrayado. Los caracteres de puntuacin no son permitidos en las variables.
Las variables son sensibles a las maysculas, por lo que las siguientes variables son diferentes: Faci , faci, FACI
MSc. Javier Lozano Marreros

11

MATRICES Y ARREGLOS
Arreglo unidimensional (vector)

SINTAXIS (VECTOR FILA):

v = [v1,v2,v3, ,vn] v = [v1 v2 v3 vn]


SINTAXIS (VECTOR COLUMNA):

v = [v1;v2;v3; ,vn]
MSc. Javier Lozano Marreros

12

EJEMPLOS
Vector fila >> x=[1 2 3] x = 1 2

>> sin(x) ans = 0.8415

0.9093

0.1411
13

MSc. Javier Lozano Marreros

EJEMPLOS
Vector columna >> y=[10; 20; 30] y = 10 20 30 >> sqrt(y) ans = 3.1623 4.4721 5.4772
MSc. Javier Lozano Marreros

14

OTRAS FORMAS DE CREAR UN VECTOR


1. Con el operador dos puntos(:) SINTAXIS

Var = [Vinicial:Inc:Vfinal] Var = Vinicial:Inc:Vfinal


Donde: Var: Inc: Vinicial: Vfinal: variable incremento valor inicial Valor final 15

MSc. Javier Lozano Marreros

OTRAS FORMAS DE CREAR UN VECTOR Ejemplos:


>> x=[0:0.2:1] x = 0 0.2000 0.4000
>> x=[0:.2:1] x = 0 0.2000 0.4000

0.6000

0.8000 1.0000

0.6000

0.8000 1.0000

MSc. Javier Lozano Marreros

16

OTRAS FORMAS DE CREAR UN VECTOR

Ejemplos:
>> y=-1:.5:3 y = -1.0000 0.5000 2.0000

-0.5000 1.0000 2.5000

0 1.5000 3.0000

MSc. Javier Lozano Marreros

17

OTRAS FORMAS DE CREAR UN VECTOR


2. Con la funcin SINTAXIS

linspace()

linspace(Vi, Vf, NE)


Donde:

Vi : valor inicial Vf : valor final NE : numero de elementos


MSc. Javier Lozano Marreros

18

EJEMPLO
>> t=linspace(0,pi,5)
t = 0

0.7854

1.5708

2.3562

3.1416

Linspace()
describe una relacin lineal de espaciado entre sus elementos.

MSc. Javier Lozano Marreros

19

EJEMPLO
>> a=linspace(-1,2,6) a =
-1.0000 0.8000 -0.4000 1.4000 0.2000 2.0000

MSc. Javier Lozano Marreros

20

OTRAS OPCIONES
v(n)

Devuelve el n-simo elemento del vector v x(a:b) Devuelve los elementos del vector x situados entere el a-esimo y b-simo elemento, y ambos inclusive x(a:p:b) Devuelve los elementos del vector x situados entere el a-esimo y b-simo elemento, y ambos inclusive, pero separados de p en p unidades. x([1,3,5]) Devuelve el primero, tercero y quinto elemento. length(x) Devuelve el numero de elementos del vector.
MSc. Javier Lozano Marreros

21

EJEMPLO
>> a=linspace(-1,2,6) a = -1.0000 -0.4000 0.2000 0.8000 1.4000 2.0000 >> a(4) ans = 0.8000
MSc. Javier Lozano Marreros

22

EJEMPLO
>> a=linspace(-1,2,6) a = -1.0000 -0.4000 0.2000 0.8000 1.4000 2.0000 >> a(2:4) ans = -0.4000

0.2000
MSc. Javier Lozano Marreros

0.8000
23

EJEMPLO
>> y=-1:.5:3 y = -1.0000 -0.5000 0.5000 1.0000 2.0000 2.5000 >> y(1:3:5) ans = -1.0000

0 1.5000 3.0000

0.5000
MSc. Javier Lozano Marreros

2.0000
24

EJEMPLO
>> y=-1:.5:3 y = -1.0000 -0.5000 0.5000 1.0000 2.0000 2.5000 >> y([1,3,9]) ans = -1 0

0 1.5000 3.0000

3
25

MSc. Javier Lozano Marreros

EJEMPLO
>> y=-1:.5:3 y = -1.0000 -0.5000 0.5000 1.0000 2.0000 2.5000 >> length(y) ans = 9
MSc. Javier Lozano Marreros

0 1.5000 3.0000

26

MATRICES
Arreglos bidimensionales
a11 a 21 a m1 a12 a22 am 2 a1n a2 n amn

1 2 3 4 5 6 7 8 9

Para representar una matriz de mxn elementos SINTAXIS


M=[a11,a12,...,a1n; a21,a22,...,a2n;...;am1,am2,...,amn]

En lugar de las comas se pueden utilizar espacios


MSc. Javier Lozano Marreros

27

EJEMPLO
Crea la matriz de 4 filas y 3 columnas

>> A=[1,4,-3;5,-7,8;2,5,1;5,6,2]
A =

1 5 2 5

4 -7 5 6

-3 8 1 2
MSc. Javier Lozano Marreros

28

Opciones para manipular los elementos de una matriz


A(i,j)
Define (devuelve) el elemento de la matriz A que esta ubicado en la fila i y en la columna j.

A(i, :)

Devuelve los elementos de la i-sima fila de la matriz A


Devuelve los elementos de la jsima columna de la matriz A
MSc. Javier Lozano Marreros

A(:, j)

29

EJEMPLO
>> A=[1,4,-3;5,-7,8;2,5,1;5,6,2] A = 1 4 -3 5 -7 8 2 5 1 5 6 2 >> A(2,3) ans = 8
MSc. Javier Lozano Marreros

30

EJEMPLO
>> A=[1,4,-3;5,-7,8;2,5,1;5,6,2] A = 1 4 -3 5 -7 8 2 5 1 5 6 2 >> A(2,:) ans = 5 -7

8
MSc. Javier Lozano Marreros

31

EJEMPLO
>> A=[1,4,-3;5,-7,8;2,5,1;5,6,2] A = 1 4 -3 5 -7 8 2 5 1 5 6 2 >> A(:,3) ans = -3 8 1 2
MSc. Javier Lozano Marreros

32

EJEMPLO
>> A=[1,4,-3;5,-7,8;2,5,1;5,6,2] A = 1 4 -3 5 -7 8 2 5 1 5 6 2 >> A([2:4],[2:3]) %muestra una submatriz

ans =
-7 5 6 8 1 2
MSc. Javier Lozano Marreros

33

MATRICES ESPECIALES diag(A)


Devuelve los elementos de la diagonal de la matriz A como vector columna

eye(n)
Crea la matriz identidad de orden n.

MSc. Javier Lozano Marreros

34

MATRICES ESPECIALES zeros(m,n)


Crea la matriz de orden mxn, cuyos elementos son ceros.

ones(m,n)
Crea la matriz de orden mxn, cuyos elementos son unos.
35

MSc. Javier Lozano Marreros

MATRICES ESPECIALES rand(m,n)


Crea la matriz aleatoria de orden mxn.

fliplr(A)
Devuelve la matriz cuyas columnas estn colocadas en orden inverso (de izquierda a derecha) a las de A.
MSc. Javier Lozano Marreros

36

MATRICES ESPECIALES size(A)


Devuelve el orden(tamao) de la matriz A

inv(A)
Devuelve la matriz inversa de la matriz A

MSc. Javier Lozano Marreros

37

MATRICES ESPECIALES A
Devuelve la matriz traspuesta de la matriz A

triu(A)
Devuelve la parte triangular superior de la matriz A

MSc. Javier Lozano Marreros

38

MATRICES ESPECIALES tril(A)


Devuelve la parte triangular inferior de la matriz A

det(A)
Devuelve la determinante de una matriz.

MSc. Javier Lozano Marreros

39

VARIABLES CARCTER
Una variable carcter es una cadena de caracteres incluidos entre comillas simples
SINTAXIS

C = cadena de caracteres

MSc. Javier Lozano Marreros

40

PRACTICA
I. D los tamaos de las siguientes matrices: 1. B=[2;4;6;10] 2. C=[5 3 5;6 2 -3] 3. R=[3 5 10 0;0 0 0 3;3 9 9 8] 4. T=[4 24 9] 5. Q=[T 0 T] 6. V=[C(2,1);B] 7. A(2,1)=-3

MSc. Javier Lozano Marreros

41

II. Dada la matriz: G=[1 2 3 7; 8 1 -1 -2; 6 8 9 1; 1 1 3 2; 1 -3 -5 6] Indique el contenido de las siguientes matrices: 1. A=G(:,2) 2. T1=G(4:5,1:3) 3. T2=G(1:2:5,:)

MSc. Javier Lozano Marreros

42

OPERADORES
OPERACIONES ARITMTICAS x^y potencia xy x/y divisin x/y x*y producto xy x-y diferencia x-y x+y suma x+y
MSc. Javier Lozano Marreros

43

OPERADORES
OPERADORES ARITMTICOS + Suma de escalares, vectores o matrices. - resta de escalares, vectores o matrices. * producto de escalares, vectores o matrices. / cociente escalar o B/A=B*inv(A). A y B son matrices

MSc. Javier Lozano Marreros

44

OPERADORES
OPERADORES ARITMTICOS .* producto de escalares o vectores (elemento a elemento). ./ A./B = [A(i,j)/B(i,j)] ^ potencia de escalares o potencia escalar de matriz (Mp) .^ potencia de vectores A.^B = [A(i,j)B(i,j)]
MSc. Javier Lozano Marreros

45

OPERADORES
OPERADORES RELACIONALES

< > <= >= == ~=

menor que mayor que menor o igual que mayor o igual que igualdad diferente a
MSc. Javier Lozano Marreros

46

OPERADORES
OPERADORES LGICOS

~ & |

negacin conjuncin disyuncin


MSc. Javier Lozano Marreros

47

SENTENCIAS DE CONTROL
SENTENCIAS CONDICIONALES

LA SENTENCIA

if

Condicion

if condicion
instrucciones o grupo de instrucciones

Instrucciones

end
MSc. Javier Lozano Marreros

48

SENTENCIAS CONDICIONALES

LA SENTENCIA
V F

if else
if condicion Instrucciones1 else Instrucciones2 end

Condicion

Instrucciones1

Instrucciones2

MSc. Javier Lozano Marreros

49

LA SENTENCIA

switch
switch expresin case valor 1 Instrucciones1 case valor 2 instrucciones2 ... oterwise Instruccin cuando no cumple ningn caso end 50

Expresion

valor 1 Inst 1

valor 2 Inst 2

valor n-1

valor n Inst n

Inst n-1

MSc. Javier Lozano Marreros

SENTENCIAS REPETITIVAS
LA SENTENCIA for

V = VI, I, VF

Instrucciones

for V=VI:I:VF instrucciones end

MSc. Javier Lozano Marreros

51

LA SENTENCIA

while

Condicion

V Instrucciones

while condicion instrucciones end

MSc. Javier Lozano Marreros

52

PROGRAMACIN

EN MATLAB
PROGRAMAS QUE SE EJECUTAN EN LA VENTANA DE COMANDOS

MSc. Javier Lozano Marreros

53

Entrada de datos
LA FUNCIN input Para la entrada de datos se utiliza la funcin input SINTAXIS var = input (texto);
Donde var es un identificador vlido, en la que se va a almacenar el valor que se va a ingresar por teclado.

Ejemplo:
a=input('ingrese el coeficiente a: ')
MSc. Javier Lozano Marreros

54

Salida de datos
LA FUNCION

disp

Para la salida de datos se utiliza la funcin disp SINTAXIS var = disp (expresion);
Donde expresin puede ser una variable o cadena de caracteres.

Ejemplo: disp('La suma es: '); disp(s);


MSc. Javier Lozano Marreros

55

Salida de datos
LA FUNCION fprintf Escribe una cadena con formato. SINTAXIS cadena = fprintf(formato,variables) Ejemplo: fprintf(' %8.6f ', x) muestra la variable x con un campo de 8 espacios y con 6 decimales
MSc. Javier Lozano Marreros

56

Salida de datos
LA FUNCION

sprintf

Escribe una cadena con formato. Retorna una cadena. SINTAXIS cadena = sprintf(formato,variables) Ejemplo: cad = sprintf(' %8.6f ', x) muestra la variable x con 6 decimales
MSc. Javier Lozano Marreros

57

FUNCIONES EN MATLAB
Funciones que manipulan variables carcter
str2num(cadena) convierte la cadena de caracteres en valor numrico. La cadena puede ser una matriz. str2double(cadena) convierte la cadena de caracteres en valor numrico real.
MSc. Javier Lozano Marreros

58

Funciones para la salida de datos


LA FUNCION fprintf Escribe una cadena con formato. SINTAXIS cadena = fprintf(formato,variables) Ejemplo: fprintf(' %8.6f ', x) muestra la variable x con un campo de 8 espacios y con 6 decimales
MSc. Javier Lozano Marreros

59

LA FUNCION

sprintf

Escribe una cadena con formato. Retorna una cadena. SINTAXIS cadena = sprintf(formato,variables) Ejemplo: cad = sprintf(' %8.6f ', x) muestra la variable x con 6 decimales

MSc. Javier Lozano Marreros

60

Funciones que manipulan variables carcter

Num2str(numero)
convierte en valor numrico la cadena de caracteres.

cad=sprintf(formato,A)
convierte la matriz numrica A, a una cadena con el formato especificado y se guarda en la variable carcter cad
MSc. Javier Lozano Marreros

61

EJEMPLO
Funciones que manipulan variables carcter

>> cad=sprintf(Valor PI=%8.5f',pi) cad = Valor PI = 3.14159

MSc. Javier Lozano Marreros

62

FUNCIONES EN LINEA
LA FUNCION

inline

Convierte una cadena en una funcin


SINTAXIS

f=inline (expresion, arg1, arg2, arg3, ... ,arg N)


EJEMPLO: >> w=inline('x^2+y^2+z^2','x','y','z') w = Inline function: w(x,y,z) = x^2+y^2+z^2
MSc. Javier Lozano Marreros

63

Funciones en MATLAB Funciones creadas por el usuario


SINTAXIS function [a_salida]= nombre_f(a_entrada) Cuerpo de la funcin Donde: function: nombre_f: a_entrada: a_salida:

palabra reservada nombre de la funcin argumentos de entrada argumentos de salida


MSc. Javier Lozano Marreros

64

Funciones creadas por el usuario


1. 2.

3.

4.

5.

La funcin se crea en un archivo Despus de la declaracin de funcin, se pueden insertar comentarios Los resultados se enumeran en la forma [v1, v2, ... , vn]; si es uno, no es necesario poner el corchete. Los datos de entrada se enumeran en la forma (x1, x2, x3,.., xn). Cuando ejecuta la funcin, se debe usar el mismo nombre con el que se guard el archivo
MSc. Javier Lozano Marreros

65

EJERCICIOS
1. 2.

3.
4.

Crear la funcin valor absoluto Crear la funcin que muestre la solucin de una ecuacin cuadrtica. Crear la funcin que convierta grados Farenheit a grados Centigrados. La presin atmosfrica (p) vara en funcin de la altura (h) segn la siguiente expresin:

p = 1035e

-0.12h

donde la altura se mide en kilmetros y la presin en milibares. Escribir una funcin presin que calcule la presin para una altura dada. Mostrar en una grfica cmo vara la presin en funcin de la alturas que toman los valores enteros entre 0km y 30km.

MSc. Javier Lozano Marreros

66

Solucin del ejercicio 2


La ecuacin de segundo grado se define como:

ax bx c 0
Donde: a, b, c: x1, x2: argumentos de entrada (coeficientes) argumentos de salida (races)

MSc. Javier Lozano Marreros

67

Definicion de la funcin e_cuad


Cdigo en MATLAB function [x1,x2]=e_cuad(a,b,c) % cuerpo de la funcion d=b^2-4*a*c; x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a);

Ejecucin (llamada) de la funcin


>>[x1,x2]=e_cuad(1,-3,-4)
MSc. Javier Lozano Marreros

68

Solucin del ejercicio 4


a)Definicion de la funcin presion
Cdigo en Matlab

function p=presion(h) p=1035*exp(-0.14*h);


b) Mostrar en una grfica cmo vara la presin en funcin de la alturas que toman los valores enteros entre 0km y 30km.

>> alturas=0:30; >> presiones=presion(alturas); >> plot(alturas,presiones);


MSc. Javier Lozano Marreros

69

EVALUACIN DE UNA FUNCION


FUNCION

feval

SINTAXIS

feval(f,arg1,arg2,...,argN)
donde f viene a ser el nombre de la funcin (archivo f.m)

MSc. Javier Lozano Marreros

70

EVALUACIN DE UNA FUNCION


EJEMPLO: Evaluar la funcin F(x,y)=x^2+y^2

Contenido del archivo F.m

function z=F(x,y) z=x^2+y^2;


Evaluacin de la funcin >> feval(F',3,4) ans = 25
MSc. Javier Lozano Marreros

71

Funciones matemticas
sin(x) asin(x) sinh(x) asinh(x) log(x) abs(x) cos(x) acos(x) cosh(x) acosh(x) log10(x) sqrt(x)
MSc. Javier Lozano Marreros

tan(x) atan(x) tanh(x) atanh(x) rem(a,b) exp(x)


72