Professional Documents
Culture Documents
Editor:
INDICE
Introduccin
Fundamentos bsicos
Arreglos
Operaciones con arrays
Arreglos bi dimensionales
Construccin de arrays
Ejercicios propuestos de arrays
Matrices
Definicin de matrices desde el teclado
Conceptos bsicos sobre matrices Operaciones con matrices
Suma y Resta de matrices
Multiplicacin de matrices
Productos de un nmero real por una matriz
Matriz inversa
Manipulacin de matrices comandos relacionados con ellos
Funciones que actan sobre matrices
Ejercicios propuestos sobre matrices
Grficos con Matlab
Grficos simples
Tipos y colores de lneas
Ejemplos relacionados con Grficos Ley de Boyle
Ejemplo Calculo del volumen con la Ecuacin de van Der Waals
Ejercicios propuestos con grficos
Grficos 3D Plot3
Grficos de malla: mesh(X,Y,Z) meshz(X,Y,Z) meshc(X,Y,Z)
Grficos de contorno
Polgonos en tres dimensiones
Fundamentos tericos de programacin
Procesamiento de datos
Algoritmos y programas
Partes de un programa
Diagramas de flujo
Aplicaciones de los diagramas de flujo
Elementos bsicos de un programa
Ejercicios
Comando If..ElseEnd
Operadores necesarios algunas variedades del comando IfEnd
Cdigo de programa para determinar si un nmero es par o impar
Cdigo de programa para redondear un nmero de hasta 4 cifras
Uso de if mltiple
Uso de l comando Switch ...End
Comando For...End - Estructura
Ejercicios
Cdigo de programa produccin de amoniaco: Conversin vs Temperatura a
diferentes presiones
Comando WhileEnd - estructura y relaciones
Cdigo de programa para calcular la presin de rocio
9
13
15
18
19
20
21
22
24
25
26
28
30
34
38
38
39
40
41
49
55
64
66
68
69
71
72
73
74
76
77
80
83
84
94
96
97
99
101
103
109
110
116
122
123
Ejercicios propuestos
Ecuaciones lineales
Sistema de ecuaciones lineales parte terica
Aplicaciones con programas mtodo de biseccin
Mtodo de la Regla Falsa
Mtodo de Newton Raspn
Solucin grfica
Ejercicios propuestos
Ajuste de curvas Mtodo mnimos cuadrados
Cdigo de programa grficos
Ajuste de curvas Diferenciacin numrica
Polinomios
Funciones orientadas al clculo con polinomios Ajuste polinomial
Diferenciacin
Uso del Comando diff
Estadstica Descriptiva : media, mediana
Desviacin estndar ejercicios
Integracin numrica Mtodo de Simpson y mtodo abreviado
127
128
130
131
132
133
134
135
137
138
142
142
143
147
148
149
150
152
Bibliografa
156
Prlogo
El hombre que ha dejado de aprender, no merece deambular libremente en
estos das tan peligrosos
M.M. Coady
El presente aporte es como parte del proceso de aprendizaje en las aulas
universitarias, dirigido a los estudiantes de ingeniera de Qumica y otras facultades y/o
escuelas profesionales.
La presentacin del texto se encuentra plasmada en la parte introductoria del presente
texto.
Dedicatoria
A la memoria de Francisco Or Alcntara
JJOC
A la memoria de mis Padres: Apolinario Rojas y Delfina Zacaras
ELRZ
Introduccin
El presente texto constituye un aporte para los estudiantes de la Facultad de Ingeniera
Qumica, la misma que contiene problemas de los exmenes del curso de LENGUAJES DE
PROGRAMACION de los aos 2006 y 2007, as mismo se encuentran las prcticas de
laboratorio correspondientes a las ocho primeras semanas establecidas en el sylabus
correspondiente.
El texto preparado con fines didcticos, escrito usando cdigo del programa MATLAB pueden
ser trasladados a otros programas con pequeas modificaciones, que se deja al estudiante
para estimularlos en su desarrollo y que exploren otros medios de solucin para un problema.
Se considera que el presente texto ser tomado como una versin preliminar y su
perfeccionamiento se har en base a las recomendaciones de los usuarios que sern recibidos
en el siguiente correo electrnico: erojasza@hotmail.com, quedando sumamente agradecido
por sus aportes.
LOS AUTORES
Agradecimiento
Los Autores
FUNDAMENTOS BASICOS
10
11
Tambin; podemos carga el HELP o ayuda del matlab y ubicarnos las principales funciones
que pose el MATLAB para hacer las
operaciones que desea el usuario,
estas mismas funciones se usan
para escribir cdigos de programa.
O presionando la tecla F1 y se
observa la figura siguiente figura.
12
Entre ellas los operadores aritmticos, operadores relacionales y operadores lgicos, tambin
el significado de algunos caracteres especiales usados por el MATLAB.
Una de las primeras funciones que se muestra es abs que sirve para tratar cualquier magnitud
o arreglo. Tambin se muestran las funciones acos y acosd con las cuales se calculan la
inversa de la funcin coseno y los resultados se muestran en radianes y grados
respectivamente.
Cada funcin tiene su parte explicativa y uso para lo cual haremos clik sobre una funcin
determinada, por ejemplo; para ver la sintaxis de la funcin sqrt, el cual nos permite sacar la
raz cuadrada de cualquier nmero, hacemos click sobre la funcin y observamos la sintaxis y
tiene la siguiente forma:
13
Ahora; usaremos la funcin trigonomtrica seno (sin en matlab) para ver los resultados
(primero se observar la sintaxis de la funcin, tambin se observa el uso de la funcin PLOT
que nos permite graficar dicha funcin en un determinado rango)
14
OPERADORES
Significado
Suma o adicin
Resta o sustraccin
Producto o Multiplicacin
Divisin o cociente
Potenciacin
()
Orden de operacin
15
OPERADORES
<
Menor que
<=
>
Mayor que
>=
==
Igual a
~=
No igual a
Tambin podemos hacer uso de operadores lgicos para tomar decisiones; tales como:
A&B
AB
~A
El smbolo &, y ~ son operadores lgicos AND, OR y NOT, ellos trabajan elemento por
elemento en los arreglos. Los operadores lgicos retornan un arreglo lgico con elementos (1)
para verdadero y elementos (0) para falso.
POR EJEMPLO:
Dado A=3,
B=2
A + B + C, A * B C
A^B+C
SOLUCION:
Debemos tener en cuenta la asignacin de valores a las variables y proceder al clculo de las
expresiones aritmticas
OJO: Matlab es sensible a la declaracin de variables y asignacin de valores. Si asignamos
el valor de 3 para la variable A, 2 para la variable B y 5 para la variable C, son esas
variables las que tiene en cuenta Matlab.
Vamos a usar la variable indistintamente la variable a en lugar de la variable A, matlab
muestra un mensaje de error
Podemos observar los resultados obtenidos:
16
Ejercicios:
Acudimos a su imaginacin para que pueda realizar 30 ejercicios del nivel de su grado
de estudios, la misma que ser evaluada rigurosamente. (Los ejercicios deben incluir
operaciones con funciones algebraicas, trigonomtricas: seno, coseno, tangente, etc.
Tambin deben contener operadores relacionales, lgicos)
17
ARREGLOS
18
ARREGLOS:
Variables de arreglo unidimensional: Estas variables tienen forma de fila o columna y estn
relacionadas con los vectores y las matrices. En MATLAB:
arreglo de fila es lo mismo que vector de fila y
arreglo de columna es lo mismo que vector de columna.
La variable x puede definirse como vector de fila especificando sus elementos; por ejemplo:
x = [0.0,
0.1,
0.2,
0.3,
0.4,
0.5,
0.6,
0.7,
0.8,
0.9] ;
La variable x tiene 10 elementos, si desea imprimir o visualizar un elemento cualquiera, digite: x con
el subndice correspondiente. Por ejemplo, si digita x(8) como un comando se mostrar el siguiente
resultado: Ans = 0.7
Una forma equivalente de definir la misma x es:
for i = 1 : 10
x(i) = (i - 1) * 0.1
end ;
Otra forma de escribir un arreglo de fila, asignado a una variable, con un incremento o decremento
fijo es:
x = 6 : -0.4 : 0
Que produce el siguiente resultado:
x = 6.0 5.6 5.2 4.8 4.4 4.0 3.6 3.2 2.8 2.4 2.0 1.6 1.2 0.8 0.4 0.0
o si digitamos la siguiente expresin se tiene lo siguiente:
>>
[x]'
ans =
6.0000
5.6000
5.2000
4.8000
4.4000
4.0000
3.6000
3.2000
2.8000
2.4000
2.0000
1.6000
1.2000
0.8000
0.4000
0.0000
19
z=
z=
0
0.1000
0.2000
0.3000
0.4000
0.5000
0.6000
0
0.1000
0.2000
0.3000
0.4000
0.5000
0.6000
c(9) = 15
Se supondr c(i) = 0 para i = 1 hasta 7. Por tanto, si teclea c como comando obtendr
c=
0
0
0
0
0
0
0
0
15
+
adicin o suma
sustraccin o resta
\
divisin-izquierda
/
divisin-derecha
.*
producto elemento a elemento
./ y .\ divisin elemento a elemento
.^
elevar a una potencia elemento a elemento
Cuando y y x tienen la misma longitud y la misma forma (fila y columna), los vectores y y x se
pueden sumar, restar, multiplicar y dividir empleando los operadores aritmticos de arreglos
z=x+y
z=x-y
z = x .* y
z = x ./ y
Que equivalen a:
Listado 1.12
For i=1 : 6 ; z(i) = x(i)
For i=1 : 6 ; z(i) = x(i)
For i=1 : 6 ; z(i) = x(i)
For i=1 : 6 ; z(i) = x(i)
+
*
/
y(i) ;
y(i) ;
y(i) ;
y(i) ;
end
end
end
end
20
% tambin
i=1:6
g(i) = i .^ 1.2
2.2974
g = 1.0000
2.2974
3.7372
g = 1.0000
2.2974
3.7372
5.2780
g = 1.0000
2.2974
3.7372
5.2780
6.8986
g = 1.0000
2.2974
3.7372
5.2780
6.8986
8.5858
5.2780
6.8986
8.5858
Tambin:
i= 1
g = 1.0000
2.2974
3.7372
21
As mismo:
El tamao de un arreglo
puede
incrementarse
anexndole un elemento o un
vector (o vectores).
Por
ejemplo, suponga:
>> x = [ 4 , 8 ]
x=
4
>> x = [ x , 7 ]
x = [6, x ]
lo que devuelve
x=
4
produce
x=
6
4
El tamao de un arreglo
puede
incrementarse
anexndole un elemento o un
vector (o vectores).
Por
ejemplo, suponga:
>> m = [ m , 7 ]
m = [16, m ]
>> m = [ 24 , 81 ]
m=
24
81
lo que devuelve
produce
m=
16
24
>> y = [ 2 ; 3; 6 ]
y =
2
3
6
entonces;
>> y = [ y ; 9]
produce
y=
2
3
6
9
m=
24
81
81
15
15
Un procedimiento inverso
consiste en extraer una parte
de un vector.
Con la
y
anterior,
>> w = y (2:3)
Define a w que equivale al
tercer y cuarto elemento de
y, a saber:
w =
2
3
22
Tambin
Si no recuerda el tamao
de su vector, pregntelo a
la computadora usando la
orden length(x).
Si adems de la
longitud se desea
saber si el vector
es de columna o de
fila, se debe usar
size.
Por ejemplo,
Para un vector
x = [9, 2, 3, 5, 6, 8, 10]
y = [ 9, 2, 3, 4, 9, 10 ]
la consulta length(x)
la respuesta ans = 7
recibe
Para
>> size( y )
devolver : ans = 1
m = [0.1,
0.2,
0.3;
0.4,
0.5,
0.6;
0.7,
0.8,
0.9 ] ;
Observe que los elementos de una fila terminan con un signo de punto y coma. Desde luego, todas las
filas deben tener el mismo nmero de elementos; si no es as, la definicin no ser aceptada.
Si digitamos m obtenemos
m=
0.1000
0.4000
0.7000
0.2000
0.5000
0.8000
0.3000
0.6000
0.9000
Los arreglos bidimensionales se pueden sumar, restar, multiplicar y dividir con los operadores
aritmticos de arreglos:
c=a+b
c=ab
c = a .*b
c = a ./ b
23
Argumentos de arreglo: La mayor parte de las funciones de MATLAB puede aceptar vectores y
matrices como argumentos.
Por ejemplo, si
x=
1
9
2
9
3
7
0.9093
0.9894
0.1411
0.6570
El cual es una matriz del mismo tamao que x. El clculo realizado equivale a:
% Listado 1.18
clear all; clear memory; clear command history; clc
x=[1 2 3; 9 9 7]
sin(x)
% Tambien
for i = 1 : 2
for j = 1 : 3
x(i,j) = sin(x(i,j))
end
end
CONSTRUCCION DE ARRAYS
% CONSTRUCCION DE ARRAYS
X = (0 : 1 : 12)'
CC = [X X+X X.^2 X.^3 sqrt(X) ]
Rpta:
X
X=
0
1
2
3
4
5
6
7
8
9
10
11
12
X+X
X^2
X^3
Sqrt(X)
CC = 1.0e+003*
0
0.0010
0.0020
0.0030
0.0040
0.0050
0.0060
0.0070
0.0080
0.0090
0.0100
0.0110
0.0120
0
0.0020
0.0040
0.0060
0.0080
0.0100
0.0120
0.0140
0.0160
0.0180
0.0200
0.0220
0.0240
0
0.0010
0.0040
0.0090
0.0160
0.0250
0.0360
0.0490
0.0640
0.0810
0.1000
0.1210
0.1440
0
0.0010
0.0080
0.0270
0.0640
0.1250
0.2160
0.3430
0.5120
0.7290
1.0000
1.3310
1.7280
0.0010
0.0014
0.0017
0.0020
0.0022
0.0024
0.0026
0.0028
0.0030
0.0032
0.0033
0.0035
24
EJERCICIOS
1.
Definir un arreglo llamado temperatura (T) que inicie en 100 C y termine en 1200C,
incrementos de 50C cada vez. Debe usarse una orden o sentencia.
con
2.
Teniendo en consideracin que los arreglos sirven para guardar variables de memoria, defina dos
arreglos llamados presin (P) y volumen (V), pero el volumen puede generarse como resultado de
la siguiente ecuacin PV = nRT (Considere: n=1 mol, R=0.09205 y T=300)
3.
25
MATRICES
26
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,
el
siguiente
comando
define una matriz A
de dimensin (3x3):
A partir de este
momento la matriz A
est disponible para
hacer cualquier tipo
de operacin con ella.
>> A = [ 1 2 3; 4 5
6; 7 8 9 ]
Por
ejemplo,
una
operacin con A es
hallar
su
matriz
traspuesta.
La
respuesta
programa
es
siguiente:
A=
1
4
7
2
5
8
del
la
3
6
9
En
MATLAB
el
apstrofo (') es el
smbolo
de
trasposicin matricial.
Para
calcular
digitamos
siguiente:
>> A'
ans =
1 4
2 5
3 6
7
8
9
Como el resultado de
la operacin no ha sido
asignado a ninguna
otra matriz, MATLAB
utiliza un nombre de
variable por defecto
(ans, de answer), que
contiene el resultado
de la ltima operacin.
A'
lo
Tambin
podra
haberse asignado el
resultado
a
otra
matriz llamada B:
>> B = A'
B=
1
2
3
4
5
6
7
8
9
Ahora
ya
estn
definidas
las
matrices A y B, y es
posible
seguir
operando con ellas.
Por
ejemplo,
se
puede
hacer
el
producto B * A
(deber resultar una
matriz simtrica):
>> B * A
ans =
66
78
90
78
93
108
90
108
126
27
En MATLAB se accede a los elementos de un vector poniendo el ndice entre parntesis ( por
ejemplo: x( 3 ) x( i ) ). Los elementos de las matrices se acceden poniendo los dos ndices entre
parntesis, separados por una coma (por ejemplo A(1,2) A(i,j)). Las matrices se almacenan por
columnas., 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).
A=
1
2
-2
4
1
5
Ahora se va a calcular la
inversa de A y el resultado
se asignar a B.
-3
5
3
B = inv(A)
B =
0.1803 0.2213 -0.1885
0.13110 0.0246 0.0902
-0.0984 0.1066 0.0574
MATLAB
tiene
en
cuenta la diferencia
entre vectores fila y
vectores columna. Por
ejemplo, si se intenta
sumar los vectores x e
y se obtendr el
siguiente mensaje de
error:
% vector columna
>> x = [ 10 20 30 ]
x=
10
20
11
12
13
30
>> x+y'
ans =
21
32
43
>> x+y
y=
% vector fila
Estas
dificultades
desaparecen si se
suma x con el
vector
traspuesto de y:
>> x + z
ans =
44
45
65
52
22
Nota: MATLAB considera comentarios todo lo que va desde el carcter tanto por ciento (%).
28
Una matriz de M = N
Matriz Nula
Matriz Identidad
Matriz transpuesta
el resto de los elementos son cero. La orden en matlab para definir una matriz identidad es eye
Matriz de Permutacin :
es At = [ a j,i ]
*
'
^
adicin o suma
sustraccin o resta
multiplicacin
traspuesta
potenciacin
\
/
.*
./ y .\
.^
divisin-izquierda
divisin-derecha
producto elemento a elemento
divisin elemento a elemento
elevar a una potencia elemento a elemento
Estos operadores se aplican tambin a las variables o valores escalares, aunque con algunas
diferencias. Nota: no se puede por sumar matrices que no sean del mismo tamao. Si los operadores
no se usan de modo correcto se obtiene un mensaje de error. Los operadores anteriores se pueden
aplicar tambin de modo mixto, es decir con un operando escalar y otro matricial. En este caso la
operacin con el escalar se aplica a cada uno de los elementos de la matriz. Considrese el siguiente
ejemplo:
>> A * 2
ans =
2
6
>> A = [ 1 2; 3 4 ]
A=
1
2
3
4
Los
operadores
de
divisin
requieren una cierta explicacin
adicional. Considrese el siguiente
sistema de ecuaciones lineales,
Ax = b
4
8
>> A - 4
ans =
-3
-1
-2
0
(2a)
x = A\ b
(2b)
(1)
29
>> A = [ 1 2 4; 3 1 2; 4 1 3 ]
>> B = [ 7 3 1; 2 3 5; 8 1 6 ]
>> A + B
>> A - B
A=
1
3
4
B=
ans =
ans =
2
1
1
7
2
8
4
2
3
3
3
1
1
5
6
8
5
12
5
4
2
5
7
9
-6 -1
1 -2
-4 0
>> x = [ 1; 4; 2 ]
>> y = [ 3; 9; 4 ]
>> x + y
>> x - y
x=
y=
ans =
ans =
4
13
6
-2
-5
-2
3
9
4
1
4
2
M+N
N-M
M=
N=
ans =
ans =
45
15
23
34
56
23
67
78
101 90
38 112
11
8
44
44
3
-3
-3
30
MULTIPLICACION
Si el nmero de columnas de A y el nmero de filas de B son idnticos, las matrices pueden
multiplicarse como: C = AB, el nmero de filas de C es igual al de A y el nmero de columnas de C es
igual al de B, en otras palabras, si A es una matriz de p por q y C es una matriz de q por r, entonces C
es una matriz de p por r , mostramos algunos ejemplos tpicos:
Suponga que B y C son matrices:
31
Ejemplos:
>> M = [ 8 2 9; 3 9 4; 6 9 4 ]
>> N = [ 7 3 1 ; 2 3 5 ; 8 1 6 ]
>> y = [ 7; 9; 3 ]
M=
N=
y=
8
3
6
2
9
9
7
2
8
9
4
4
3
3
1
7
9
3
1
5
6
>> M * y
>> N * M
>> M * N
ans =
ans =
ans =
132
71
92
39
40
49
101
114
135
71 50 79
55 76 50
103 79 100
72
72
75
Ojo: Para poder multiplicar dos matrices, la primera debe tener el mismo nmero de columnas que
filas de la segunda
>> A = [ 1 2; 4 3; 0 2 ]
>> A = [ 2 1 7 ]
>> A = [ 8 1 3 ; 1 5 2 ]
>> A = [ 1 2; 4 3; 0 2 ]
A=
1
4
0
A=
2
A=
8
1
A=
1
4
0
2
3
2
1
5
3
2
2
3
2
>> B = [ 5 ; 1 ]
>> B = [ 1 2 ; 4 3 ; 0 2 ]
>> B = [ 1 2 ; 4 3 ; 0 2 ]
>> B = [ 8 1 3 ; 1 5 2 ]
B=
B=
B=
B=
5
1
1
4
0
2
3
2
>> A * B
ans =
7
23
2
1
4
0
2
3
2
>> A * B
>> A * B
ans =
6 21
ans =
12
21
25
21
8
1
1
5
3
2
>> A * B
ans =
10 11
35 19
2 10
7
18
4
32
Para multiplicar un escalar por una matriz se multiplica el escalar por todos los elementos
de la matriz, obtenindose otra matriz del mismo orden.
Tambin:
>> A = [ 5 ]
>> M = [ 10 ]
>> x = [ 1 3; 4 2; 6 2 ]
A=
5
M=
x=
>> B = [ 7 3 1 ; 2 3 5 ; 8 1 6 ]
>> N = [ 8 4 7 ; 8 3 8 ; 2 0 7 ]
B=
N=
8
8
2
7
2
8
1
4
6
10
3
3
1
1
5
6
4
3
0
3
2
2
7
8
7
>> A * B = B * A
M*N = N*M
>> A * x = x * A
ans =
35
10
40
ans =
80
80
20
ans =
5 15
20 10
30 10
15
15
5
5
25
30
40 70
30 80
0 70
33
DIVISION DE MATRICES:
La divisin de matrices se define como el producto del numerador multiplicado por la matriz
inversa del denominador. Es decir, sean las matrices A y B tal que A/B = AB-1 ..
Si una matriz est dividida entre un escalar, todos los trminos de la matriz quedarn divididos
por ese escalar. As:
>> A = [ 1 2 4 ; 3 1 2 ; 4 1 3 ]
>> B = [ 7 3 1 ; 2 3 5 ; 8 1 6 ]
>> x = [ 1; 4; 2 ]
A=
1
3
4
B=
x=
2
1
1
4
2
3
>> x '
ans =
1
>> A'
ans =
1
2
4
3
1
2
4
1
3
11
14
7
2
8
>> B'
ans =
7
3
1
>> A'
ans =
1
2
4
3
3
1
2
3
5
1
4
2
1
5
6
8
1
6
Nota: La transpuesta de un
producto de matrices es el
producto de las trasnpuestas
de las matrices en orden
invertido.
Por ejemplo:
3
1
2
4
1
3
54
18
27
34
nxn
nxn
tal
Se escribe B = A
para denotar la matriz inversa. Cuando la matriz inversa existe, es nica, pro
no siempre existe la matriz inversa. Un resultado de algebra lineal prueba que la matriz inversa
A 1
In
de Gauss-Jordan para hacer los ceros y unos y obtener del lado izquierdo la matriz identidad
lado derecho lo que obtendremos ser la matriz inversa de A.
I n . Del
Ejemplo 1. Usar el mtodo de Gauss-Jordan para calcular la matriz inversa de la siguiente matriz:
a11 = 4
I2 :
14
35
11
0.25
a 22 = 0.25 .
Finalmente, hacemos los 1s en la diagonal principal. Para ello, multiplicamos el rengln 1 por
rengln 2 por
1
0.25
1
4
y el
Ejemplo 2.
Solucin.
a11 = 2
0.3125
2
0.5
2
y lo sumamos al rengln 2;
36
Para elegir el segundo elemento pivote, debemos escoger el elemento mayor (con valor absoluto)
Procedemos a hacer ceros arriba y abajo de nuestro segundo elemento pivote; para ello,
multiplicamos el rengln 2 por
rengln 2 por
0.2
1.25
1.425
10
0.4
3.125
0.4
a33 = 0.4
Finalmente, hacemos los 1s en la diagonal principal. Para ello multiplicamos el rengln 1, 2 y 3 por
1
1.25
1
0.4
1
2
37
MATRIZ INVERSA:
Cuando Dos matrices cuadradas A y B satisfacen lo siguiente: AB = I B A = 1
J = [ 1 3 5; 5 6 7 ; 1 1 1 ]
J=
eye(3)
ans =
1
0
0
eje(n), as:
0
1
0
1
5
1
0
0
1
3
6
1
Z=inv(J)
Z = 1.0e+015 *
0.5004 -1.0008 4.5036
-1.0008 2.0016 -9.0072
0.5004 -1.0008 4.5036
5
7
1
M= eye(4)
J = [ 1 2 3 4; 5 6 7 8 ; 1 1 1 1; 2 2 2 2]
S=M * J
M=
J=
S=
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
5
1
2
2
6
1
2
3
7
1
2
1
5
1
2
4
8
1
2
2
6
1
2
3
7
1
2
4
8
1
2
>> A = [ 3 6 4; 3 8 5; 1 4 2 ]
A=
3
3
1
6
8
4
4
5
2
>> B = inv(A)
>> A * B
B=
2.0000 -2.0000 1.0000
0.5000 -1.0000 1.5000
-2.0000 3.0000 -3.0000
ans =
1.0000
0
0
1.0000
0
0
>> B * A
0
0
1.0000
ans =
1.0000
0
0
0
1.0000
0
0
0
1.0000
38
>> s = eye(5)
>> x = zeros(5)
>> v = zeros(2,4)
v=
x=
s=
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Tambin:
>> q = ones(4,3)
>> d = ones(3)
>> r = ones(3,3)
q=
d=
r=
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
MANIPULACION DE MATRICES
MATLAB proporciona funciones que manipulan matrices (mas a detalle se pueden encontrar en el Help
del Matlab):
[m,n] = size(A)
n=length(x)
A=diag(x)
x=[ 1 4 6 7 ]
x=
1
39
>> A = diag( x )
A=
1
0
0
0
0
4
0
0
0
0
6
0
0
0
0
7
>> A = diag([20:-4:4])
A=
20 0 0
0 16 0
0 0 12
0 0 0
0 0 0
0
0
0
8
0
0
0
0
0
4
Tambin se puede usar el comando diag para buscar las diagonales de una matriz
>> A = magic(5)
A=
17 24 1
8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25
2 9
>> diag(A,2)
>> diag(A,1)
>> diag(A,0)
ans =
1
14
22
ans =
24
7
20
3
ans =
17
5
13
21
9
>> diag(A,-1)
>> diag(A,-2)
>> diag(A,-3)
ans =
23
6
19
2
ans =
4
12
25
ans =
10
18
40
x=diag(A)
A=
1
4
7
2
5
8
3
6
9
>>x = diag( A )
ans =
1
5
9
diag(diag(A))
m=
16
5
9
4
2
11
7
14
3 13
10 8
6 12
15
1
>> diag(diag(m))
ans =
16
0
0
0
0
11
0
0
0
0
6
0
0
0
0
1
blkdiag(A,B)
crea una matriz diagonal de sub-matrices a partir de las matrices que se le pasan
como argumentos
triu(A)
Forma una matriz triangular superior a partir de una matriz A (no es necesario
que sea cuadrada).
tril(A)
rot90(A,k)
flipud(A)
41
>> flipud( A )
ans =
5 6 7
1 3 5
fliplr(A)
a=
10
45
reshape(A,m,n)
78
14
22
53
86
26
31
62
97
34
>> k=reshape( a , 2 , 6)
k=
10
45
Si
78
14
f es una matriz
>> f = [4 5 6 ;6 8 7 ;1 6 3]
f=
4
6
1
5
8
6
6
7
3
22
53
86
26
31
62
97
34
>> zeros(size(f))
ans =
0
0
0
>> g = rand(2,4)
g=
0
0
0
0
0
0
>> ones(size(f))
ans =
1
1
1
1
1
1
1
1
1
0.9501
0.2311
0.6068
0.4860
0.8913
0.7621
>> h = rand(3,3)
h=
0.8214
0.4447
0.6154
0.7919
0.9218
0.7382
>> h = rand(5,2)
h=
0.9501 0.7621
0.2311 0.4565
0.6068 0.0185
0.4860 0.8214
0.8913 0.4447
0.1763
0.4057
0.9355
0.4565
0.0185
42
ACCION
B = A'
B = A.'
v = poly(A)
t = trace(A)
[m,n] = size(A)
n = size(A)
nf = size(A,1)
nc = size(A,2)
Ejercicios
1.
Hacer un programa en matlab para establecer campos para ingresar datos de una matriz ( El
usuarios debe preguntar Cuntas filas y cuntas columnas debe tener la matriz ), de acuerdo a
ello se debe abrir una tabla para ingresar datos y operar los siguientes clculos (suma, resta,
multiplicacin y divisin)
2.
3.
5
5
5
5
5
5
5
5
5
5
5
5
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
Dibuje un arbol de navidad usando comandos del MATLAB (relacionado con matrices u otros)
43
44
ESQUEMATIZACION SIMPLE
Suponga que desea graficar un conjunto de puntos de datos, (xi, yi), i=1, 2, ...n. Es necesario preparar
x y y en forma de arreglos con igual nmero de puntos, es decir, convertirlos en arreglos de fila o de
columna de la misma longitud.
Los datos se grafican con plot.
Por ejemplo, y = sen(x)exp(-0.4x), -1<= i >= 10, se grafica con el listado 2.1
Listado 2.1
x = -1 : 0.08 : 10;
y = sin (x) .* exp(-0.3.* x);
plot(x,y)
xlabel( 'x' ); ylabel('y')
obteniendo el siguiente resultados
45
USO DE MARCAS:
Los datos pueden graficarse slo con marcas sin estar conectados por lneas. Se dispone de cinco
tipos de marcas o letras:
Tipo de marca
Simbolo
Tipo de marca
Simbolo
Punto
Ms
Estrella
.
+
*
Circulo
Marca x
o
x
Si desea graficar con un solo tipo de marca, coloque el smbolo de la marca como una cadena despus
de las coordenadas en los argumentos de plot. La grfica del listado 2.4 se muestra en la figura 2.3
Listado 2.3
x = (0 : 0.4 : 10 ) ;
y = sin(x) . * exp(-0.4 * x) ;
plot ( x , y , + )
xlabel( 'x' ) ; ylabel( 'y' )
obteniendo el resultado adjunto
Tambien
x = (0 : 0.4 : 10 ) ;
y = sin(x) . * exp(-0.4 * x) ;
plot ( x , y , -o )
xlabel( 'x' ) ; ylabel( 'y' )
46
Tipo de lnea
Smbolo
Tipo de lnea
Smbolo
Continua
Punteada
Guiones
--
Guiones y puntos
-.
El tipo de lnea por omisin es el continuo. Si deseas graficar con un tipo de lnea en
particular, especifique la marca de lnea despus de las coordenadas; por ejemplo:
Plot( x , y , )
Se dispone de los siguientes colores:
Color de lnea
Smbolo
Color de Lnea
Smbolo
Rojo
Amarillo
Magenta
Turquesa
r
y
m
c
Verde
Azul
Blanco
Negro
g
b
w
k
Utilice el smbolo del color igual que los tipos de lnea en el argumento de plot; por ejemplo:
Plot( x , y , g )
Tambin es posible combinar marcas y colores:
Plot( x , y , + g )
Ejemplo:
%PROG32
x=-5:0.1:15;
y=sin(x);
z=cos(x);
plot(x,y,'.-r',x,z,'*b');
title('PROG32:
MULTIPLES
CURVAS')
47
%prog21
x=0:0.05:10;
y=sin(x).*exp(-0.4*x);
plot(x,y)
xlabel('x');ylabel('y')
title('PROG21')
%prog22
x=(0:0.05:10)';
y=sin(x).*exp(-0.4*x);
plot(x,y)
xlabel('x');ylabel('y')
title('PROG22')
%PROG23
p=0: 0.05:8*pi;
z = (cos(p) + i*sin(2*p)).*exp(0.05*p) + 0.01*p;
plot(real(z), imag(z))
xlabel('Re(z)') ; ylabel('Im(z)')
title('PROG23')
Nota:
Re(z) : Parte real de un nmero
complejo
Imag(z) : Parte imaginaria de un
nmero complejo
48
%PROG24
x=(0:0.4:10)';
y=sin(x).*exp(-0.4*x);
plot(x,y,'*')
xlabel('x');ylabel('y')
title('PROG24: grafico con un solo
tipo de marca')
%PROG25
x=(0:0.2:10)';
y=sin(x).*exp(-0.4*x);
plot(x,y)
grid on
xlabel('x');ylabel('y')
title('PROG25: Figura con
reticula')
%PROG26
t=0:0.2:pi+.010;
y=sin(3*t).*exp(-0.3*t);
polar(t,y)
title('PROG26: grafica con polar')
grid
49
%PROG27
t=0.1:0.1:3;
x=exp(t);
y=exp(t.*sinh(t));
loglog(x,y)
grid
xlabel('x'); ylabel('y');
title('PROG27: Grafica
semilogaritmica...')
%PROG28
t=0.1:0.1:3;
semilogy(t,exp(t.*t))
grid
xlabel('t'); ylabel('exp(t.*t)');
title('PROG28: Grafica
semilogaritmica...')
%PROG29
t=0.1:0.1:3;
semilogx(t,exp(t.*t))
grid
xlabel('t'); ylabel('exp(t.*t)');
title('PROG28: Grafica
semilogaritmica...')
50
%PROG30
x=0:0.05:5;
y=sin(x);
z=cos(x);
plot(x,y,x,z) ; title('PROG30:
MULTIPLES CURVAS')
%PROG31
x=0:0.05:5;
y=sin(x);
z=cos(x);
plot(x,y,'r',x,z,'b') ;
title('PROG30: MULTIPLES
CURVAS')
%PROG32
x=0:0.05:5;
y=sin(x);
z=cos(x);
plot(x,y ,'. -r' , x,z ,'*b') ;
title('PROG32: MULTIPLES
CURVAS')
51
%PROG33
clear; clf; hold off
x=0:0.05:5;
y=sin(x);
plot(x,y,'*b');
hold on
z=cos(x);
plot(x,z,'--r')
xlabel('x'); ylabel('y(-), z(--)');
hold off
%PROG34
M=[0:0.01:1]'
k=1.4;
p0_entre_p = (1 + (k1)/2+M.^2).^(k/(k-1));
plot(M,p0_entre_p)
xlabel('M,numero de Mach')
ylabel('p0/p')
title('Relacion de presion,
p(estancamiento/p(estatica)')
%PROG34-A
clear; clf; hold off
x=0:0.05:5;
y=tan(x);
plot(x,y,'*b');
hold on
z=cot(x);
plot(x,z,'--r'); title('Grfico
Tangente - Cotangente')
xlabel('x'); ylabel('y(-), z(--)');
hold off
52
%PROG35
%RELACION DE PRESION vs NUMERO DE MACH
clear; clf; hold off;
M=[0:0.01:0.9]';
k=1.4;
p0_entre_p = (1 + (k-1)/2+M.^2) .^ (k/(k-1));
hold on
axis('square'); %Hace que la grafica sea cuadrada
plot(M,p0_entre_p)
xlabel('M,numero de Mach')
ylabel('p0/p')
title('Relacion de presion, p(estancamiento/p(estatica)')
text(0.35, 5.55, 'compresible')
Mb = [0:0.01:0.9]';
p0_entre_pb = 1 + k/2*Mb.^2;
plot(Mb, p0_entre_pb,'*')
text(0.5, 0.8, 'Incompresible')
EJEMPLOS ADICIONALES
53
54
RESULTADOS
55
56
57
RESULTADOS
58
59
PROGRAMA PARA EL CLCULO DEL VOLUMN CON LA ECUACION DE VAN DER WAALS
% Clculo del volumen con Ecuacin de Van Der Waals Metano
clear all; clear memory; clear command history; clc
T=273;
% K
P=100;
% atm
Tc=190.6
% K
Pc=45.4
% atm
R=0.08205
b=R*Tc/(8*Pc)
a=27*R*R*Tc*Tc / (64*Pc)
Vm=0.1:0.1:100;
PP = ((R.*T./(Vm - b)) - (a./(Vm.*Vm)));
plot(Vm,PP); grid on
nombre_f='( (R.*T./(x - b)) - (a./(x.*x)) )-P';
i=1; delta=0.005; x0=0.05; e=1;
while e>3E-12 & i<=18
x=x0;
fx0=eval(nombre_f);
x=x0-delta;
df1=eval(nombre_f);
x=x0+delta;
df2=eval(nombre_f);
dfx0=(df2-df1)./(2.*delta);
r=x0-(fx0./dfx0);
e=abs((r-x0)./r);
x0=r;
i=i+1;
end
fprintf('la raiz es:%10.9f\n',x0);
axis([0 4 0 120])
RESULTADOS
la raz es : 0.165435983
60
PROGRAMA
%TRATAMIENTO TERCIARIO DE AGUAS RESIDUALES CON CARBON ACTIVADO
clc;clear memory;clear command history;clear all
format short g
p1=[0.76 1.52 2.28]; t1=[740 1789 2780];
y1=polyfit(p1,t1,1);
m1=y1(1);
%pendiente ;
b1=y1(2);
%ordenada al origen
p11=[0.0:0.01:2.40]; %plot(p11,p11*m1+b1);
hold on
%---------------p2=[0.76 1.52 3.04]; t2=[180 560 1330];
y2=polyfit(p2,t2,1);m2=y2(1); b2=y2(2);
p22=[0.0:0.01:3.10]; %plot(p22,p22*m2+b2);
%-------------p3=[1.52 3.04 4.56]; t3=[170 500 830];
y3=polyfit(p3,t3,1);m3=y3(1); b3=y3(2);
p33=[0.0:0.01:5.00]; %plot(p33,p33*m3+b3);
%-----------------p4=[1.52 4.56 7.60]; t4=[60 390 730];
y4=polyfit(p4,t4,1); m4=y4(1); b4=y4(2);
p44=[0.0:0.01:8.00]; %plot(p44,p44*m4+b4);
grid on
plot(p11,p11*m1+b1,p22,p22*m2+b2,p33,p33*m3+b3,p44,p44*m4+b4);
text(2.2,2560,'Experimento 1','BackgroundColor',[.7 .9 .7]);text(3,1060,'Experimento
2','BackgroundColor',[.7 .9 .7]);
text(4.7,700,'Experimento 3','BackgroundColor',[.7 .9 .7]), text(5.7,400,'Experimento
4','BackgroundColor',[.7 .9 .7]);
xlabel('Profundidad D (m)'); ylabel('Tiempo t (h)'); title('REPRESENTACION DE TIEMPO-t vs
PROFUNDIDAD DE LECHO-D','BackgroundColor',[.7 .9 .7])
hold off
%--------------------%Caudal en m3/hr y diametro del lecho de prueba piloto en mts
qa1=0.00248; qa2=0.0049; qa3=0.0099; qa4=0.0198; diamlecho=0.0254;
%Caudal en L/(min*m2) - el factor de conversion de conversion de m3/hr a L/(min*m2) es 21.2207
qa11=(4*1000/(60*pi))*qa1/(diamlecho^2);
qa22=(4*1000/(60*pi))*qa2/(diamlecho^2);
qa33=(4*1000/(60*pi))*qa3/(diamlecho^2);
qa44=(4*1000/(60*pi))*qa4/(diamlecho^2);
%Calculo de la velocidad en mts/hr
v1=0.06*qa11;
v2=0.06*qa22;
v3=0.06*qa33;
v4=0.06*qa44;
%Calculo de la concentracion inicial de contaminante en mg/L - el factor de
%conversion es 0.001 para que este dado en Kg/m3 - debe ingresar con input Coo y Cee
Coo=20; Cee=1;
Co=0.001*Coo; Ce=0.001*Cee;
%Calculo de No en Kg/m3
No1=Co*v1*m1;
No2=Co*v2*m2;
No3=Co*v3*m3;
61
No4=Co*v4*m4;
%Calculo de la constante de velocidad - m3/(Kg de carbon * hr)
%Se trabaja con Coo=20 y Cee=1 Ambos deben ingresar con imput
k1=-log((Co/Ce)-1)/(b1*Co);
k2=-log((Co/Ce)-1)/(b2*Co);
k3=-log((Co/Ce)-1)/(b3*Co);
k4=-log((Co/Ce)-1)/(b4*Co);
%Calculo de la profundidad crtica (mts)
Do1=log((Co/Ce)-1)*v1 / (k1*No1);
Do2=log((Co/Ce)-1)*v2 / (k2*No2);
Do3=log((Co/Ce)-1)*v3 / (k3*No3);
Do4=log((Co/Ce)-1)*v4 / (k4*No4);
%Grafico de los datos encontrados
figure
Q=[qa11 qa22 qa33 qa44]; KK=[k1 k2 k3 k4]; DD=[Do1 Do2 Do3 Do4]; NN=[No1 No2 No3 No4];
subplot(2,2,1);plot(Q,KK,'*-');xlabel('Caudal-L/(min*m2)');ylabel('K - m3/(Kg*hr)');grid on
subplot(2,2,2);plot(Q,DD,'O-');xlabel('Caudal-L/(min*m2)');ylabel('Do - m)');grid on
subplot(2,2,3);plot(Q,NN,'*-');xlabel('Caudal-L/(min*m2)');ylabel('No - Kg/m3)');grid on
%---%Ajuste de curva para encontrar la ecuacion de cada una de ellas
Q1Q=[81.5:50:681.5];
k2 =polyfit(Q,KK,2);
% ES IGUAL A [p,S] = polyfit(Q,KK,2)
ko2=k2(1).*Q1Q.*Q1Q + k2(2).*Q1Q + k2(3);
cof11=k2(1); cof22=k2(2); cof33=k2(3);
%k3=polyfit(Q,KK,3)
%Existe mucha dispersion, por lo que se desecha
%ko3=k3(1).*Q1Q.*Q1Q.*Q1Q + k3(2).*Q1Q.*Q1Q + k3(3).*Q1Q + k3(4)
n2 =polyfit(Q,NN,2);
% Es igual a [p,s]=polyfit(Q,NN,2)
no2=n2(1).*Q1Q.*Q1Q + n2(2).*Q1Q + n2(3);
cof1=n2(1); cof2=n2(2); cof3=n2(3);
%n3 =polyfit(Q,NN,3);
%Existe mucha dispersion, por lo que se desecha
%no3=n3(1).*Q1Q.*Q1Q.*Q1Q + n3(2).*Q1Q.*Q1Q + n3(3).*Q1Q + n3(4)
%no33=(no2+no3)/2
%plot(Q,NN,'*-',Q1Q,no2,'o-',Q1Q,no3,'*-')
d2 =polyfit(Q,DD,2);
do2=d2(1).*Q1Q.*Q1Q + d2(2).*Q1Q + d2(3);
cof111=d2(1); cof222=d2(2); cof333=d2(3);
%---------INCREMENTADO
figure
subplot(2,2,1);plot(Q1Q,ko2,'*-');xlabel('Caudal-L/(min*m2)');ylabel('K - m3/(Kg*hr)');grid on
subplot(2,2,2);plot(Q1Q,do2,'O-');xlabel('Caudal-L/(min*m2)');ylabel('Do - m)');grid on
subplot(2,2,3);plot(Q1Q,no2,'*-');xlabel('Caudal-L/(min*m2)');ylabel('No - Kg/m3)');grid on
%-------FIN DE INCREMENTO
%DATOS DE PROBLEMA REAL
%Caudal en m3/hr y diametro del lecho de prueba piloto en mts - profundidad - prof en mts
qaa1=4; diamlecho1=0.76;
prof=1.82;
%Caudal en L/(min*m2) - el factor de conversion de conversion de m3/hr a L/(min*m2) es 21.2207
qaa11=(4*1000/(60*pi))*qaa1/(diamlecho1^2);
area=(pi/4)*diamlecho1^2;
%Calculo de la velocidad en mts/hr
ve1=0.06*qaa11;
%Modulo para halla K ko22 en m3/(kg*hr) y No no22 en kg/m3
no22=cof1*qaa11*qaa11 + cof2*qaa11 + cof3;
ko22=cof11*qaa11*qaa11 + cof22*qaa11 + cof33;
62
63
fprintf('Rendimiento (rendimiento)
= %g (kg/ciclo)\n',rendimiento)
disp('Basado en Do: Profundidad Crtica')
fprintf('Rendimiento (Rendimiento)
= %g (m3/ciclo)\n',Rendimiento)
disp(' ')
disp('-------------------------------------------------------------------')
disp(' ')
disp(' ')
RESULTADOS
64
65
PROGRAMA
%CAPACIDAD DE ADSORCION DE CARBON GRANULADO
clc;clear memory;clear command history;clear all
dc=[0 0.4 0.8 1.6 3.2 9.75];
dcA=[0 0.08 0.16 0.32 0.64 1.95];
dcB=[0 0.08 0.16 0.32 0.64 3.00];
imreA=[400 248 164 92 34 10];
imreB=[400 280 200 120 60 10];
%subplot(1,2,1)
plot(dcA,imreA,'o-',dcB,imreB,'*-')
title('Isoterma de adsorcion');xlabel('Dosage de carbn - gr/200mL'); ylabel('Impurezas
remanentes - mg/L')
text(0.8,110,'O - Carbn A');text(0.8,85,' * - Carbn B');grid on
%subplot(1,2,2)
figure
imreA=[400 248 164 92 34 10];
imreB=[400 280 200 120 60 10];
XMA=[0 380 295 193 114 40];
XMB=[0 300 250 175 106 26];
LnimreA=log(imreA);
LnimreB=log(imreB);
LnXMA=log(XMA);
LnXMB=log(XMB);
%figure
loglog(imreA,XMA,'o-',imreB,XMB,'-*')
title('Isoterma de adsorcion'); xlabel('Impurezas remanentes - mg/L'); ylabel('X/M Impurezas
adosrbidas/peso de carbon usado - mgr/gr');
text(100,50,'O - Carbn A');text(100,40,'* - Carbn B'); grid on
%Determinacion de carga de carbon desde los perfiles de las isotermas a un
%nivel de impureza final deseada - Mtodo de Interpolacin
SeA=20 ; SeB=20;
Carga_carA = interp1(imreA,XMA,SeA);
Carga_carB = interp1(imreB,XMB,SeB);
%Cculo de la impureza eliminada - Se conoce So=400 mg/L y Se=20 Mg/L
SoA=400; SoB=400; % mg/L
Impu_elimA = SoA - SeA;
Impu_elimB = SoB - SeB;
%Promedio de uso de carbon
Prom_uso_carbonA = Impu_elimA / Carga_carA;
Prom_uso_carbonB = Impu_elimB / Carga_carB;
clc;
%Los resultados
disp(' ');
disp('------------------------------------------------------------------')
disp('RESULTADOS ');
disp('------------------------------------------------------------------')
disp('CAPACIDAD DE ADSORCION DE CARBON GRANULADO ')
disp('------------------------------------------------------------------')
disp(' ')
disp('Clculo de carga de carbn desde las isotermas:')
66
disp('-----------------------------------------------')
fprintf('Carbn A (X/M) = %g (mg/g)\n' ,Carga_carA)
%g es el formato mas corto
fprintf('Carbn B (X/M) = %g (mg/g)\n' ,Carga_carB)
%g es el formato mas corto
disp(' ')
disp('Promedio de uso de Carbn :')
disp('---------------------------')
fprintf('Uso de Carbn A = %g (mg/L)\n',Prom_uso_carbonA)
fprintf('Uso de Carbn B = %g (mg/L)\n',Prom_uso_carbonB)
disp(' ')
disp('----------------------------------------------------------------------------')
disp('De los resultados calculados se concluye que se requiere de aproximadamente')
fprintf('%g \n',Prom_uso_carbonB - Prom_uso_carbonA )
disp('mas de carbn B para levar a cabo el mismo tratamiento. El precio unitario ')
disp('de cada tipo de carbn puede ser usado para determinarel mejor caso de ')
disp('costo-efectividad para una aplicacin de purificacin ')
disp('----------------------------------------------------------------------------')
RESULTADOS
67
68
EJERCICIOS
1.
Se han usado diverso comandos no tratados en la clase correspondientes a grficos con Matlab,
es necesario que Ud. Con ayuda el HELP del MATLAB, mencione el significado
2.
Grafique diez funciones relacionados con los cursos de Ingeniera Qumica, Fsica u otro, deben
tener cierto grado de dificultad con conceptos de simulacin
3.
69
GRAFICOS 3D
Tomado de la Web
PARA USO INTERNO
70
GRAFICOS 3D
La orden plot que utilizbamos en 2 dimensiones podemos tambin usarla en 3 dimensiones. El
formato ser el mismo que en 2D, pero en vez de representar los datos en parejas, lo haremos en
tripletes. El formato generalizado de la orden plot en 3D es:
plot3(x,y,z,s)
"x", "y", "z", sern los tres vectores, y "s" ser una cadena de caracteres adicional para indicar color
y tipo de lnea. Si queremos representar varias curvas en un solo grfico, la orden ser de la forma:
plot3(x1,y1,z1,s1,x2,y2,z2,s2,...xn,yn,zn,sn)
Por ejemplo, si queremos representar una hlice en tres dimensiones:
% Programa para representar una hlice en tres dimensiones
clc; clear memory; clear command history; clear all;
t=0:0.1:30;
plot3(sin(t),cos(t),2*t)
title('Hlice')
xlabel('Seno(t)'); ylabel('Coseno(t)'),zlabel('2t')
Hlice
60
50
2t
40
30
20
10
0
1
0.5
1
0.5
-0.5
Coseno (t)
-0.5
-1
-1
Seno (t)
Para fijar manualmente los lmites de los ejes, usaremos la misma orden que en 2D, pero teniendo en
cuenta al eje z:
>>axis([xmin xmax ymin ymax zmin zmax] )
Del mismo modo, podemos introducir texto en la grfica, usando coordenadas en 3D:
>>text(x,y,z,'texto')
71
Por ejemplo, si en la grfica anterior queremos limitar los ejes al doble de su valor actual, e
introducir la etiqueta "Grfica en 3D" en las coordenadas x=0.25, y=0.25, z=20:
% Programa para representar una hlice en tres dimensiones
clc; clear memory; clear command history; clear all;
t=0:0.1:30;
plot3(sin(t),cos(t),2*t)
title('Hlice')
xlabel('Seno (t)'); ylabel('Coseno (t)'),zlabel ('2 t')
axis([-2 2 -2 2 0 120]);
text(0.25,0.25,100,'GRAFICA EN 3D')
grid
Hlice
120
100
GRAFICA EN 3D
2t
80
60
40
20
0
2
1
2
1
-1
Coseno (t)
-1
-2
-2
Seno (t)
Grficos de Malla
Un grfico tridimensional de malla viene definido por una funcin z=f(x,y), de tal forma que los puntos
de la superficie se representan sobre una rejilla, resultado de levantar los valores de z dados por
f(x,y) sobre los correspondientes puntos (x,y) del plano. Los puntos adyacentes se unen mediante
lneas rectas, dndolo al grfico un aspecto de malla. Para representar un grfico de malla, se utiliza
el comando mesh y sus variantes. Estos grficos son muy tiles a la hora de visualizar grandes
matrices o representar funciones de dos variables.
El primer paso para representar una funcin de dos variables z=f(x,y), es utilizar el comando
meshgrid, que bsicamente define la matriz de puntos (X,Y) sobre los cuales se evala la funcin de
dos variables para hacer su representacin grfica. Su sintaxis es la siguiente:
[X,Y]=meshgrid(x,y)
Transforma el campo de definicin dado de las variables "x" e "y", de la
funcin a representarz=f(x,y), en argumentos matriciales utilizables por el comando mesh para
obtener el grfico de malla.
72
meshz(X,Y,Z)
Representa el grfico de malla de la funcin z=f(x,y) con una especie de teln o
cortina en la parte inferior
meshc(X,Y,Z)
Representa el grfico de malla de la funcin z=f(x,y) junto con el grfico de
contorno correspondiente (curvas de nivel proyectadas sobre el plano x,y)
73
Grficos de Contorno
Las grficas de contorno o sistema de planos acotados muestran lneas de elevacin o altura
constante. As, dibujando diferentes curvas de nivel correspondientes a alturas constantes, se puede
describir un mapa de lneas de nivel de la superficie. Son las grficas usadas en los mapas
topogrficos. Los grficos de contorno pueden representarse en dos o en tres dimensiones
En estos grficos se observa, por tanto, la variacin de z=f(x,y) con respecto a "x" y a "y". Cuando el
espacio entre las curvas de nivel es grande, significa que la variacin de la variable "z" es lenta,
mientras que un espacio pequeo indica un cambio rpido de "z".
Los comandos que utiliza MATLAB para la representacin de grficos de contorno son los siguientes
(todos ellos aceptan el argumento adicional sobre el color de las lneas):
contour(Z)
Dibuja el grfico de contorno para la matriz Z. El nmero de lneas de contorno a
utilizar se elige automticamente
contour(Z,n)
contour(x,y,Z,n)
Dibuja el grfico de contorno para la matriz Z usando en los ejes X e Y el
escalado definido por los vectores "x" e "y", con n lneas de contorno
contour3(Z), contour3(Z,n), contour3(x,y,Z,n)
dimensiones
74
pcolor(X,Y,Z)
Dibuja un grfico de contorno para la matriz (X,Y,Z) utilizando una representacin
basada en densidades de colores. Suele denominarse grfico de densidad.
Como ejemplo, vamos a representar las curvas de nivel que responden a la ecuacin:
z=Sen(x)Sen(y)
con
En la primera grfica vemos su grfico de contorno en 2D, con 20 lneas. En la segunda, su grfico de
contorno tridimensional, con 40 lneas. En la tercera dibujaremos su grfico de densidad:
% Programa para representar grfico tipo contorno
clc; clear memory; clear command history; clear all;
[X,Y]=meshgrid(-2:0.1:2);
Z=sin(X).*sin(Y);
subplot(2,2,1)
contour(Z,20,'b')
title('GRAFICA DE CONTORNO 2D')
subplot(2,2,2)
contour3(Z,40,'b')
title('GRAFICA DE CONTORNO 3D')
subplot(2,2,3)
pcolor(X,Y,Z)
title('GRAFICA DE DENSIDAD')
75
fill3(X1,Y1,Z1,C1...Xn,Yn,Zn,Cn)
puntos (Xi,Yi,Zi,Ci)
30
25
20
15
10
5
0
1
0.5
1
0.5
-0.5
-0.5
-1
-1
76
FUNDAMENTOS TEORICOS
DE PROGRAMACION
77
2.
Un programa est compuesto por instrucciones, sentencias o proposiciones las cuales especifican
ciertas operaciones que debe ejecutar la mquina
3.
Existen:
Lenguajes de mquina:
Usan dgitos binarios ( 1 y 0 )
PROCESAMIENTO DE DATOS
En la actualidad es muy comn solucionar problemas con ayuda del computador, sabemos que existen
muchos datos que son posibles tratarlos para poderlos tener como informacin que pueda ayudarnos
para tomar decisiones importantes en la vida diaria
SISTEMA DE
PROCESO DE
INFORMACION
PROCESO
ENTRADA
SALIDA
DATOS
PROBLEMA
INFORMACION
DISEO
ALGORITMO
DEL
PROGRAMA
DE
COMPUTADORA
78
ALGORITMOS Y PROGRAMAS
La resolucin de problemas exige al menos los siguientes pasos:
1.
2.
3.
4.
ESPECIFICACIONES
DE ENTRADA
ANALISIS DEL
PROBLEMA
ESPECIFICACIONES
DE SALIDA
ALGORITMO:
Por ejemplo:
CALCULAR
SUPERFICIE (CIRCULO)
LONGITUD
(CIRCUNFERENCIAS)
DATOS DE
ENTRADA
RADIO
CALCULO DE SUPERFICIE
SALIDA DE
RESULTADOS
S = PI * R * R
CALCULO DE LA CIRCUNFERENCIA
L = 2 * PI * R
ENTRADA
PROCESO
SALIDA
79
RESOLUCION DEL
PROBLEMA CON
COMPUTADORA
CODIFICACION DEL
PROGRAMA
DATOS
BASURITA
EJECUCION DEL
PROGRAMA
COMPROBACION DEL
PROGRAMA
PROCESO
INFORMACION
PROCESO
BASURITA
PROCESO DE PROGRAMACION
DEFINICION DEL
PROBLEMA
DISEO DEL
ALGORITMO
DIAGRAMA DE FLUJO
CODIFICACION DEL
PROGRAMA - USO DE
UN LENGUAJES DE
PROGRAMACION
DEPURACION Y
VERIFICACION
D
O
C
U
M
E
N
T
A
C
I
O
N
M
A
N
T
E
N
I
M
I
E
N
T
O
80
PARTES DE UN PROGRAMA
INSTRUCCION
INSTRUCCION
INSTRUCCION
INSTRUCCION
INSTRUCCION
INSTRUCCION
...................
..................
..................
INSTRUCCION
INSTRUCCION
1
2
3
4
5
6
INSTRUCCIONES
DE ENTRADA
NOTA:
INSTRUCCIONES
CONDICIONALES
EN ALGUNOS
CASOS EXISTEN
PROGRAMAS CON
INSTRUCCIONES
DE UNA SOLA
PASADA
INSTRUCCIONES
DE PROCESO
INSTRUCCIONES
REPETITIVAS
7
8
INSTRUCCIONES
DE SALIDA
INSTRUCCION 1
INSTRUCCION 2
INSTRUCCION 3
INSTRUCCIONES
CONDICIONALES
ES CIERTO ?
NO
SI
Instruccione
Instruccione
Instruccione
Instruccione
1
2
3
4
Instruccione
Instruccione
Instruccione
Instruccione
1
2
3
4
INSTRUCCION n-2
INSTRUCCION n-1
INSTRUCCION
INSTRUCCIONES
REPETITIVAS
INSTRUCCION 1
INSTRUCCION 2
INSTRUCCION 3
FIN DE LA CONDICION
INSTRUCCION n-2
INSTRUCCION n-1
INSTRUCCION n
FIN
81
DIAGRAMAS DE FLUJO
Los diagramas de flujo representan la forma de especificar y documentar los detalles algortmicos de
un producto de programacin. Tambin podemos decir que el diagrama de flujo es la fotografa de la
solucin de un problema. Estos diagramas utilizan cajas rectangulares para especificar las acciones,
cajas en forma de rombos para las proposiciones de decisin, arcos dirigidos para las interconexiones
entre las diversas cajas, as como una variedad de formas especiales para denotar las entradas, las
salidas, los almacenamientos,
FUNCION TERMINAL.- Representa el inicio y el final de un programa
FUNCION SALIDA.-
82
DIAGRAMAS DE FLUJO
En un inicio, la programacin estructurada fue desarrollada en sus principios por Edsgar W. Dijkstra
en sus Notes on Structured Programming y se basa en el denominado Teorema de la Estructura
desarrollado en 1966 por Bmh y Jacopini, que se ratific con los trabajos de Charlan D. Mills.
En la actualidad existen diversas definiciones de estos diagramas, pero todas ellas giran alrededor
del teorema de estructura que, como ya hemos dicho, se debe a Bmh y Jacopini que inician todo esto
con esta tcnica de programacin a travs de mdulos o bloques.
Para un buen entendimiento del teorema mencionado, se realiza una definicin previa de algunos de
los conceptos que trata el teorema:
1.
C1
INICIO
C1
FIN
2.
83
Los diagramas de flujo estructurados difieren de los diagramas tradicionales en que los primeros
tienen restriccin en cuanto a las formas de uso; con las actuales se obtiene que la grfica obtenida
sea un equivalente grfico de la descripcin del problema por medio del seudo cdigo
estructurado; un ejemplo de las formas comunes y de los equivalentes en seudo cdigo son:
A
S
F
P
V
F
P
S1
S2
S
V
Mientras P sea
verdadero hacer S
Los diagramas estructurados poseen una entrada nica y una salida nica; as estas formas pueden
ser anidadas dentro de otras formas hasta el nivel deseado de anidamiento.
84
Estructura Secuencial. Es una estructura con una entrada y una salida en la cual figuran una
serie de acciones cuya ejecucin es lineal y en el orden en que aparecen. A su vez. Todas las
acciones tienen una nica entrada y una nica salida.
2.
Estructura Alternativa. Es una estructura con una sola entrada y una sola salida en la cual se
realiza una accin de entre varias, segn una condicin o se realiza una accin segn el
cumplimiento o no de una determinada condicin. Esta condicin puede ser simple o compuesta.
Las estructuras alternativas pueden ser:
COND
COND
Alternativa Simple
Alternativa doble
En el Matlab esta
85
De tres o ms salidas, que tambin se llama mltiple. En el Matlab esta representado por el
comando switch
Sintaxis
COND.
switch switch_expr
case case_expr
statement,...,statement
case case_expr
statement,...,statement
...
otherwise
statement,...,statement
end
Alternativa Mltiple
3.
Estructura Repetitiva. Es una estructura con una entrada y una salida en la cual se repite una
accin un nmero determinado o indeterminado de veces, dependiendo en este caso del
cumplimiento de una condicin. Las estructuras repetitivas pueden ser:
86
4.
Estructura MIENTRAS (WHILE). En esta estructura se repite una accin mientras se cumpla la
condicin que controla el bucle. La caracterstica principal de esta estructura es la de que la
condicin es evaluada siempre antes de cada repeticin.
El nmero de repeticiones oscila entre 0 e infinito, dependiendo de la evaluacin de la condicin,
cuyos argumentos en los casos de repeticin, al menos una vez, debern modificarse dentro del
bucle, pues de no ser as el nmero de repeticiones ser infinito y nos encontraremos en un bucle
sin salida.
Y = Y + 1
Y = Y + 1
87
Es una variable cuyo valor se incrementa o decrementa en una cantidad constante en cada iteracin.
Tiene la funcin de contar los sucesos o acciones del bucle. Una forma de controlar un bucle es
mediante un contador
N = N+1
CONCEPTO DE ACUMULADOR
S = S + N
CONCEPTO DE BUCLE
BUCLES INDEPENDIENTES
BUCLES ANIDADOS
88
EJERCICIO 1:
Disear el diagrama de flujo que permita escribir los nmeros del 1 al 1000
INICIO
I=1
SI
Es
I <=1000
Escribir I
NO
I = I + 1
FIN
EJERCICIO 2:
Calcular la suma de los 1000 primeros nmeros enteros
INICIO
I=1
S=0
SI
Es
I <=1000
NO
Escribir S
FIN
S = S + I
I = I + 1
89
EJERCICIO 3:
Escribir el diagrama de flujo para calcular el factorial de un nmero,
ingresado por teclado sea mayor que 1
INICIO
Leer N
SI
Es
N < = 1
NO
P = P * N
N = N - 1
IMPRIMIR
ERROR
NO
Es
N = 1
SI
ESCRIBIR P
1
FIN
90
Ejercicio 1-1
Preparar un algoritmo que represente la receta que se muestra a continuacin:
Ingredientes:
1.
2.
3.
4.
5.
6.
7.
8.
9.
Virtase la leche y aada la miel de maz, el azcar, el chocolate y la sal en un recipiente de 1 litro, y
cocnese en flama alta, mezclando constantemente hasta que hierva la mezcla. Redzcase, a flama
moderada y continese hirviendo y revolviendo hasta que una gota de la miel forme una pelota suave
en un vaso de agua fra. Qutese de la flama y djesele enfriar durante 10 minutos. Mzclese la
mantequilla y la vainilla hasta que estn completamente incorporadas. Agrguense las almendras.
Distribyanse las mitades de malvavisco en el fondo de una charola de horneado, de 30 centmetros
por lado, engrasada. Virtase la miel sobre los malvaviscos. Djesele enfriar durante 10 minutos.
Crtese en cuadros y srvase.
TOMADO DE: http://www.uady.mx/~contadur/fundamentos_de_programacion/ejercicios1.htm
Ejercicio 2.1
Un maestro asign a sus estudiantes el problema de construir un diagrama de flujo en la forma
siguiente. La entrada consista en las longitudes y anchuras de varios rectngulos. El objeto era
producir una lista con lneas numeradas consecutivamente que mostrasen la longitud L, el ancho W y
el rea A, nicamente de aquellos rectngulos cuyo permetro fuese mayor que 12. Los estudiantes
entregaron los diagramas de flujo que se encuentran en los diagramas adjunto del 1 al 8, como
soluciones al problema.
a.
b.
c.
Aplicar la prueba a cada uno de los diagramas (debers entregar la evidencia de cada prueba)
y dgase cules soluciones son correctas y cules incorrectas (para nuestro objeto una
solucin correcta es la que produce el resultado deseado. Sin embargo, puede no ser la ms
eficiente).
En cuanto a las soluciones incorrectas, cules son los errores?
Construir un diagrama de flujo que utilice las caractersticas ms eficientes de cada uno (el
programa ms eficiente es el que requiere el menor nmero de clculos).
1
2
3
4
L
8
10
6
8
W
4
6
3
5
91
92
93
Ejercicios propuestos
1.
2.
3.
4.
Hacer un diagrama que te pida un nmero y te diga si es par, es non y/o es primo.
5.
6.
7.
8.
Hacer un diagrama que pida la edad y despliegue si es menor de edad (<18), mayor (>=18) o si
pertenece a la 3 edad.(>=60)
9.
Hacer un diagrama que te pida un nmero y te diga si es par, es non y/o es primo.
94
TOMADO DE:
http://www.uady.mx/~contadur/fundamentos_de_programacion/ejemplos/Ejemplo_Ciclos1.jpg
95
Cinta magntica
Disco magntico
Conector de pagina
Lneas de flujo
Anotacin
96
TOMADO DE:
http://www.programaempresa.com/empresa/empresa.nsf/paginas/D7EFF6D4C6394D96C125702900
429390?OpenDocument
98
COMANDO IF.END
Sirve para realizar clculos con consultas o toma de decisiones, ello de acuerdo con la respuesta de la
consulta que puede ser VERDADERA o FALSA. La consulta puede ser con respecto a una, dos o tres
variables
if
EXPRESION
Else
end
99
OPERADORES NECESARIOS:
Less than
less than or equal to
greater than
greater than or equal to
equal to
not equal to
Element-wise
Element-wise
(<),
(<=),
(>),
(>=),
(==),
(~=)
AND (&)
OR (|)
A
S
V
P
F
P
S1
S2
S
V
CASO 1:
CASO 2:
CASO 2:
If p = 20
Hacer S
Else
No hace nada se va a FIN
end
If p = 25
No hace nada se va a FIN
Else
Hacer S
end
If p = 25
Hacer S1
Else
Hacer S2
end
If p = 20
Hacer S
end
100
PROBLEMA 1
Escribir el cdigo de programa y el diagrama de flujo para determinar si un nmero
ingresado por el teclado es par o impar
SOLUCION
%Hacer un programa que permita ingresar un nmero cualquiera por teclado y
%determine si dicho nmero es par o impar, tener en consideracin que no deben ingresar 0
ni nmeros negativos
clc;clear memory;clear command history;
ni=input('ingrese numero inicial : ');
par=0; impar=0; %mensaje=' ';
if ni<=0
mensaje='numero ingresado no es mayor que cero';
else
if rem(ni,2)~=0
mensaje='IMPAR';
else
mensaje='PAR';
end
end
disp(' ');disp(' ');
[mensaje]
101
INICIO
INGRESA VALOR DE
N
DEFINIR VARIABLES
n=VAL(TxtN)
SI
Es N <= 0
NO
SI
IF REM(N, 2) = 0
NO
TxtRpta = Es Par
TxtRpta = Es Impar
IMPRIMIR
RESULTADOS
IMPRIMIR
MENSAJE
FIN
102
PROBLEMA 2
Escribir un programa que permita ingresar cuatro dgitos: A, B, C y D de un entero positivo N . Se
desea redondear N a la centena ms prxima y visualizar el resultado. Por ejemplo: Si A es 2, B
es 3, C es 6 y D es 2, entonces N ser 2362 y el resultado redondeado ser 2400. Si N 2342 el
resultado ser 2300 y si N es 2962 el resultado ser 3000.
SOLUCION
% PROGRAMA DE REDONDEO
clear all; clear memory; clear command history; clc
a = input('Ingrese el primer digito
');
b = input('Ingrese el segundo digito
');
c = input('Ingrese el tercer digito
');
d = input('Ingrese el cuarto digito
');
if a > 0
x=1000*a + 100*b + 10*c + d
k=10*c + d;
if k>49
y = x + (100-k);
else
y = x - k;
end
end
[(y)]
%Numero ingresado
%Expresa las decenas del nmero
103
INICIO
INGRESA VALORES
DE A, B, C, D
NO
IF a>0
SI
X = 1000 * a + 100 * b + 10 * c + d
k = 10 * c + d
SI
IF k>49
NO
Y = X - k
NUMERO
REDONDEADO
FIN
Y = X + ( 100 k )
104
PROBLEMA 3
Supongamos que Ud. Solicita bolas de billar de diferentes colores pero que tendra que
ayudarse de un programa para verificar el color, tal que: 1=rojo, 2=azl, 3=verde,
4=amarillo y 5=negro
Escribir el cdigo de programa:
SOLUCION
Se digitar el cdigo de programa y tendr las siguientes ordenes
% Uso de if multiple
% 1=rojo, 2= azul, 3=verde, 4=amarillo 5=negro
clear all; clear memory; clear command history; clc;
color = input('Ingrese el numero que represente un color....');
if color == 1
color1='rojo'
else
if color == 2
color1='azul'
else
if color == 3
color1='verde'
else
if color == 4
color1 = 'amarillo'
else
if color == 5
color1 = 'negro'
else
color1 = 'no dado'
end
end
end
end
end
[color1]
105
INICIO
INGRESE
BOLA
COND
.
ROJO
COND
.
S
AZUL
N
COND
.
COND
.
VERDE
S
AMARILLO
COND
.
S
NEGRO
COLOR1
FIN
NO
DADO
106
COND.
FIN
107
OTRA FORMA
% Uso de if multiple
% 1=rojo, 2= azul, 3=verde, 4=amarillo 5=negro
clear all; clear memory; clear command history; clc;
color = input('Ingrese el numero que represente un color....');
if color == 1
color1='rojo'
end
if color == 2
color1='azul'
end
if color == 3
color1='verde'
end
if color == 4
color1 = 'amarillo'
end
if color == 5
color1 = 'negro'
else
color1 = 'no dado'
end
[color1]
108
INGRESE
BOLA
COND
.
S
ROJO
COND
.
S
AZUL
COND
.
S
VERDE
COND
.
S
AMARILLO
COND
.
S
NEGRO
COLOR1
FIN
NO
DADO
109
EJERCICIOS
RESOLVER 10 PROBLEMAS HACIENDO USO DEL COMANDO IF
110
COMANDO FOREND
111
COMANDO FOR
Sirve para realizar clculos repetitivos, repitiendo las sentencias que se encuentran dentro del bucle
un nmero especfico de veces.
Segn las necesidades de solucin del problema puede haber un solo bucle o puede haber varios
bucles for-end
for
VARIABLE = 1: N: M
end
112
Estructura Repetitiva. Es una estructura con una entrada y una salida en la cual se repite una accin
un nmero determinado o indeterminado de veces, dependiendo en este caso del cumplimiento de una
condicin. Las estructuras repetitivas pueden ser:
El caso dos es muy usado para construir la tabla de multiplicacin del 1 al 12 en un solo paso. El caso
tres podra darse en un proceso de simulacin simple.
113
PROBLEMA:
Hacer un programa y el diagrama de flujo que permita calcular la suma de la serie: ingresando el valor
de n
S = (1/2)+(2/2*2)+(3/2*2*2)+...+(n/2*2*2*2*.*n)
SOLUCION
% Uso del comando FOR
clear all; clear memory; clear command history; clc;
n = input('ingrese el valor de "n" : ');
su=0;
if n > 0
for I = 1:n ;
su = su + I / (2 ^ I);
end
disp(' ')
disp(' ')
[su]
else
disp(' ')
disp(' ')
disp('Ingresar valores de "n" mayores de cero')
end
NO
IMPRIMIR
ERROR
SI
FOR I = 1 to N
SU = SU + I / (2I)
IMPRIMIR
SU
DIAGRAMA DE FLUJO
FIN
114
PROBLEMAS 2
Hacer el diagrama de flujo y escribir el cdigo de programa para hacer la tabla del 1 al 12,
SOLUCION
% Uso del comando FOR
% Tabla de multiplicar
clear all; clear memory; clear command history; clc;
for n=1:12;
disp(' ')
fprintf(' TABLA DEL = %g \n ',n) ;
disp(' ')
for m=1:12 ;
p=m*n;
disp([m,n,p]);
end
end
FOR n = 1 to 12
IMPRIMIR
TABLA DE: n
FOR m = 1 to 12
p = m * n
IMPRIMIR
m, n, p
FIN
115
PROBLEMA
116
PROBLEMA: Un nmero perfecto es un entero positivo que es igual a la suma de todos los enteros
positivos (excluido el mismo) que son divisores del nmero. El primer nmero perfecto es 6, ya que
los divisores son 1, 2, 3 y 1 + 2 + 3 = 6.
Esquematice el Diagrama de flujo y escribir un programa que encuentre los nmeros perfectos en el
rango de 2 al nmero n ingresado por teclado
117
XX
SI
disp(['debe ingresar
cantidad mayor que cero'])
Es XX<= 0
NO
II = 1 to XX
I = 2 to round(II/I)
SI
Es II mod I = 0
SUMA = SUMA + II / I
NO
SI
NP = NP + 1
FIN
118
PROBLEMA DE AMONIACO
%PROGRAMA PARA EL PROCESO DE AMONIACO
clear all; clear memory; clear command history; clc;
ce1 = 2;
ce2 = 3;
ce3 = 1;
T=298; To=298; P=1;
for P=1:1:5;
T1=300:20:700;
a1 = 2.73.*10; b1 = 2.38E-2; c1 = 1.71E-5; d1 = -1.19E-8;
a2 = 2.71.*10; b2 = 9.27E-3; c2 = -1.38E-5; d2 = 7.65E-9;
a3 = 3.12.*10; b3 = -1.36E-2; c3 = 2.68E-5; d3 = -1.17E-8;
H=-45700;
syms T
dCp = (ce1*a1-ce2*a2-ce3*a3)+(ce1*b1-ce2*b2-ce3*b3)*T+(ce1*c1-ce2*c2ce3*c3)*T^2+(ce1*d1-ce2*d2-ce3*d3)*T^3;
I=H-((ce1*a1-ce2*a2-ce3*a3)*To+(ce1*b1-ce2*b2-ce3*b3)/2*To^2+(ce1*c1-ce2*c2ce3*c3)/3*To^3+(ce1*d1-ce2*d2-ce3*d3)/4*To^4);
DH=I+(ce1*a1-ce2*a2-ce3*a3)*T+(ce1*b1-ce2*b2-ce3*b3)/2*T^2+(ce1*c1-ce2*c2ce3*c3)/3*T^3+(ce1*d1-ce2*d2-ce3*d3)/4*T^4;
%DH1=I+(ce1.*a1-ce2.*a2-ce3.*a3).*T1+(ce1.*b1-ce2.*b2-ce3.*b3)./2.*T1.^2+(ce1.*c1-ce2.*c2ce3.*c3)./3.*T1.^3+(ce1.*d1-ce2.*d2-ce3.*d3)./4.*T1.^4;
R = 8.314;
% En joules
Go = -16160;
% En joules
To = 298;
ko = exp(-Go/(R*To));
Ka=exp(33.3398+(3642.8./T1)-6.97.*log(T1)+0.0020086.*T1+0.0000009776.*T1.^20.00000000035041.*T1.^3);
Tc1 = 405.7; Tc2 = 33.19; Tc3 = 126.2;
Pc1 = 111.32; Pc2 = 12.96; Pc3 = 33.55;
Pr1 = P./Pc1; Pr2 = P./Pc2; Pr3 = P./Pc3;
Tr1 = T1./Tc1; Tr2 = T1./Tc2; Tr3 = T1./Tc3;
w1=0.253;
w2=-0.216; w3=0.038;
Bo1=0.083-0.422./Tr1.^1.6; Bo2=0.083-0.422./Tr2.^1.6; Bo3=0.083-0.422./Tr3.^1.6;
B11=0.139-0.172./Tr1.^4.2; B12=0.139-0.172./Tr2.^4.2; B13=0.139-0.172./Tr3.^4.2;
Fi1=2.7182.^((Pr1./Tr1).*(Bo1+w1.*B11));
Fi2=2.7182.^((Pr2./Tr2).*(Bo2+w2.*B12));
Fi3=2.7182.^((Pr3./Tr3).*(Bo3+w3.*B13));
Fit=Fi1.^ce1./((Fi2.^ce2).*(Fi3.^ce3));
nombre_f='(4.*Fit.*(x.^2).*(4-2.*x).^2./((1-x).*(P.^2).*(3-3.*x).^3))- Ka';
i=1; delta=0.05; x0=0.88; e=1;
while e>3E-12 & i<=18
x=x0;
fx0=eval(nombre_f);
x=x0-delta;
df1=eval(nombre_f);
x=x0+delta;
df2=eval(nombre_f);
dfx0=(df2-df1)./(2.*delta);
r=x0-(fx0./dfx0);
e=abs((r-x0)./r);
x0=r;
i=i+1;
119
end
%fprintf('la raiz es:%10.9f\n',x0);
hold on
switch P
case 1
xox='-r';
case 2
xox='-k';
case 3
xox='-b';
case 4
xox='-m';
case 5
xox='-R';
end
plot(T1,x0,xox); h = legend('P=1 atm','P=2 atm','P=3 atm','P=4 atm','P=5 atm',1);
xlabel('Temperatura - K'); ylabel('Extensin de la reaccin');
title('EXTENSION VS TEMPERTAURA PARA EL PROCESO AMONIACO')
axis([250 700 0 1])
grid on
P,[T1' x0' Fit']
end
%fprintf('la raiz es:%10.9f\n',x0)
RESULTADOS
120
PRESION= 1 atm
P= 2
P= 1
300.0000
320.0000
340.0000
360.0000
380.0000
400.0000
420.0000
440.0000
460.0000
480.0000
500.0000
520.0000
540.0000
560.0000
580.0000
600.0000
620.0000
640.0000
660.0000
680.0000
700.0000
PRESION = 2 atm
0.8267
0.7710
0.7079
0.6393
0.5677
0.4960
0.4271
0.3633
0.3062
0.2565
0.2142
0.1787
0.1493
0.1251
0.1053
0.0891
0.0758
0.0648
0.0559
0.0485
0.0424
300.0000 0.8771
320.0000 0.8365
340.0000 0.7895
360.0000 0.7368
380.0000 0.6796
400.0000 0.6192
420.0000 0.5575
440.0000 0.4964
460.0000 0.4375
480.0000 0.3824
500.0000 0.3320
520.0000 0.2869
540.0000 0.2473
560.0000 0.2128
580.0000 0.1833
600.0000 0.1581
620.0000 0.1366
640.0000 0.1185
660.0000 0.1031
680.0000 0.0901
700.0000 0.0791
PRESION = 3 atm
P=4
P=3
300.0000
320.0000
340.0000
360.0000
380.0000
400.0000
420.0000
440.0000
460.0000
480.0000
500.0000
520.0000
540.0000
560.0000
580.0000
600.0000
620.0000
640.0000
660.0000
680.0000
700.0000
PRESION= 4 atm
0.8998
0.8664
0.8274
0.7831
0.7343
0.6818
0.6268
0.5707
0.5149
0.4607
0.4092
0.3615
0.3179
0.2787
0.2440
0.2135
0.1870
0.1640
0.1441
0.1270
0.1122
300.0000
320.0000
340.0000
360.0000
380.0000
400.0000
420.0000
440.0000
460.0000
480.0000
500.0000
520.0000
540.0000
560.0000
580.0000
600.0000
620.0000
640.0000
660.0000
680.0000
700.0000
0.9135
0.8845
0.8504
0.8116
0.7683
0.7214
0.6715
0.6198
0.5674
0.5154
0.4649
0.4168
0.3719
0.3306
0.2931
0.2594
0.2295
0.2032
0.1800
0.1598
0.1421
PROBLEMA:
Disear el diagrama de flujo y cdigo de programa: para determinar la cantidad de nmero
primos existentes en un rango (entre 1 y el nmero ingresado por teclado)
121
NO
disp(['debe ingresar
cantidad mayor que cero'])
Es NN>0
SI
XX = 0
n = 1 To NN
X = 0
P=2 to n-1
SI
Es rem(n,p) = 0
NO
SI
XX = XX + 1
122
EJERCICIOS
Hacer 10 programas usando el Comando FOR END
123
COMANDO WHILE
124
COMANDO WHILE
El bucle while es similar al bucle for en el que permite repetir la ejecucin de las
sentencias Matlab, la sintaxis del bucle while tiene la siguiente forma:
while expression
% MATLAB command 1
% MATLAB command 2
% Mas comandos para ejecutar repetidamente hasta que la expresin sea no verdadera
end
Donde la expresin es una expresin lgica y que puede ser falsa o verdadera, por ejemplo:
consideramos el siguiente bucle while
n=1
while n < 3
n = n+1
end
Este cdigo crea la siguiente salida:
n=
n=
n=
Tambin
count = 1;
num = 2;
while count < 16
cnum= [count num]
% forms a vector
disp(cnum)
% pretty printing
num = num*2;
count = count + 1;
if count >= 10
break
end
end
% expression is modified
125
NO
Condicin Verdadera ?
SI
Sentencias en el Cuerpo
del bucle
FIN
<
Menor que
>
Mayor que
<=
>=
==
Igual
~=
No igual
&
Y
O
No
126
1
2
Tc (K)
Pc
(bar)
Zc
Vc
cm3/mol
508,1
507.5
47,0
30,1
0.232
0,264
209
370
0.304
0,299
7,11714
6,91058
1210,595
1189,64
229,664
226,280
Donde :
A, B, C: constantes de Antoine: log(Psat ) = A
B
, T: C y Psat : mmHg.
( T + C)
127
ALGORITMO
Leer temperatura (T1) y fraccin molar gaseosa (Y1) Constantes
Hacer
i = 1.0
Gammai = 1.0
Calcular Psat
/ Gammai* Pisat )
Calcular Presin:
P = 1 / ( Yi * i
Calcular Xi
Xi = ( Yi * i * P ) / (Gammai * Pisat )
P = = 1 / ( Yi * i
/ Gammai* Pisat )
Evaluar i
Xi
No
Es Gammai < 0
Si
Calcular Presin:
P = 1 / ( Yi * i
/ Gammai* Pisat )
No
Es P < 0
Si
Pi Xi
128
T = 20 + 273;
x2=y2*fi2*P/(gama2*Psat2);
gama11=0; gama22=0;
while (PP-P)>0.00001
while gama11-gama1>0.00000001
%Nuevo calculo de x1 y x2
xx1 = y1*fi1*PP/(gama1*Psat1);
xx2 = y2*fi2*PP/(gama2*Psat2)
xtot = xx1 + xx2; xx1 = xx1/(xx1+xx2); xx2=xx2/(xx1+xx2); %forzando a 1.0
xtot1 = xx1 + xx2; x1 = xx1;
x2 = xx2
%Recalculo de gama1 y gama2
gama1=gama11;
gama2=gama22; A12 = 1.7448; A21 = 1.8012;
gama11 = exp(x2 ^ 2 * (A12 + 2 * x1 * (A21 - A12)))
gama22 = exp(x1 ^ 2 * (A21 + 2 * x2 * (A12 - A21)))
end
P=PP; PP = 1/( y1*fi1/(gama1*Psat1) + y2*fi2/(gama2*Psat2))
end
[ x1 x2 P ]'
RESULTADOS=
COMPOSICION DE ACETONA
COMPOSICION DE HEXANO
PRESION DE ROCIO
:
:
:
0.5048
0.4952
176.6582
129
130
EJERCICIOS
1.
Al final del ao las empresas cuentan con ganancias de las cuales una parte se distribuye entre
los trabajadores y es llamada utilidad total a distribuir (UAD). En base a la UAD se obtiene la
utilidad que recibir determinado trabajador(UADT).
Para hallar la utilidad se debe tener en cuenta los ingresos y los gastos de la empresa de
acuerdo a sus ventas de acuerdo a las siguientes relaciones:
-
2.
Implementar un programa en VBA, que nos diga el da de la semana que corresponda a una fecha
ingresada en forma de dia (xx), mes (yy), ao (yyyy)
da
mes
ao
da de la semana
(Respuesta)
131
- Enero, octubre: 1
- Mayo: 2
- Agosto: 3
- Febrero, marzo, noviembre: 4
- Junio: 5
- Septiembre, diciembre: 6
D. Reste 1 si el mes ingresado es enero o febrero y el ao ingresado es bisiesto.
E. De acuerdo al ao ingresado (asuma que el ao ingresado se encuentra en alguno de los
rangos anteriores), aada:
- Para los 1700 - 1799 4
- Para los 1800 - 1899 2
- Para los 1900 - 1999 0
- Para los 2000 - 2999 6
F. Aada al resultado los ltimos dos dgitos del ao.
G. Por ltimo, divida entre 7 y tome el resto.
El resultado ser un nmero entre 0 y 6, que corresponder a un da de la semana: 0 sbado, 1
domingo, 2 lunes, 3 martes, 4 mircoles, 5 jueves, 6 viernes.
NOTA:
Un ao es bisiesto si ocurre que:
Es divisible por 4 y no por 100
Es divisible por 400.
3.
Se tiene una diana (bull) para el juego de dardos, formada por 5 zonas delimitadas por
circunferencias concntricas de radio 2, como se observa en la figura. Cada punto Px, est
conformado por (x, y) o datos de ingreso.
132
Para lo cual se pide desarrollar un Diagrama de flujo y el Programa correspondiente para que
nos devuelva el mensaje correspondiente, segn los casos siguientes:
4.
Hacer el Diagrama de flujo y el programa correspondiente para calcular la suma de los cubos de
los dgitos de un nmero natural ingresado por el teclado, el nmero ingresado puede ser de 3, 4,
5 y 6 dgitos, pero no de 1 ni de 2.
5.
Hacer 10 problemas relacionado con la Ingeniera Qumica haciendo uso de comando WHILE
133
ECUACIONES LINEALES
134
x =
y =
a1,1
a1,n
:
x1
:
xn
y1
:
yn
x=A\y
x = inv(A) * y
z=y/A
inv(A) * y
A ^ (-1) * y
Y * inv(A)
X1 + 2x2 + 3x3
2x1 + x2 + 2x3
2x1 + x2 + x3
= 14
= 10
= 9
>> y = [14 ; 10 ; 9 ]
y=
14
10
9
>> x = A \ y
>> x = inv(A) * y
x=
x=
>> inv(A) * y
>> A ^ (-1)* y
z=
ans =
ans =
ans =
>> A = [ 1 2 3; 2
A=
1
2
2
1.6667
1 2; 2 1 1]
4.6667
2
1
1
3
2
1
1.0000
1.6667
4.6667
1.0000
1.6667
4.6667
1.0000
1.6667
4.6667
1.0000
1.6667
4.6667
1.0000
1.6667
4.6667
1.0000
135
PARTE TEORICA
Un sistema de ecuaciones lineales es un conjunto de ecuaciones lineales que podemos escribir de
forma tradicional as:
un sistema as expresado tiene "m" ecuaciones y "n" incgnitas, donde aij son nmeros reales,
llamados coeficientes del sistema,
los valores bm son nmeros reales, llamados trminos
independientes del sistema,
las incgnitas
xj
son las variables del sistema,
y la solucin del sistema es un conjunto ordenado de nmeros reales (s1, s2, ..., sn) tales que al
sustituir las incgnitas x1, x2, ... , xn por los valores s1, s2, ..., sn se verifican a la vez las "m"
ecuaciones del sistema.
Este mismo sistema de ecuaciones lineales en notacin matricial tiene esta forma:
Donde:
Llamamos matriz del sistema a la matriz de dimensin mn formada por los coeficientes del
sistema, y la designamos por A.
Designamos por X a la matriz columna formada por las incgnitas.
Denotamos por B a la matriz columna formada por los trminos independientes.
As mismo; llamamos matriz ampliada de dimensin m(n+1) a la matriz que se obtiene al aadir a la
matriz del sistema (= matriz de coeficientes) la columna de los trminos independientes, y la
denotamos por A*, es decir
136
SALIDA:
ingrese funcin asociada f(x)= x^3+3*x
ingrese lmite inferior: 4
ingrese lmite superior: 8
it
1
2
3
4
5
6
7
8
9
10
a
4.000000
6.000000
7.000000
7.500000
7.750000
7.875000
7.937500
7.968750
7.984375
7.992188
b
8.000000
8.000000
8.000000
8.000000
8.000000
8.000000
8.000000
8.000000
8.000000
8.000000
aprox
6.000000
7.000000
7.500000
7.750000
7.875000
7.937500
7.968750
7.984375
7.992188
7.996094
error
1.000000
0.142857
0.066667
0.032258
0.015873
0.007874
0.003922
0.001957
0.000978
0.000489
137
%10.6f %10.6f',i,a,b,r);
if fa*fr<=0
b=r; e=abs((r-va)/r);
fprintf(' %10.6f\n',e);
else
a=r; e=abs((r-va)/r);
fprintf(' %10.6f\n',e);
end
i=i+1;
end
fprintf('\n'); fprintf('la raz es: %10.9f\n', r);
SALIDA:
ingrese funcin asociada f(x)= sqrt(x)+2*x
ingrese lmite inferior: 2
ingrese lmite superior: 6
it
1
2
3
4
5
6
7
8
9
10
a
2.000000
4.000000
5.000000
5.500000
5.750000
5.875000
5.937500
5.968750
5.984375
5.992188
b
6.000000
6.000000
6.000000
6.000000
6.000000
6.000000
6.000000
6.000000
6.000000
6.000000
aprox
4.000000
5.000000
5.500000
5.750000
5.875000
5.937500
5.968750
5.984375
5.992188
5.996094
error
1.000000
0.200000
0.090909
0.043478
0.021277
0.010526
0.005236
0.002611
0.001304
0.000651
138
e=1; delta=0.001;
SALIDA:
Ingrese funcin asociada f(x) = sqrt(x)+2*x^3
Ingrese valor inicial : 12
it
aprox
1 12.000000
2
7.996659
3
5.324967
4
3.538690
5
2.338336
6
1.520431
7
0.941642
8
0.489185
9
0.055119
10 -0.054335
11 0.054324
12 -0.053579
13 0.053535
14 -0.052828
15 0.052757
16 -0.052087
17 0.051994
18 -0.051359
g(x)
7.996659
5.324967
3.538690
2.338336
1.520431
0.941642
0.489185
0.055119
-0.054335
0.054324
-0.053579
0.053535
-0.052828
0.052757
-0.052087
0.051994
-0.051359
0.051247
error
0.500627
0.501729
0.504785
0.513337
0.537942
0.614659
0.924921
7.875092
2.014432
2.000056
2.013915
2.000502
2.013405
2.000890
2.012908
2.001225
2.012426
2.001513
139
SOLUCION
3
2
1
0
-1
-2
-3
-4
-5
-6
10.9
10.95
11
11.05
11.1
11.15
11.2
11.25
140
EJERCICIOS:
Escribir 10 ejercicios para el caso de ecuaciones lineales homognea
AJUSTE DE CURVAS
METODO MINIMOS CUADRADOS
142
figure
plot(y,x,'o-b')
xlabel('X');
ylabel('Y')
axis([-6 14 -10 15])
grid on
figure
Sx=sum(x);
Sy=sum(y);
Sx2=sum(x.^2);
Sy2=sum(y.^2);
Sxy=sum(x.*y);
N=length(x)
figure
%hold on
%X variable dependiente: X = b1 + m1*Y
b1=(Sx*Sy2-Sy*Sxy)/(N*Sy2-Sy^2)
m1=(N*Sxy-Sx*Sy)/(N*Sy2-Sy^2)
143
yy=-5:1:10; plot(yy,b1+m1*yy,'b',y,x,'k*-')
text(-3.5,-7,' \leftarrow X=b1+m1*Y ','EdgeColor','black','LineWidth',2);
text(1.5,-6.4,['b = ',num2str(b1)])
text(1.5,-7.4,['m = ',num2str(m1)])
xlabel('X');
ylabel('Y')
axis([-6 14 -10 15])
TAREA
% falta calcular el error
% verificar en la bibliografa y adicionar ....TAREA
144
145
RECOMENDACIONES:
1.
Es necesario revisar el Help del MatLab para verificar el significado de cada uno de los
comandos
2.
146
AJUSTE DE CURVAS
DIFERENCIACION NUMERICA
La Media, la Mediana, Medidas de Dispersin Ajuste de
Curvas
147
se puede representar mediante el vector [1, 0, -8, 6, -10]. MATLAB puede realizar diversas
operaciones sobre l, como por ejemplo evaluarlo para un determinado valor de x (funcin polyval()) y
calcular las races (funcin roots())
>> pol = [ 1 0 -8 6 10 ]
pol =
1
0
-8
6
>> polyval(pol,4)
-10
>> roots(pol)
ans =
-3.2800
2.6748
0.3026 + 1.0238i
0.3026 - 1.0238i
ans =
142
>> polyval(pol,2)
>> polyval(pol,5)
ans =
ans =
445
-14
Para calcular el producto de polinomios MATLAB utiliza una funcin llamada conv() (de producto de
convolucin). En el ejemplo se va a ver cmo se multiplica un polinomio de segundo grado por otro de
tercer grado, asi mismo; Para dividir polinomios existe otra funcin llamada deconv(). Por ejemplo;
sean los polinomios siguientes:
Pol1 = X2 2X + 4
pol2 = X3 + 3X 4
>> pol1 = [ 1 -2 4 ]
pol1 =
1
-2
4
pol4 =
1
>> pol2 = [ 1 0 3 4 ]
pol2 =
1
0
3
-4
>> pol3 = conv(pol1,pol2)
pol3 =
1
-2
7
-10
-4
-16
El polinomio ser:
-2
148
poly(A)
roots(pol)
polyval(pol,x)
polyvalm(pol,A)
conv(p1,p2)
[c,r]=deconv(p,q)
residue(p1,p2)
polyder(pol)
polyder(p1,p2)
polyfit(x,y,n)
interp1(xp,yp,x)
interp1(xp,yp,x,'m')
AJUSTE POLINOMIAL:
Si se dispone de n+1 puntos (xi,yi), se pueden encontrar un polinomio nico de orden n . Estos
coeficientes ser determinados por la funcin polyfit . Sean los puntos (x,y): (1,2), (2,5), (3,10),
(4,17), (5,26), la aplicacin estar dado por:
EDU>> x = [ 1 2 3 4 5 ] ;
EDU>> y = [ 2 5 10 17 26 ] ;
EDU>> a = polyfit( x , y , length(x) 1 )
a=
0.0000 0.0000 1.0000 0.0000 1.0000
y = x2 + 1
149
El concepto nos sirve para ajustar curvas cuando tenemos un conjunto de puntos tales como:
Xi = [590 1100 1750 2400 3200 4100 5800 6700 7800 8900 11000];
Vsz = [3.306 2.71 2.13 1.65 1.16 0.82 0.38 0.30 0.22 0.13 0.08];
Graficando
siguiente:
obtendremos
lo
150
El estudiante podr probar ajustes de 5th, 6th y 7th grado polinomial y escribir sus conclusiones
Tambin podemos escribir cdigo de programa para ajustar curvas, un caso particular es el mtodo
de mnimos cuadrados para un ajuste lineal. A continuacin se muestra un ejemplo tpico:
%Ejemplo - Ajuste Lineal
%Y variable dependiente: Y = b + m*X
clc;clear memory; clear command history
x=[1 3 4 6 8 9 11 14]
y=[1 2 3.8 4 5 7 8 9]
plot(x,y,'o-r')
xlabel('X'); ylabel('Y')
axis([-6 15 -10 15])
grid on
figure
plot(y,x,'o-b')
xlabel('X'); ylabel('Y')
axis([-6 14 -10 15])
grid on
figure
Sx=sum(x); Sy=sum(y); Sx2=sum(x.^2); Sy2=sum(y.^2); Sxy=sum(x.*y); N=length(x)
%Y variable dependiente: Y = b1 + m1*X
b=(Sy*Sx2-Sx*Sxy)/(N*Sx2-Sx^2)
m=(N*Sxy-Sx*Sy)/(N*Sx2-Sx^2)
xx=-3:1:14; plot(xx,b+m*xx,x,y,'r-')
text(5,2.8,' \leftarrow Y=b+m*X ','EdgeColor','red','LineWidth',2);
text(9.5,3.5,['b = ',num2str(b)])
text(9.5,2.4,['m = ',num2str(m)])
151
xlabel('X'); ylabel('Y')
axis([-6 15 -10 15])
figure
%hold on
%X variable dependiente: X = b1 + m1*Y
b1=(Sx*Sy2-Sy*Sxy)/(N*Sy2-Sy^2)
m1=(N*Sxy-Sx*Sy)/(N*Sy2-Sy^2)
yy=-5:1:10; plot(yy,b1+m1*yy,'b',y,x,'k*-')
text(-3.5,-7,' \leftarrow X=b1+m1*Y ','EdgeColor','black','LineWidth',2);
text(1.5,-6.4,['b = ',num2str(b1)])
text(1.5,-7.4,['m = ',num2str(m1)])
xlabel('X'); ylabel('Y')
axis([-6 14 -10 15])
152
DIFERENCIACION
La derivada de un polinomio es
1 2 3 4 5
>> n = length(p) 1
n= 4
>> q = p . * [ n : -1 : 1 , 0]
q= 4 6 6 4 0
>> q = polyder(p)
q= 4 6 6 4
Tambin
( 3X2 + 6X + 9 )*( x2 + 2X )
a = [3 6 9];
a = [3 6 9];
b = [1 2 0];
b = [1 2 0];
k = polyder(a,b)
c = conv(a,b)
k=
12
c= 3
36
42
18
12
21
18
kk=polyder(c)
kk = 12
36
42
18
153
otro:
154
ESTADISTICA DESCRIPTIVA
MEDIA
M=mean(A) retorna el valor medio de los elementos de arreglos de diferentes dimensiones
Si A es un vector, mean(A) retorna el valor medio de A
Si A es una matriz, mean(A) trata las columnas de A como vectores, retornando un vector
fila con los valores de la media, por ejemplo:
>> a=[2 4 6 8 3 6 8]
>> A = [1 2 3; 3 3 6; 4 6 8; 4 7 7]
a=
A=
2
>> mean(a)
ans =
1
3
4
4
2
3
6
7
3
6
8
7
>> mean(A)
ans =
5.2857
3.0000
4.5000
6.0000
MEDIANA
M=median(A) retorna el valor de la mediana de los elementos de un arreglo de cualquier
dimensin. Si A es un vector, median(A) retorna el valor de la mediana de A. Si A es una
matriz, median(A) trata a las columnas de A como un vector y retorna un vector fila con los
valores de la mediana, por ejemplo:
>> A = [1 2 4 4; 3 4 6 6; 5 6 8 8; 5 6 8 8]
x=
A=
4
>> median(x)
ans =
6
10
12
1
3
5
5
2
4
6
6
4
6
8
8
4
6
8
8
>> median(A)
ans =
4
155
DESVIACION ESTNDAR
Hay dos definiciones para la desviacin estndar de S de un vector de datos X
Sintxis
S=std(X)
S=std(X,flag)
S=std(X,flan,dim)
Por definicin sabemos:
EJERCICIOS
Hacer 10 ejercicios, con los comandos estudiados en este captulo
INTEGRACION NUMERICA
157
');
%f
n=2*n;
xmin=a;
xmax=b;
h=(b-a)/n;
x=a:h:b;
fx=eval(f);y=abs(fx);
suma1=y(1)+y(n+1);
suma2=3*sum(y(2:3:n-1));
suma3=3*sum(y(3:3:n));
suma4=2*sum(y(4:3:n-2));
suma= suma1+suma2+suma3+suma4;
integral=(3/8)*h*suma;
fprintf('El rea es : %10.9f\n ',integral);
% grfico
hold on
xp= xmin:0.1:xmax;
x=xp;
yp=eval(f);
x3=0:0.01:0.95;
x=x3;
yp1=eval(f);
plot(x3,yp1,'r',xp,yp,'bo')
x=a:0.1:b;
y=eval(f);
bar(x,y,'y');
axis([0 1 0 30])
% Metodo Abreviado
syms x
yy=int('3.2824e+5*x^10-1.5407e+6*x^9+3.1342e+6*x^8-3.6235e+6*x^7+2.6261e+6*x^61.2424e+6*x^5+3.8818e+5*x^4-79512*x^3+10465*x^2-855.51*x+44.084','x',0.25,0.75)
%yy=3.2824e+5.*x.^10 - 1.5407e+6.*x.^9 + 3.1342e+6.*x.^8 - 3.6235e+6.*x.^7 + 2.6261e+6.*x.^6 1.2424e+6.*x.^5 + 3.8818e+5.*x.^4 - 79512.*x.^3 + 10465.*x.^2 - 855.51.*x + 44.084
y=(3.2824e+5.*x.^10 - 1.5407e+6.*x.^9 + 3.1342e+6.*x.^8 - 3.6235e+6.*x.^7 + 2.6261e+6.*x.^6 1.2424e+6.*x.^5 + 3.8818e+5.*x.^4 - 79512.*x.^3 + 10465.*x.^2 - 855.51.*x + 44.084);
158
RESPUESTA:
Introducir la funcin sgte:
y=(3.2824e+5.*x.^10 - 1.5407e+6.*x.^9 + 3.1342e+6.*x.^8 3.6235e+6.*x.^7 + 2.6261e+6.*x.^6 -1.2424e+6.*x.^5 + 3.8818e+5.*x.^4 - 79512.*x.^3 + 10465.*x.^2
- 855.51.*x + 44.084);
Mtodo Simpson
El rea es yy = 5.3937307293604290674603174603175
Mtodo abreviado
OJO.Explique la diferencia
30
25
20
15
10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
159
10
160
EJERCICIOS:
Escribir 10 funciones para su integracin, con los dos mtodos (programa y orden abreviada)
161
BIBLIOGRAFIA
1.
2.
Perez, Cesar - MATLAB Aplicaciones en las Ciencias y la Ingeniera Edit. Prentice Hall 2002
3.
4.
5.
Chapra, Steven - Mtodos Numricos para Ingenieros - Edit. Mc. Graw Hill 2004
6.