Curso: Métodos Numéricos Aplicados a la Minería Facultad: Escuela: Año Académico: Año de estudios: Docente: 1
FAIN Ingeniería de Minas 2014 Tercero MSc. Javier Lozano Marreros
2
Gráficas Cálculo numérico computacional
Lenguaje de programación MATLAB MAT MA Trix LABoratory LAB oratory
Toolboxes 3
Simulink
ENTORNO DE DESARROLLO
4
VENTANA DE COMANDOS
Prompt
5
Carpeta de trabajo por defecto
>>instrucciones a ejecutar
6
EDITOR DE CODIGO
Se pulsa para ejecutar el programa
7
VENTANA DE GRÁFICOS
8
VARIABLES
9
No requiere declarar variables. La variable se crea mediante asignación directa. Las variables deben empezar con una letra, seguida por cualquier número de letras, dígitos o guiones de subrayado. Los caracteres de puntuación no son permitidos en las variables. Las variables son sensibles a las mayúsculas, por lo que las siguientes variables son diferentes: Minas , minas
MATRICES Y ARREGLOS Arreglo unidimensional (vector)
SINTAXIS (VECTOR FILA): v = [v1,v2,v3, … ,vn] v = [v1
v2
v3
…
SINTAXIS (VECTOR COLUMNA): v = [v1;v2;v3; … ,vn] 10
vn]
EJEMPLOS Vector fila >> x=[1 2 3] x = 1 2 >> sin(x) ans = 0.8415 11
3
0.9093
0.1411
EJEMPLOS Vector columna >> y=[10; 20; 30] y = 10 20 30 >> sqrt(y) ans = 3.1623 4.4721 5.4772 12
OTRAS FORMAS DE CREAR UN VECTOR 1. Con el operador dos puntos(:) SINTAXIS Var = [Vinicial:Inc: Vfinal] Var = Vinicial:Inc: Vfinal Donde:
Var: Inc:
variable incremento
Vinicial: valor inicial Vfinal:
13
Valor final
OTRAS FORMAS DE CREAR UN VECTOR Ejemplos: >> x=[0:0.2:1] x = 0 0.2000 0.4000
0.6000
0.8000 1.0000
>> y=-1:.5:3 y = -1.0000 1.0000 3.0000 14
-0.5000 1.5000
0 2.0000
0.5000 2.5000
OTRAS FORMAS DE CREAR UN VECTOR 2. Con la función linspace() SINTAXIS
linspace(Vi, Vf, NE) Donde: Vi : valor inicial Vf : valor final NE : numero de elementos 15
EJEMPLOS >> t=linspace(0,pi,5) t = 0
0.7854
1.5708
2.3562
3.1416
>> a=linspace(-1,2,6) a = -1.0000 1.4000
16
-0.4000 2.0000
0.2000
0.8000
OTRAS OPCIONES
17
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. v(n)
EJEMPLO >> a=linspace(-1,2,6) a = -1.0000 0.8000 >> a(4) ans = 0.8000 18
-0.4000 1.4000
0.2000 2.0000
EJEMPLO >> a=linspace(-1,2,6) a = -1.0000 0.8000
-0.4000 1.4000
0.2000 2.0000
>> a(2:4) ans = -0.4000 19
0.2000
0.8000
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 20
0.5000
0 1.5000 3.0000
2.0000
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 21
3
0 1.5000 3.0000
EJEMPLO >> y=-1:.5:3 y = -1.0000 -0.5000 0.5000 1.0000 2.0000 2.5000 >> length(y) ans = 9 22
0 1.5000 3.0000
MATRICES Arreglos bidimensionales a11 a 21 a m1
a12 a22
am 2
a1n a2 n amn
1 4 7
2
3
5
6
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 23
EJEMPLO
Crea la matriz de 4 filas y 3 columnas
>> A=[1,4,-3;5,-7,8;2,5,1;5,6,2] A =
24
1
4
-3
5
-7
8
2
5
1
5
6
2
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
A(:, j)
Devuelve los elementos de la j –ésima columna de la matriz A
25
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 26
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 27
8
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 28
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]) ans = -7 5 6
29
8 1 2
%muestra una submatriz
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.
zeros(m,n) Crea la matriz de orden mxn, cuyos elementos son ceros.
30
ones(m,n) Crea la matriz de orden mxn, cuyos elementos son unos.
rand(m,n) Crea la matriz aleatoria de orden mxn.
size(A) Devuelve el orden(tamaño) de la matriz A
31
A’ Devuelve la matriz traspuesta de la matriz A
det(A) Devuelve la determinante de una matriz.
inv(A) Devuelve la matriz inversa de la matriz A
32
VARIABLES CARÁCTER
Una variable carácter es una cadena de caracteres incluidos entre comillas simples
SINTAXIS C = ’cadena de caracteres’
33
OPERADORES OPERACIONES ARITMÉTICAS x^y potencia xy x/y división x/y x*y producto xy x-y diferencia x-y x+y suma x+y 34
OPERADORES ARITMÉTICOS + 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 35
OPERADORES ARITMÉTICOS .* 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)]
36
OPERADORES RELACIONALES
< > <= >= == ~= 37
menor que mayor que menor o igual que mayor o igual que igualdad diferente a
OPERADORES LÓGICOS
~ & | 38
negación conjunción disyunción
PROGRAMACIÓN
EN MATLAB PROGRAMAS QUE SE EJECUTAN EN LA VENTANA DE COMANDOS
39
Entrada de datos LA FUNCIÓN input LEER
variable
= input(‘texto’) variable = input(‘texto’,'s') variable
40
Ejemplos LEER
N, f(x) N = input('ingrese el numero de terminos: ')
txt=input ('Ingrese la funcion f(x):','s'); f = inline(txt);
41
Salida de datos LA FUNCION disp ESCRIBIR variable
disp(variable)
42
Salida de datos LA FUNCION fprintf Escribe una cadena con formato. SINTAXIS cadena = fprintf(‘formato’,variables)
43
Ejemplos Ejemplo1:
disp(‘Mi primer programa'); Ejemplo2:
s=sqrt(b^2-4*a*c); disp(s); Ejemplo3:
x = [2 3 4]; texto1=‘Los valores de x son: ’;
texto2=num2str(x); texto3=[texto1,texto2]; disp(texto3); 44
Ejemplos Ejemplo1: s=sqrt(b^2-4*a*c); fprintf(' %12.8f ', s)
Ejemplo2: fprintf('%12.8f\n',pi)
Ejemplo3: >> x=[-3:.5:3]'; y=x.^2; z=[x y]; >>fprintf('\tX\t\tY\t\n'); >>fprintf('%8.4f %8.4f\n',z')
45
INSTRUCCIÓN DE ASIGNACIÓN
variable = expresion
d
b 4ac 2
d=b^2-4*a*c; 46
SENTENCIAS CONDICIONALES LA SENTENCIA if
V
Condicion
F
if condicion instrucciones o grupo de instrucciones
Instrucciones
end 47
LA SENTENCIA
V
Condicion
F
if else
if condicion
Instrucciones1 else
Instrucciones1
Instrucciones2
Instrucciones2
end
48
LA SENTENCIA
switch
Expresion
valor 1
Inst 1
49
valor 2
Inst 2
valor n-1
valor n
Inst n-1
Inst n
switch expresión case valor 1 Instrucciones1 case valor 2 instrucciones2 ... oterwise Instrucción cuando no cumple ningún caso end
SENTENCIAS REPETITIVAS LA SENTENCIA V = VI, VF, I F
Instrucciones
for
for V=VI:I:VF instrucciones end
50
LA SENTENCIA while
Condicion
F
while condicion instrucciones
V
Instrucciones
51
end
EJEMPLOS DE PROGRAMAS EN MATLAB
52
EJEMPLO 1.
Diseñar el diagrama de flujo de programas, y escribir el programa en MATLAB, que calcule la suma de los n primeros términos de la sucesión 1, x,
53
x
2
2!
,
x
3
3!
,
x
4
4!
,
DIAGRAMA DE FLUJO
INICIO
LEER n , x P = 1 F = 1 S = 1 i = 1, n-1
P = P*x F = F*i S = S + P/F
ESCRIBIR S
54
Código en MATLAB Scripts Un script es una secuencia de instrucciones de MATLAB guardada en un archivo con extensión .m Para ejecutar el programa: Pulsar F5 Escribir el nombre del archivo en el prompt de la ventana de comandos.
55
Código para la entrada de datos LEER n , x
n=input(‘Ingrese n: ’); x=input(‘Ingrese x: ’);
56
Código para el proceso de datos P = 1 F = 1 S = 1
i = 1, n-1
P = P*x F = F*i S = S + P/F
57
P=1; F=1; S=1; for i=1:n-1 P=P*x; F=F*i; S=S+P/F; end
Código para la salida de datos ESCRIBIR S
disp(S);
58
CODIGO COMPLETO DEL PROGRAMA
59
Ventana de ejecución del ejemplo
60
PROGRAMACIÓN VISUAL GUIDE
CON MATLAB
PROGRAMACIÓN VISUAL CON MATLAB
GUIDE
62
ACCESO AL GUIDE DEL MATLAB
63
EL GUIDE DEL MATLAB En el formulario se insertan los objetos que formaran parte de la interfaz de usuario Run
Objeto Formulario Paleta de componentes
64
Inspector de propiedades Para cambiar las propiedades de un objeto primero se debe de seleccionar el objeto
65
INTERFAZ DE USUARIO PARA EL EJEMPLO VENTANA DE DISEÑO Objeto static text
Objeto edit text
Objeto push button
66
PARA INGRESAR EL CODIGO EN EL BOTON ACEPTAR
67
FUNCION DONDE SE INGRESARA EL CÓDIGO
68
Entrada de datos LA FUNCION get Permite consultar y cambiar el valor de las propiedades de un objeto. SINTAXIS get(handles.Nom_obj,'prop');
Donde: Nom_obj: nombre del objeto handles.Nom_obj: hace referencia al objeto de la interfaz 'prop.’:
69
grafica de usuario. es la propiedad del objeto.
LA FUNCION get EJEMPLO: texto=get(handles.edit1,'string');
Esta instrucción captura el dato que se ha ingresado en el control Edit Text (edit1) y lo asigna a la variable texto. x=str2double(get(handles.edit2,'string'));
Esta instrucción captura el dato que se ha ingresado en el control Edit Text (edit2), lo convierte a numero real y lo asigna a la variable x. 70
Salida de datos LA FUNCION set Muestra el valor de las propiedades de un objeto. SINTAXIS set(handles.Nom_obj, 'prop.',v_prop);
Donde: Nom_obj: Es el nombre del objeto handles.Nom_obJ: hace referencia al objeto que se 'prop.‘: V_prop:
71
encuentra en el formulario. es la propiedad del objeto, es el nuevo valor de la propiedad.
LA FUNCION set
EJEMPLOS: set(handles.edit5,'string',120); Esta instrucción escribe el numero 120 en el control Edit Text (edit5). set(handles.edit7,'string','No existe raiz');
Esta instrucción escribe el texto “ No existe raiz” en el control Edit Text (edit7).
72
LA FUNCION sprintf Escribe una cadena con formato. Retorna una cadena. SINTAXIS cadena = sprintf(‘formato’,variables) EJEMPLO: sprintf('x%d = %10.6f', 4, pi)
muestra el siguiente resultado:
x4 = 3.141593
cad = sprintf('x%d = %10.6f', 4, pi)
El resultado x4 = 3.141593 lo guarda en la cadena cad
73
EJEMPLO Diseñar el diagrama de flujo de programas, y escribir el programa en MATLAB, que calcule la suma de los n primeros términos de la sucesión: 1, x, x, 74
x
2
2!
,
x
3
3!
,
x
4
4!
,
DIAGRAMA DE FLUJO
INICIO
LEER n , x P = 1 F = 1 S = 1 i = 1, n-1
P = P*x F = F*i S = S + P/F
ESCRIBIR S
75
Código para la entrada de datos LEER n , x
n=str2double(get(handles.edit1,’string’)); x=str2double(get(handles.edit2,’string’));
76
Código para el proceso de datos P = 1 F = 1 S = 1
i = 1, n-1
P = P*x F = F*i S = S + P/F
77
P=1; F=1; S=1; for i=1:n-1 P=P*x; F=F*i; S=S+P/F;
Código para la salida de datos ESCRIBIR S
set(handles.edit3,'string',S);
78
CODIGO COMPLETO DEL PROGRAMA
79
Ventana de ejecución del ejemplo
80