Beruflich Dokumente
Kultur Dokumente
M
etodos Num
ericos para el
C
alculo Cientfico con Matlab
TOMO 0
Presentado por:
Mera Carrasco, Junior Lino
Asesor:
Dr. Collantes Santisteban, Luis Jaime
UNPRG
UNIVERSIDAD NACIONAL
PEDRO RUIZ GALLO
M
etodos Num
ericos para el C
alculo
Cientfico con Matlab
TOMO 0
CONCEPTOS PREVIOS
Presentado por:
Asesor:
LAMBAYEQUE PERU
2014
Introducci
on
La presentacion de estos tomos tiene su origen en los Seminarios denominados FUN
DAMENTOS DE ECUACIONES NO LINEALES, INTERPOLACION,
DIFEREN E INTEGRACION
NUMERICA
CIACION
PARA EL CALCULO
CIENTIFICO y
CALCULO
CIENTIFICO DE ECUACIONES NO LINEALES, INTERPOLACION,
E INTEGRACION
NUMERICA
DIFERENCIACION
CON MATLAB desarrollados
en Diciembre del 2012 como investigacion de los cursos de Seminario de Matematica
Pura y Aplicada de la carrera profesional de Matematicas de la Universidad Nacional
Pedro Ruiz Gallo con el asesoramiento del Dr. Luis Jaime Collantes Santisteban, dichos
trabajos enfocaban la parte teorica y practica de algunos temas del Calculo Cientfico.
Estos tomos no son documentos comerciales, por el contrario decidimos trabajar para
que se encuentre al alcance de todos, es bien sabido la dificultad que tienen estudiantes
y profesionales de ingeniera, ciencias medicas, ciencias economicas entre otras para idealizar sus problemas y desarrollar un modelo matematico adecuado en algunos casos es
difcil porque la aplicacion resulta excesivamente compleja o los metodos analiticos no se
adecuan muy bien a sus resultados por ello es conveniente el uso de metodos numericos
los cuales conducen a soluciones aproximadas pero mas manejables y se puede dar uso
a un ordenador provisto de un software adecuado, para nuestro caso Matlab.
Metodos Numericos para el Calculo Cientfico con Matlab esta divido en 7 tomos:
Metodos Numericos para el Calculo Cientfico con Matlab, explicara de manera sencilla
y con ejemplos el uso y la programacion de Interfaces Graficas de Usuario (GUI) as como el clasico uso de los archivos .m y por supuesto la solucion manual.
Para concluir este tomo en el tercer captulo explicamos los conceptos que se deben tener
sobre las Interfaces Graficas y la elaboracion del modelo basico de nuestros GUIs.
Por favor, soy Rodney McKay, difcil tarda unos segundos. Imposible, un par de minutos. Dr. Rodney McKay - Stargate Atlantis
INDICE GENERAL
1. Preliminares
1.1. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
1.1.3. Determinante . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.4. Inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
12
16
19
20
. . . . . . . . . . . . . . . . . . . . . . . . . . .
21
23
2. Matlab
25
25
27
37
37
38
38
39
39
39
40
40
41
50
55
56
57
. . . . . . . . . . . . . . . . . . . . . . . . . . .
57
61
. . . . . . . . .
61
63
63
64
2.14. Graficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
66
82
85
. . . . . . . . . . . . . . . . . . . . . . .
85
86
3. Interfaz Gr
afica de Usuario
3.1. Conceptos Previos
89
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
89
90
96
Captulo 1
PRELIMINARES
1.1.
Matrices
muestra a continuacion:
A=
(1.1)
b2
b3
...
bm ]
1.
Preliminares
c=
c1
c2
..
.
cn
Al conjunto de elementos aii (subndice igual) de una matriz se le conoce como diagonal
principal.
Las matrices cuadradas (n = m) son particularmente importantes en la solucion de
sistemas de ecuaciones lineales. Para tales sistemas, el n
umero de ecuaciones (que corresponde al n
umero de filas) y el n
umero de incognitas (que corresponde al n
umero de
columnas) tienen que ser iguales para que exista una posible solucion u
nica.
Definici
on 1.1.1. (Transpuesta) Sea A = [aij ] una matriz de (n m), entonces la
traspuesta de A, es la matriz de (m n) obtenida intercambiando las filas por las
columnas de A, es decir, AT = [aji ]
Algunas propiedades
Propiedad 1. (AT )T = A
Propiedad 2. (AB)T = B T AT
Propiedad 3. (A + B)T = AT + B T
Propiedad 4. det(A)1 = det(A1 ) Suponiendo que A1 existe.
1.1.1.
1.
Preliminares
Una matriz triangular inferior es una donde todos los elementos arriba de la
diagonal principal son iguales a cero.
1.1.2.
p
X
j = 1, . . . , m
k=1
1.1.3.
Determinante
Definici
on 1.1.2. El determinante viene a ser una funcion que aplicada a una matriz
cuadrada da un u
nico valor numerico
| | : Mnn R( o C)
A
|A|
(1.2)
1.
Preliminares
10
a b
det(A) = |A| = ad bc .
2. Si A =
c d
3. El menor Mij es el derminante de la submatriz de (n 1) (n 1) de una matriz
A de (n n) suprimiendo la i-esima fila y la j-esima columna.
4. El cofactor Aij asociado con Mij se define como Aij = (1)i+j Mij .
5. El determinante de una matriz cuadrada se define mediante la siguiente formula
recursiva (regla de Laplace):
a11
si n = 1
n
det(A) =
P
j=1
i = 1, . . . , n
(1.3)
PROPIEDADES
Propiedad 1. Si cualquier fila o columna de A es el vector cero , entonces det(A) = 0.
Propiedad 2. Si la i-esima fila o la j-esima columna de A se multiplican por una
constante k, entonces det(A) se
a11 a12
a21 a22
..
..
.
.
det(B) =
kai1 kai2
..
..
.
.
an1 an2
. . . a1n
. . . a2n
..
.
. . . ain
..
.
. . . ann
= k|A|
(1.4)
1.
Preliminares
11
entonces det(A) = 0.
Propiedad 7. Si un m
ultiplo de una fila (columna) de A se suma a otro fila (columna)
de A, el determinante no cambiara.
Propiedad 8. det(A) = det(AT )
Propiedad 9. det(AB) = det(A)det(B)
1.1.4.
Inversa
1.
Preliminares
1.2.
12
Repaso de C
alculo
Definici
on 1.2.1. Una ecuacion lineal con n variables x1 , x2 , . . . , xn es una igualdad
matematica que puede escribirse de la forma: a1 x1 + a2 x2 + . . . + an xn = b, donde ai se
conocen como coeficientes de la ecuacion y a b el termino constante. Si b = 0 se llama
ecuacion homogenea.
Definici
on 1.2.2. Si f () = 0, se llama cero de f o raz de la ecuacion f (x) = 0. Un
cero es simple si f () 6= 0, y m
ultiple en caso contrario.
Todos los metodos n
umericos de resolucion de ecuaciones presentan dificultades cuando
la ecuacion tiene races multiples ya que todos ellos se basan en los cambios de signo de
la funcion y estos son difcilmente detectables en un entorno de una raz m
ultiple.
Para funciones que son polinomios de grado n con coeficientes reales, es decir, tiene la
forma
2
pn (x) = a0 + a1 x + a2 x + . . . + an x =
n
X
k=0
ak xk ,
ak R, an 6= 0.
n 5, aplicando u
nicamente un n
umero finito
n
X
ak xk .
(1.5)
k=0
1.
Preliminares
13
Teorema 1.2.4. (Del Residuo) El estudio obtenido al dividir un polinomio p(x) por
(x ) es igual a p()
p(x) = (x )q(x) + r, evaluando en x = , tenemos : p() = r.
Teorema 1.2.5. (del Factor) Cualquier ecuaci
on polinomial , tiene a lo m
as n races
de . Si 1 es una raiz : pn (x) = (x 1 )pn1 (x), si 2 es una raiz : pn1 (x) =
(x2 )pn2 (x)...p1 (x) = (xn ) entonces pn (x) = (x1 )(x2 )(x3 ) . . . (xn ).
Definici
on 1.2.3. Una funcion f definida en un conjunto X de n
umeros reales tiene
limite L en x0 , denotado por lm f (x) = L. Si dado cualquier n
umero real > 0, existe
xx0
un n
umero real > 0 talque |f (x) L| < , siempre que x X y 0 < |x x0 | < .
Definici
on 1.2.4. Sea f una funcion definida en un conjunto X de n
umeros reales y
x0 X. Entonces f es continua en x0 si lm f (x) = f (x0 ).
xx0
sucesion {xn }
n=1 tiene el limite x (converge a x)si, para cualquier > 0, existe un entero
positivo N() tal que |xn x| < , siempre que n > N() La notacion lmn xn = x
significa que la sucesion {xn }
n=1 converge a x.
1.
Preliminares
14
f'(x0 )
Definici
on 1.2.6. Sea f una funcion definida en un in-
y=f(x0 )
able en x0 si f (x0 ) = lm
(x0,f(x ))
f(x0)
existe. El n
umero
x0
derivadas en cada n
umero de un conjunto X es derivable
en X.
y=f(x)
n
umero c en (a, b) tal que f (c) = 0. (ver
figura 2)
pendiente f'(c)
y=f(x)
f (b)f (a)
.
ba
(ver figura 3)
El otro concepto basico del calculo que usaremos ampliamente es la Integral de Rieman.
Definici
on 1.2.7. La integral de Riemann de la funcion f en el intervalo [a, b] es el
n
Rb
P
siguiente lmite, si este existe: f (x)dx =
lm
f (zi )xp , donde los n
umeros
max xi i=1
a
1.
Preliminares
15
y=f(x)
c
1
n
umeros c1 y c2 aparecen en los extremos de
[a, b], o bien donde se anula f . (ver figura
4)
tremos
baX
f (x)dx = lm
f (xi ).
n
n i=1
donde los n
umeros que aparecen en la figura 5. como xi son xi = a + i(b a)/n.
Y
y=f(x)
a= x
x
i1
x
b=x
n
n1
Figura 1.5:
En nuestro estudio del analisis numerico necesitaremos otros dos resultados. El primero
es una generalizacion del teorema del valor medio para integrales.
Teorema 1.2.12. (Teorema del valor medio ponderado para integrales) Suponga que f C[a, b], que la integral de Riemann de g existe en [a, b] y que g(x) no cambia
1.
Preliminares
16
f (x)g(x)dx = f (c)
g(x)dx
Cuando g(x) = 1, el teorema 1.2.12 es el del valor medio para integrales que proporciona
el valor promedio de la funcion f en el intervalo [a, b] como
1
f (c) =
ba
Zb
f (x)dx
1.3.
Series de Taylor
1.
Preliminares
17
(n)
(x0 )
Pn (x) = f (x0 ) + f (x0 )(x x0 ) + f 2!
(x x0 )2 + . . . + f n!(x0 ) (x x0 )n =
n
P
n+1 ((x))
f (k) (x0 )
(x x0 )k
y
Rn (x) = f (n+1)!
(x x0 )n+1
=
k!
k=0
f (x) = sen x, f (x) = cos x, f (x) = sen x y f (4) (x) = cos x, de modo que f (0) = 1,
f (0) = 0, f (0) = 1, f (0) = 0.
por lo menos con los primeros cinco digitos de cos 0,01, y 0,9999483 < 0,99995
1.6 106 cos 0,01 0,99995 + 1.6 106 < 0,9999517.
La cota de error es mucho mayor que el error real. Esto se debe, en parte, a la
pobre cota que usamos para | sen (x)|. Se puede demostrar que para todo valor
1.
Preliminares
18
Figura 1.6:
de x, tenemos | sen x| |x|. Como 0 < 0,01, podramos usar el hecho de que
| sen (x)| 0,01 en la formula para el error, lo que produce la cota 0,16 106
(b) Como f (0) = 0, el tecer polinomio de Taylor con termino de residuo en torno a
x0 = 0 es cos x = 1 21 x2 +
1 4
x
24
cos (x).
4,2 1010 .
1
(0,01)4 (1)
24
De modo que | cos 0,01 0,99995| 4,2 1010 , y 0,99994999958 = 0,9995 4,2
1010 cos 0,01 0,99995 + 4,2 1010 = 0,99995000042.
En las dos primeras partes de este ejemplo se ilustran los dos objetivos del analisis
numerico. El primero es encontrar una aproximacion, que los polinomios de Taylor
proporcionan en ambas partes. El segundo es determinar la precision de la aproximacion. En este caso, el tercer polinomio de taylor fue mucho mas informativo
que el segundo, aunque ambos dieron la misma aproximacion.
Definici
on 1.3.1. Una funcion f : [a, b] R, definida en un intervalo abierto [a, b], se
llama analtica cuando, para cada a [a, b] existe un > 0 tal que la serie de Taylor
(Pn en teorema 1.3.1) converge para f (x) desde que |x x0 | <
1.
Preliminares
1.4.
19
An
alisis de error
A lo largo del tiempo, los metodos numericos han sido desarrollados con el objeto de resolver problemas matematicos cuya solucion es difcil o imposible de obtener por medio
de los procedimientos tradicionales.
Las soluciones que ofrecen los metodos numericos son aproximaciones de los valores
reales y, por tanto se tendra un cierto grado de error que sera conveniente determinar.
Aunque la perfeccion es una meta digna de alabarse es difcil si no imposible de alcanzarse.
Las aproximaciones numericas pueden introducir errores la pregunta es Que error puede
considerarse tolerable?.
El concepto de cifras o digitos significativos se ha desarrollado para designar formalmente la contabilidad de un valor numerico
Definici
on 1.4.1. El n
umero de cifras significativas es el numero de digitos, mas un
digito estimado que se pueda usar con confianza.
Ejemplo 1.4.1. Los ceros no siempre son cifras significativas ya que pueden usarse solo
para ubicar el punto decimal.
1.
Preliminares
20
Se puede decir que la aproximacion es aceptable siempre y cuando sea correcta hasta
cuatro cifras significativas esto es, debe existir seguridad que las primeras cuatro cifras
son correctas.
Aunque ciertas cantidades tales como , o
7 representan n
umeros especficos, no
se puede expresar exactamente con un numero finitos de digitos. Debido a que las
computadoras personales solo representan aproximadamente diez cifras significativas
(com
unmente varian entre 7 y 14) tales n
umeros jamas se podran representar exactamente. A la omision del resto de cifras significativas se le conoce como error de
redondeo. Los errores de redondeo y el uso de cifras significativas tienen mucha importancia en la identificacion de exactitud y precision.
1.4.1.
Exactitud y precisi
on
Los errores asociados con los calculos se pueden caracterizar observando su precision y
exactitud.
La exactitud se refiere a la aproximacion de un n
umero al valor verdadero que se supone
representa. La inexactitud ( conocida tambien como sesgo ) se define tambien como un
alejamiento sistematico de la verdad. La precision por otro lado se refiere a la magnitud
del esparcimiento.
Usaremos el termino de error para representar la inexactitud y la precision de las predicciones.
Los errores numericos se generan con el uso de aproximaciones para representar las operaciones y cantidades matematicas.
Para los tipos de errores, la relacion entre el resultado exacto o verdadero y el aproximado esta dado por :
Valor verdadero = valor aproximado + error
Reordenando la ecuacion , se encuentra que el error numerico es
error= Valor verdadero - valor aproximado
Un defecto es que muchas veces no se toma en consideracion el orden de magnitud del
valor que se esta probando . Por ejemplo, un error de un centmetro es mucho mas significativo si se esta midiendo un remache que un puente.
1.
Preliminares
21
Una manera de medir las magnitudes de las cantidades que se estan evaluendo es normalizar el error respecto al valor verdadero, como en:
error relativo fraccional= error/ valor verdadero
1.4.2.
Tipos de errores
obtener un n
umero de la forma y = 0.1 2 . . . k 10n .
evaluado, es decir, | pp
|. En el caso p = 0 solo se utiliza el error absoluto.
p
Consideremos los errores absolutos y relativos al representar p por p en el ejemplo
siguiente.
1.
Preliminares
Ejemplo 1.4.2.
22
Este ejemplo se muestra el mismo error relativo, para una gran variedad de errores
absolutos. Como una medida de la precision, el error absoluto puede llevar a confusiones,
en tanto que el error relativo es mas significativo, pues toma en cuenta el tama
no del
valor.
La siguiente definicion utiliza el error relativo como una medida de las cifras significativas de precision para una aproximacion.
Definici
on 1.4.3. El n
umero p aproxima a p con t cifras significativas si t es el mayor
entero no negativo para el cual
|p p |
< 5 10t
|p|
Ejemplo 1.4.3. 1.p = 3,141592,
p = 3,14
|p p |
102
0,000507 <
|p|
2
Luego p aproxima a p con 3 cifras significativas
2. p = 106 ,
p = 999996,
|p p |
105
0,000004 <
|p|
2
10t
2
se dice que p
1.
Preliminares
23
b +
b
b2 4ac
y x2 =
2a
b2 4ac
2a
Con aritmetica de redondeo a cuatro cifras, considere esta formula aplicada a la ecuacion
x2 + 62,10x + 1 = 0, cuyas races son aproximadamente
x1 = 0,01610723 y x2 = 62,08390. tenemos:
f l(x1 ) =
62,10 + 62,06
0,04000
=
= 0,02000.
2,000
2,000
|62,08+62,10|
|62,08|
62,1062,06
2,000
124,2
2,000
3,2 104 .
= 62,10
Para obtener una aproximacion mas precisa con redondeo a cuatro cifras para x1 , se
cambia la forma de la formula cuadratica mediante la racionalizacion del numerador.
b + b2 4ac b b2 4ac
b2 (b2 4ac)
x1 =
)=
,
(
2a
b b2 4ac
2a(b b2 4ac)
lo que se simplifica como una formula cuadratica alternativa
x1 =
Al usarlo tenemos: f l(x1 ) =
relativo 6,2 104 .
1.5.
2c
b + b2 4ac
2,000
62,10+62,06
2,000
124,2
Criterios de convergencia
Los criterios de convergencia que se veran en este punto, son aplicables para todos los
metodos que se estudian en el proximo capitulo. Previamente se establece una toleracia
ya sea para la variable x o para la funcion f (x), dependiendo de los valores de las
propiedades fisicas motivo de estudio, esto es, TOL1 y TOL2 .
1.
Preliminares
24
Se calcula el error para la variable x, hasta que este sea menor que la tolerancia es decir
Critero 1:
Abs(xk+1 xk ) T OL1
(1.6)
(1.7)
Criterio 2:
Captulo 2
MATLAB
2.1.
Qu
e es Matlab?
MATLABr es un lenguaje de alto nivel y un entorno interactivo para el calculo numerico, la visualizacion y la programacion. Mediante MATLAB, es posible analizar datos,
desarrollar algoritmos y crear modelos o aplicaciones. El lenguaje, las herramientas y
las funciones matematicas incorporadas permiten explorar diversos enfoques y llegar a
una solucion antes que con hojas de calculo o lenguajes de programacion tradicionales,
como pueden ser C/C++ o JavaT M
MATLAB se puede utilizar en una gran variedad de aplicaciones, tales como procesamiento de se
nales y comunicaciones, procesamiento de imagen y vdeo, sistemas de
control, pruebas y medidas, finanzas computacionales y biologa computacional. Mas de
un millon de ingenieros y cientficos de la industria y la educacion utilizan MATLAB,
el lenguaje del calculo tecnico.
2.
Matlab
26
En el C
alculo num
erico
MATLAB proporciona una serie de metodos de calculo numerico para analizar datos,
desarrollar algoritmos y crear modelos. El lenguaje de MATLAB incluye funciones
matematicas que permiten las operaciones cientficas y de ingeniera habituales. Las
funciones matematicas principales utilizan libreras optimizadas por procesador a fin de
permitir una ejecucion rapida de los calculos de vectores y matrices.
Entre los metodos disponibles se encuentran:
Interpolacion y regresion
Diferenciacion e integracion
Sistemas lineales de ecuaciones
Analisis de Fourier
Valores propios y valores singulares
Ecuaciones diferenciales ordinarias (EDO)
Matrices dispersas
Los productos complementarios de MATLAB proporcionan funciones para areas especializadas tales como estadstica, optimizacion, analisis de se
nales y aprendizaje automatico.
2.
Matlab
2.2.
27
Requisitos e Instalaci
on de Matlab
2.
Matlab
28
2. Seleccione la opcion Install without using the Internet y luego presione Next.
2.
Matlab
29
4. En este paso nos pide que ingresemos la clave del producto. Por ello seleccionaremos I have the File Installation Key for my license
2.
Matlab
30
2.
Matlab
31
2.
Matlab
9. Presionamos Install.
10. Una vez alli, solo tenemos que esperar a que instalen los componentes.
32
2.
Matlab
33
2.
Matlab
34
13. Seleccionamos la opcion Activate manually without the Internet y presionamos Next.
14. Seleccionamos la opcion Provide the path to the license file y presionamos
Browse....
2.
Matlab
35
15. Ubicamos la licencia en la carpeta crack de nuestro instalador y elegimos lic standalone
y presionamos Select.
2.
Matlab
36
2.
Matlab
2.3.
37
Iniciaremos Matlab dando doble clic en el Icono de Matlab. Una vez alli nos aparecera
una ventana divida en tres partes: Ventana del Directorio Actual (Current Folder),
Ventana de Historia de Comandos (Command History) y la Ventana de Comandos
(Command Window); es en esta ultima sobre la que empezaremos a digitar nuestras
ordenes.
2.4.
Operaciones con n
umeros reales
OPERACION
EXPRESION
Suma y resta
>>1+2
>> 1241-870
Multiplicacion
>>25.64*6
Divicion
>> 20/4
Potenciacion
>> 2.5^6
Maximo com
un divisor
>> gcd(124,48)
Mnimo com
un m
ultiplo
>> lcm(20,5)
>>rem(7,3)
2.
Matlab
2.5.
38
Operaciones con n
umeros complejos
OPERACION
EXPRESION
Suma y resta
>> (13+4*i)+2-i
>> 2-3*i-(7+2*i)
Multiplicacion
>> (5+i)*(7+1.64*i)
Dividido por
>> (1-5*i)/(2*i)
Divide a
>> i\(3-9*i)
Potenciacion
>> (4+6*i)^2
>> (4+6*i)^i
2.6.
Operaci
on simb
olica con n
umeros
OPERACION
EXPRESION
Factorizacion
>> factor(2012)
Suma simb
olica
>> sym(3+4*i)+5.34-2*i
Resta simb
olica
>> sym(340/56)-5/2
Multiplicacion simb
olica
>> sym(1+2*i)*1/5
Division simb
olica
>> sym(3647)/56
Potenciacion simb
olica
>> sym(i)^2
Observaci
on 2.6.1. .
El comando sym convierte variables numericas en simbolicas.
Hay que tener mucha precaucion a la hora de mezclar n
umeros o variables numericas con simbolicas. La mezcla no suele funcionar muy bien.
2.
Matlab
2.7.
39
Variables num
ericas
DATOS DE UN CILINDRO
altura=3
radio=1/2
volumen=altura*pi*radio^2
defecto, pi es el numero
d=radio^(1/2)
variables
radio=1, volumen
Cuando se reasigna un valor a una variable que ya existe, no se recalculan las variables
definidas a partir de ella a no ser que se vuelva a calcular de nuevo su nuevo valor.
2.8.
Variables simb
olicas
d=a+b
2.9.
1/0
Inf+Inf
Inf-Inf NaN significa Not a Number
Inf/Inf
0^Inf
3^Inf
1^Inf
2.
Matlab
2.10.
40
Visualizaci
on de resultados
>> Altura
>> vpa(pi,20)
Muestra el n
umero pi con 19 cifras decimales
Observaci
on 2.10.1. Matlab distingue entre may
usculas y minusculas
Altura, altura, ALTuRa son tres variables distintas
2.11.
Tipo de dato
A continuacion se presenta un organigrama de los diferentes tipos de datos con los cuales
trabaja MATLAB.
2.
Matlab
41
2.11.1.
Datos num
ericos
N
umeros enteros
Tipo de Dato
Rango de valores
Funci
on de conversi
on
-2^7 a 2^7-1
int8
-2^15 a 2^15-1
int16
-2^31 a 2^31-1
int32
-2^63 a 2^31-1
int64
0 a 2^8-1
int8
0 a 2^16-1
int16
0 a 2^32-1
int32
0 a 2^32-1
int64
1x1
bytes
2
class
Attributes
int16
o sino mediante
>> tipo x= class(x)
tipox =
int 16
si desea verificar que x es un tipo de dato entero se utiliza la funcion isinteger.
>>
isinteger (x)
ans =
1
Para convertir otro tipo de dato , como una cadena, a entero, puede utilizar las funciones
de conversion.
Por ejemplo , definamos la siguiente cadena:
2.
Matlab
>>
42
str= SEMINARIO
Luego aplicamos la funcion de conversiona entero int8 que convierte cada uno de los
elementos de str a entero con signo de 8 bits, es decir, obtenemos su respectivo codigo
ASCII.
>> int8(str)
ans = 83
69
77
73
78
65
82
73
79
N
umeros decimales
Matlab representa n
umeros decimales en formato simple y doble precision. Por defecto,
es de doble precision, pero se puede convertir cualquier n
umero a simple con una uncion
de conversion.
a) Doble precision.
Valores m
aximos y mnimos de doble precisi
on
Las funciones realmax y realmin retornan los valores maximos y mnimos que
pueden representarse con el tipo double.
>> realmax
ans= 1.7977e+308
>> -realmax
ans= -1.7977e+308
>>
realmin
ans= 2.2251e-308
>> -realmin
ans= -2.2251e-308
2.
Matlab
43
Creaci
on de datos de doble precisi
on
Como el tipo numerico por defecto de Matlab es doble precision, entonces solo se
requiere una simple sentencia de comandos:
>> x= 18.04 ;
>> whos x
Name
stize
1x1
Bytes
8
Class
Attributes
double
para verificar que un tipo de dato es decimal (o punto flotante) se hace uso de la
funcion isfloat.
>> isfloat(x)
ans =
1
Conversi
on a doble precisi
on
Se pueden convertir otros datos numericos, caracteres o cadenas, y datos logicos a
doble precision usando la funcion Matlab double.
>> y=int64(-961258) ; %crea un entero de 64 bits
>> x=double(y) % convierte a doubl
e
x= -961258
>> whos x
Name
x
Size
1x1
Bytes
8
Class
bouble
Attributes
2.
Matlab
44
b) Simple precision
Valores m
aximos y mnimos de doble precisi
on
Las funciones realmax y realmin cuando se llaman con el argumento single retornan los valores maximos y mnimos que pueden representarse con el tipo single.
>> realmax(single)
ans= 3.4028e+038
>> -realmax(single)
ans= -3.4028e+038
>> realmin(single)
ans= 1.1755e-038
>> -realmin(single)
ans= -1.755e-038
Los n
umeros mas grandes que realmax(single) o menores que realmin(single) se
les asigna valores de infinito positivo (inf) y negativo (-inf) respectivamente.
Creaci
on de datos de simple precisi
on
Como el tipo de dato numerico por defecto de Matlab es doble precision, entonces
se requiere una funcion de conversion single para crear un n
umero de simple precision.
>> x= single(13.04); % crea un tipo de dato decimal single
>> whos x
Name
size
1x1
>> isfloat(x)
ans= 1
Bytes
4
Class
single
Attributes
2.
Matlab
45
Conversi
on a simple precisi
on
Se pueden convertir otros datos numericos, caracteres o cadenas, y datos logicos a
doble precision usando la funcion Matlab single.
>> y=int64(-270819080303);
>> x=single(y)
%convertir a single
x= -2.7082e+011
>> whos x
Name
size
1x1
Bytes
Class
Attributes
single
N
umeros complejos
Los n
umeros complejos consisten de 2 partes separadas: una parte real y otra parte
imaginaria. La base imaginaria es la raz cuadrada de -1. Este es representado en MATLAB por cualquiera de las 2 letras i o j.
Creaci
on de N
umeros Complejos
Existen 2 formas para la creacion de un n
umero complejo:
La primera es asignar a una variable un valor complejo de la forma a + bi.
>> x= 3+2i
x= 3.00000+ 2.0000i
20; 6
12]
x=
10
20
12
>> y= [13 7; 2
8]
2.
Matlab
46
y=
13
>> z=complex(x,y)
z=
10.0000+ 13.0000i 20.0000+ 7.0000i
6.0000 + 2.0000i
12.000 + 8.0000i
Para obtener la parte real e imaginaria utilizando la funcion real e imag, respectivamente:
>> zr=real(z)
zr=
10
20
12
Valores especiales
Matlab usa los valores especiales inf, -inf y NaN para representar valores que son infinitamente positivos, negtaivos y aquellos que no son un n
umero respectivamente.
Casos en que se retoma el valor infinito
>> x=1/0
warning: Divide by zero
x= Inf
>> x=log(0)
warning : log of zero.
x= -Inf
>> x=1.e1000
2.
Matlab
47
x=Inf
>> x=exp(1000)
x= Inf
Casos en que se retoma el valor NaN
MATLAB representa valores que no son n
umeros relaes ni complejos con un valor especial NaN (Not a Number). Expresiones como 0/0 y Inf/Inf dan como resultado NaN,
por ejemplo
pi
N
umero = 3,01415926
exp(1)
0 a 2^16-1
Inf
0 a 2^32-1
NaN
0 a 2^32-1
OPERACION
whos x
isnumeric(x)
isa(x,integer)
isa(x,uint 64)
isa(x,float)
isa(x,double)
isa(x,single)
isreal(x)
Determina si x es n
umero real o complejo
isnan(x)
Determina si x no es un n
umero (NAN)
isinf(x)
Determina si x es infinito
isfinite(x)
Determina si x es finito
2.
Matlab
48
TIPO
RESULTADO
short
short e
short g
long
long e
long g
rat
En forma de fraccon.
hex
bank
compact
loose
A
nade mas lneas para que la salida sea mas legible.
2.8333
0.0258
2.8333e+000
2.5787e-002
2.8333
0.025787
2.
Matlab
49
2.833333333333334
0.025786543000000
2.833333333333334e+000
2.578654300000000e-002
2.83333333333333
2.83
0.03
17/6
259/10044
17/6
259/10044
17/6
259/10044
0.025786543
2.
Matlab
2.11.2.
50
Cadena de Caracter
Size
Bytes
curso
1x22
44
Class
Attributes
char
2.
Matlab
51
La funcion de concatenacion atrcat o el operador de concatenacion MATLAB[], permiten unir 2 o mas caracteres generando un nuevo arreglo de caracteres.
>> curco= seminario de aplicada;
>> universidad=UNPRG;
>> strcat(universidad,,,curso)
ans =
UNPRG,seminario de aplicada
Para concatenar cadenas verticalmente use strvcat.
Creaci
on de arreglos de caracteres de 2 dimensiones
Cuando creamos arreglo de caracteres bidimensionales, debemos estar seguros que cada
fila tenga la misma longitud.
La siguiente matriz tiene 3 cadenas todas de 10 caracteres cada una.
>> provincias=[1Chiclayo1;Lambayeque;1Fere~
nafe1]
provincias =
1Chiclayo1
Lambayeque
1Fere~
nafe1
cuando creamos arreglos de caracteres desde cadenas de diferentes tama
nos, se debe
rellenar las cadenas mas cortas con espacios en blanco para forzar a que filas sean de la
misma longitud.
>> provincias=[Chiclayo
;Lambayeque;Fere~
nafe
provincias =
Chiclayo
Lambayeque
Fere~
nafe
Una manera simple para crear cadenas de arreglos es usando la funcion char. Char
automaticamente rellena todas las cadenas a la longitud de la cadena de entrada mas
larga.
2.
Matlab
52
>> provincias=char(Chiclayo;Lambayeque;Fere~
nafe)
provincias =
Chiclayo
Lambayeque
Fere~
nafe
La funcion deblank permite extraer una o mas cadenas de un arreglo.
>> pronvicia_mas_comercial=deblank(provincias(1,:))
pronvicia_mas_comercial =
Chiclayo
La funcion deblank tambien permite remover los espacios en blanco.
>> A{1,1}=seminario
>> A{1,2}=aplicada
>> A=deblank(A)
A =
seminario
aplicada
Comparaci
on de cadenas
Se puede compara cadenas utilizando funciones u operadores.
a) Comparacion con funciones
FUNCION
DESCRIPCION
strcmp
strncmp
strcmpi
strncmpi
2.
Matlab
53
Las siguientes cadenas str1 y str2 no son identicas, por lo que su comparacion
devuelve el valor logico 0 (falso)
>> str1=hola;
>> str2=holla;
>> C=strcmp(str1,str2)
C= 0
Los primeros tres caracteres de str1 y str2 son identicos( valor logico 1= verdad).
>> C=strncmp(str1,str2,1)
C= 1
>> C=strncmp(str1,str2,2)
C= 1
>> C=strncmp(str1,str2,3)
C= 1
>> C=strncmp(str1,str2,4)
C= 0
b) Comparacion utilizando operadores
Se puede utilizar los operadores relacionales de MATLAB en arreglos de caracteres,
siempre que los arreglos que se estan comparando tengan iguales dimensiones, o
uno sea escalar.
Todos los operadores relacionales ( >,>=,<,<=,==,~=) comparan los valores de
sus respectivos caracteres.
>> A=Manuel;
>> B=Miguel;
>> A==B
ans=
2.
Matlab
54
miercoles 28/07/1821
11
strmatch busca a traves de las filas de un arreglo de cadenas para encontrar las
cadenas que empiecen con la serie de caracteres dada. Esta funcion retorna los
ndices de la filas que empiecen con estos caracteres.
Evaluaci
on de cadenas: Funci
on eval
eval: Eval
ua una cadena que contiene una expresion MATLAB, sentencia o llamada a
funcion. Su sintaxis es : eval(string).
>> x=[1:5];
>> y=eval((x+2)./x)
y =
3
>> cadena1=sin(x*(pi/2));
5/3
3/2
7/5
2.
Matlab
55
>> z=eval(cadena1)
z =
1
0.0000
-1
-0.0000
Size
Bytes
cadena1
1x13
26
char
1x5
40
double
1x5
40
double
2.11.3.
Class
Attributes
Conversi
on de valores num
ericos a cadenas y viceversa,
y entre diferentes bases
COMANDO
OPERACION
chard
int2str
num2str
mat2str
dec2hex
dec2bin
dec2base
2.
Matlab
56
Conversi
on de cadenas a valores numericos
COMANDO
OPERACION
uintN
str2num
str2double
Similar a strnum, pero ofrece una mayor calidad o trabaja con arreglos
celdas de cadenas.
hex2num
hex2dec
bin2dec
base2dec
2.12.
An
alisis de error
2.
Matlab
57
2.12.1.
Punto flotante
Un punto flotante es un n
umero que es expresado mediante un exponente y una mantisa.
Por ejemplo el n
umero 10.75 puede ser expresado como.
mantisa
exponente
10,75
100
1,075
101
En general, un n
umero en punto flotante puede ser expresado como d0 .d1 d2 d3 . . . dk
k
P
bexpo donde : d0 .d1 d2 d3 . . . dk =
di i , di N, 0 di < , se conoce como la
i=1
2.12.2.
Tipos de errores
El uso de digitos binarios tiende a encubrir las dificultades de calculo que aprarecen al
usar una coleccion finita de n
umeros de maquina para representar a todos los n
umeros
reales. Para examinar estos problemas, supondremos , para mayor claridad, que los
n
umeros de maquina se representan en la forma de punto flotante decimal normalizada
0.d1 d2 . . . dk 10n ,
0 di 9.
2.
Matlab
58
dk+1 5
2.
Matlab
59
Este ejemplo se muestra el mismo error relativo, para una gran variedad de errores
absolutos. Como una medida de la precision, el error absoluto puede llevar a confusiones,
en tanto que el error relativo es mas significativo, pues toma en cuenta el tama
no del
valor.
La siguiente definicion utiliza el error relativo como una medida de las cifras significativas de precision para una aproximacion.
Definici
on 2.12.2. El n
umero p aproxima a p con t cifras significativas si t es el mayor
entero no negativo para el cual
|p p |
< 5 10t
|p|
Ejemplo 2.12.3. 1.p = 3,141592,
p = 3,14
|p p |
102
0,000507 <
|p|
2
p = 999996,
|p p |
105
0,000004 <
|p|
2
2.
Matlab
60
Definici
on 2.12.3. Si t es el mayor entero para el cual |p p | <
10t
2
se dice que p
=|
=|
Como d1 6= 0, el valor mnimo del denominador es 0.1. El numerador esta acotado superiormente por 1. entonces:
| yfyl(y) |
1
0,1
De manera similar, una Cota para el error relativo cuando se usa aritmeetica con redondeo a K dgitos es 0,5 10k+1
La perdida de precision debida al error de redondeo se puede evitar a menudo mediante
la reformulacion del problema, como se muestra en el siguiente ejemplo.
Ejemplo 2.12.4. La formula cuadratica establece que las races de ax2 + bx + c = 0,
cuando a 6= 0, son
x1 =
b +
b2 4ac
b
y x2 =
2a
b2 4ac
2a
Con aritmetica de redondeo a cuatro cifras, considere esta formula aplicada a la ecuacion
x2 + 62,10x + 1 = 0, cuyas races son aproximadamente
x1 = 0,01610723 y x2 = 62,08390. tenemos:
f l(x1 ) =
62,10 + 62,06
0,04000
=
= 0,02000.
2,000
2,000
|62,08+62,10|
|62,08|
62,1062,06
2,000
3,2 104 .
124,2
2,000
= 62,10
2.
Matlab
61
Para obtener una aproximacion mas precisa con redondeo a cuatro cifras para x1 , se
cambia la forma de la formula cuadratica mediante la racionalizacion del numerador.
b + b2 4ac b b2 4ac
b2 (b2 4ac)
x1 =
(
)=
,
2a
b b2 4ac
2a(b b2 4ac)
lo que se simplifica como una formula cuadratica alternativa
x1 =
Al usarlo tenemos: f l(x1 ) =
2c
b + b2 4ac
2,000
62,10+62,06
2,000
124,2
2.13.
Matrices y vectores
2.13.1.
Introducci
on y operaciones de matices num
ericas
Comenzamos limpiando nuestra area de trabajo con : clear, clc, echo, off.
1 2 3
A = [1 2 3; 4 0 3; 9 3 2] A = 4 0 3
9 3 2
es una matriz 3 3
Podemos reemplazar un n
umero cualquiera
aij de la matriz como:
por un elemento
1 2 3
A(2, 1) = 3
Ahora tenemos A = 3 0 3
9 3 2
Mencionaremos algunos operaciones en matrices que se emplean en MATLAB:
2.
Matlab
62
Otra matriz 3 3
size(d), size(A)
e=1:3
ee=1:-0.5:-4
A.
Matriz traspuesta
A+2, A-3+i
A*b.
A*i
A.*C
A^2
A*A
C.^(A-6)
2.^A
inv(A)
Matriz inversa de A
X=A\C
Y=A/C
A./C, A.\C
2.
Matlab
2.13.2.
63
Submatrices num
ericas
A(h,k)
A(2,1:2)
[A;b]
A
nadiendo la filaba la matriz A
[A,b.]
A
nadiendo la columnabt a la matrizA
2.13.3.
Introducci
on y operaciones de matrices simb
olicas
A=sym([1,3;t,s])
b=sym([1 2])
A=
1 3
t s
A+C, A*C
Suma y producto de A y C
A*C^(-1)
Division de A y C
C^3
C3
A(1,2)
A(1,2)=18
[A;b]
A
nadiendo la fila b a la matriz A
2.
Matlab
2.13.4.
64
Funciones matriciales
FUNCION
DESCRIPCION
eye(n)
Matriz identidad n n
zeros(m,n)
ones(m,n)
Matriz de unos
diag(x)
triu(A)
tril(A)
hilb(m,n)
magic(m,n)
rand(m,n)
Matriz m n aleatoria
vander(x)
sym(A)
numeric(A)
det(A)
Determinante de la matriz A
determ(A)
Determinante simb
olico
inv(A)
Inversa de la matriz A
inverse(A)
Inversa simb
olica
rank(A)
size(A)
Orden o tama
no de la matriz A
length(A)
Maximo entre el n
umero de filas y columnas
2.
Matlab
65
FUNCION
DESCRIPCION
[V,D]=eig(A)
[V,D]=eigensys(A)
trace(A)
Traza de A
poly(A)
charpoly(A)
Version simb
olica de la anterior
orth(A)
null(A)
Base del n
ucleo de A, KerA
nullspace(A)
[V,J]=jordan(A)
Nota: Se puede aplicar una orden simbolica a una matriz numerica. Pero, en dicho
caso la matriz se transforma en simbolica.
2.
Matlab
66
2.14.
Graficas
2.14.1.
Primeros Pasos
OPCION
MARCA
lnea continua
OPCION
COLOR
lnea continua
rojo
--
lnea de guiones
amarillo
lnea punteada
magenta
-.
turquesa
cruces
verde
asteriscos
azul
puntos
blanco
crculos
negro
equis
2.
Matlab
67
Ttulo de la grafica
grid
sit
ua una rejilla en la grafica
text(4,-0.1,M
nimo)
Sit
ua un comentario en el punto (4,-0.1)
Gr
aficas en el plano
Presentaremos comandos al igual del plot son de igual importancia:
COMANDOS
DESCRIPCION
bar(x,y)
barh(x,y)
stem(x,y)
stairs(x,y)
polar(x,y)
pie(x)
rose(x)
2.
Matlab
68
Ejemplo:
4.5
4
>> x=-4:0.2:4;
3.5
>> y=abs(sin(x).^3-x);
2.5
>> plot(x,y,o)
1.5
1
0.5
0
4
90
120
60
0.8
>> t=0:0.1:2*pi;
0.6
150
30
0.4
0.2
>> y=cos(3*t);
180
>> polar(t,y)
210
330
300
240
270
2.
Matlab
69
Matlab dispone de un grupo de comandos para representar formas geometricas especiales en el plano, estos se describen en la siguiente tabla.
COMANDOS
DESCRIPCION
compass(x,y)
feather(x,y)
fplot(f,[a,b])
ezplot(f,[a,b])
loglog(x,y)
semilogx(x,y)
semilogy(x,y)
fill(x,y,c)
Dibuja una region poligonal cuyos vertices son los elementos de los
vectores columna x, y; el parametro c contiene el color a graficar.
Ejemplos:
1
0.8
0.6
0.4
0.2
>> fplot(cos(x),[-3,3]);
0
0.2
0.4
0.6
0.8
1
3
2.
Matlab
70
log(x)x+2
1
0.8
0.6
0.4
>> ezplot(log(x)-x+2,[1,4]);
0.2
0
0.2
0.4
0.6
1
1.5
2.5
x
3.5
>>t=linspace(0,2*pi,9);
0.4
0.2
>>plot(cos(t),sin(t))
0
0.2
0.4
0.6
0.8
1
1
0.5
0.5
0.5
0.5
1
0.8
0.6
>>t=linspace(0,2*pi,3000);
0.4
0.2
>>plot(cos(t),sin(t))
0
0.2
0.4
0.6
0.8
1
1
que se deduce de ello?, podemos explicar como Matlab realiza los ploteos de las funciones?
Para facilitar el calculo de curvatura y radio de curvatura, haremos uso de la siguiente proposicion:
2.
Matlab
71
Proposici
on 2.14.1. Si f : I R una funci
on diferenciable entonces su gr
afica es una
curva regular y su curvatura y radio de curvatura estan determinados por:
f (t)
(1 + f (t)2 ) 2
k(t) =
3 ; (t) =
f (t)
(1 + f (t)2 ) 2
Funci
on Cuadr
atica Su ecuacion parametrica de dicha curva es (t) = (t, t2 ),
[a, b]
luego graficaremos su traza.
>> t=linspace(-5,5,3000);
% divide el intervalo [-2,3] en 3000 partes.
>> y=t^2;
%im
agenes de las componentes de x
7
6
5
4
3
>> x=-4*t.^3;
2
1
>> z=(1/2)+3*t.^2;
0
1
2
>>
plot(x,z)
>> plot(x,z),grid on
>> plot(x,z,r),grid on
2.
Matlab
72
end
>> sum
sum =
10.0000
2
1.8
1.6
1.4
1.2
>> plot(x,y)
1
0.8
0.6
0.4
0.2
0
10
15
20
Ahora haremos el calculo para hallar la longitud de arco del intervalo [0, 2] utilizando
el siguiente comando.
>> normderiv=inline(sqrt((1-1*cos(t)).^2+(1*sin(t)).^2),t);
>> quad8(normderiv,0,2*pi)
ans = 8.0000
a3
.
x2 +a2
2.
Matlab
73
2
1.8
1.6
1.4
>>f plot(8/((x^2)+4),[-50,50])
1.2
1
0.8
0.6
0.4
0.2
0
50
50
90
2
60
120
>>teta=linspace(0,2*pi,60);
1.5
1
150
30
0.5
>>r=1+cos(teta);
180
>>polar(teta,r)
210
330
240
300
270
2.
Matlab
>>t=0:pi/50:10*pi;
74
40
30
%t=linspace(0,10*pi,2000)
20
10
1
0.5
0.5
0.5
1
>>t=0:pi/10:10*pi;
1000
%(t=linspace(0,10*pi,2000))
800
600
400
200
20
40
20
20
20
40
40
2.
Matlab
75
Paraboloide
8
7
>> [x,y]=meshgrid(-2:0.1:2);
6
5
>> plot3(x,y,x.^2+y.^2)
4
3
2
1
0
2
0
2
>> [x,y,z]=sphere(20);
>> x=2+3*x;y=2+3*y;z=3*z;% con
5
4
3
2
1
0
1
6
4
6
4
0
2
2.
Matlab
76
Toro de revoluci
on Consideremos en R3 la circunferencia C = {(x, y, z)/(y2)2 +z 2 =
1, x = 0},al rotar C alrededor del eje Z se obtiene el toro.
Una parametrizacion para esta curva esta dado por
(u, v) = (cos u(2 + cos v), sen u(2 + cos v), sen v),
0 6 u 6 2;
0 6 v 6 2
>> u=linspace(0,2*pi,41);v=u;
>> [u,v]=meshgrid(u,v);
1
>> x=cos(u).*(2+cos(v));
>> y=sin(u).*(2+cos(v));
1
3
>> z=sin(v);
>> surf(x,y,z)
>> axis([-3 3 -3 3 -1 1])
2
1
0
1
2
3
2.
Matlab
77
La Cinta de M
obius Es una superficie que se puede construir a partir de una tira de
papel de forma rectangular ABCD. Torciendo la tira, una sola vez, de manera que se
haga coincidir el vertice A con el vertice C y el vertice B con el vertice D obteniendo la
superficie mencionada.
Se genera con la siguiente funcion vectorial:
r(u, v) = ( v2 sen u2 , (1 + v2 cos u2 ) sen u, (1 + v2 cos u2 ) cos u),
0 6 u 6 2;
1 6 v 6 1
>> u=linspace(0,2*pi,30);
>> v=linspace(-1,1,15);
>> [u,v]=meshgrid(u,v);
>> z=(1+v/2.*cos(u/2)).*cos(u);
>> y=(1+v/2.*cos(u/2)).*sin(u);
>> x=v/2.*sin(u/2);
>> surf(x,y,z)
1.5
1
0.5
0
0.5
1
0.5
1.5
2
1
0
0
1
2
0.5
2.
Matlab
78
>>
Y=sin(U).*cos(V);
>> Z=3*sin(V);
>> surf(X,Y,Z)
axis([-1 2 -1 1 -3 3])
2
3
1
1.5
0.8
1
0.6
0.4
0.2
0.5
0
0.2
0
0.4
0.6
0.5
0.8
2.
Matlab
79
Preparaci
on de pelculas o Movies Matlab dispone de funciones para generar una
pelcula, la que se compone de varias imagenes, denominadas frames.
La funcion getframe devuelve un vector columna con la informacion necesaria para
reproducir la imagen que se acaba de representar en la ventana grafica activa, el tama
no
de este vector columna depende del tama
no de la ventana,pero no de la complejidad del
dibujo.
1
0.8
0.6
0.4
0.2
0
0.2
0.4
M(:,j)=getframe;
end
>> movie (M,10,15)
0.6
0.8
1
8
Este ejemplo crea una pelicula de 30 imagenes (como la que se muestra), que se almacenan como las columnas de la matriz M.
Una ves creada la pelicula, se puede visualizar el n
umero de veces que se desee con
el comando movie, en el ejmplo se va a representar 10 veces pelicula anterior , a 15
imagenes por segundo (los dos ultimos parametros son opcionales).
Hay que se
nalar que en Matlab no es lo mismo un movie que una animacion. Una
animacion es simplemente una ventana grafica que va cambiando como consecuencia de
los comandos que se va ejecutando. Un movies es una animacion grabada o almacenada
en memoria previamente.
2.
Matlab
80
Un ejemplo mas sencillo en curvas es la siguiente animacion de la Helice circular recta.(hacer correr un punto en su traza de dicha curva)
2.
Matlab
81
>> syms t
5
>> x=cos(t);
>> y=sin(t);
z
>> z=t./(2*pi);
>> ezplot3(x,y,z,[0,10*pi],animate)
2
1
0
1
0.5
1
0.5
0.5
0.5
1
Pl
atano:
Para modelar esta figura hemos utilizado el homeomorfismo que existe entre el elipsoide
y la figura del platano, es decir, simplemente hemos perturbado en alguna direccion a
alguna coordenada del elipsoide. En nuestro caso, sean las ecuaciones parametricas del
elipsoide:
(u, v) = (cos(u). cos(v), sen(u). cos(v), 3 sen(v))
Ahora, perturbamos en la direccion de la primera coordenada para generar la grafica
del platano, entonces nuestra nueva ecuacion sera la siguiente:
(u, v) = (cos(u). cos(v) + 2. sen2 (v), sen(u). cos(v), 3 sen(v))
Veamos a continuacion como graficar esta figura en Matlab:
>> u=linspace(0,2*pi,41);
>> v=linspace(-0.5*pi,0.5*pi,41);
>> [U,V]=meshgrid(u,v);
>> X=cos(U).*cos(V)+2*sin(V).^2;
>>
Y=sin(U).*cos(V);
>> Z=3*sin(V);
>> surf(X,Y,Z)
3
1
0.5
0
0.5
axis([-1 2 -1 1 -3 3])
1 1
0.5
0.5
1.5
2.
Matlab
2.14.2.
82
Como se habra podido observar es bastante incomodo introducir las ordenes una a una
en la ventana de comandos, debido sobre todo, a que si nos equivocamos en una de las
ordenes tenemos que volver a imprimir la orden equivocada en el mejor de los casos o
el listado completo en el peor. Para remediar esto lo mejor es editar un fichero que se
denomina fichero m por ser m la extension de dicho fichero.
En esta seccion vamos a aprender a editar y ejecutar un fichero m, pero antes vamos a
hacer unos comentarios acerca del programa Matlab. Dentro del ordenador, el programa
Matlab tiene la siguiente estructura
Archivos de programa
MATLAB
bin
Carpeta fundamental(..\Matlab\bin)
help
toolbox
..
.
work
Mt
2.
Matlab
83
2.
Matlab
84
editamos
guardamos el fichero m
Vamos al men
u File\save y damos el nombre
1grafo.m al fichero que hemos editado
ejecutamos work\cbgrafo.m
2.
Matlab
85
2.15.
Definici
on de funciones
2.15.1.
Funciones de MATLAB
FUNCION
DESCRIPCION
sin, asin
seno, arcoseno
cos, acos
coseno, arcocoseno
tan, atan
tangente, arcotangente
sinh, asinh
cosh, tanh
abs(x), abs(z)
angle(z)
argumento de z C
conj(z)
conjungado de z C
real(z), imag(z)
log, log10
sign(z)
z/|z| si z 6= 0 y 0 si z = 0
sqrt
raz cuadrada
ceil(r)
fix(r)
floor(r)
round(r)
2.
Matlab
86
FUNCION
DESCRIPCION
sum(x)
prod(x)
[y,i]=max(x)
[y,i]=min(x)
[y,i]=sort(x)
cross(v,w)
producto vectorial de v, w R2
Matlab cuenta con tres tipos fundamentales de funciones: funciones escalares, a un escalar le asignan otro escalar pero pueden aplicarse tambien sobre matrices componente
a componente siendo, entonces, el resultado otra matriz del mismo orden; funciones
vectoriales, a un vector (columna o fila) le asigna un escalar y cuando se aplican sobre
una matriz le asignan un vector fila que contiene los resultados de su aplicacion sobre
cada columna y las funciones matriciales las cuales estan asignadas sobre matrices y su
resultado puede ser un escalar, un polinomio o tambien una matriz.
Las funciones matriciales mas importantes ya han sido establecidas en la seccion anterior.
Es importante tener en cuenta que las funciones de Matlab pueden tener dos o mas
argumentos de salida, como ejemplo sirva la funcion [V,D]=eig(A) que a una matriz
cuadrada A le asigna los valores propios D y los vectores propios V , V 1 AV = D.
2.15.2.
Definici
on funciones propias
En Matlab se puede definir sus propias funciones o subrutinas y asignarle el nombre que
quiera con la misma limitacion que se tiene para nombrar un fichero. Esto es as porque
de hecho definir una funcion propia consiste sencillamente en la creacion de un fichero m
que ha de tener por nombre el mismo nombre que el de la funci
on. Para entenderlo,
hacemos la siguiente ejercicio.
2.
Matlab
87
2.
Matlab
88
>> fminsearch(funcion,
x ,opciones)
0
Captulo 3
INTERFAZ GRAFICA
DE USUARIO
3.1.
Conceptos Previos
3.1.1.
Para ingresar al entorno de la interfaz grafica hacemos clic en o digitamos guide desde
la linea de comandos.
Aparece una ventana que nos permite acceder a una serie de plantillas de formulario.
Aceptaremos la opcion por defecto, es decir, el formulario en blanco (Haga clic en OK)
3.
Interfaz Gr
afica de Usuario
90
Aparece una nueva ventana que presenta un area gris en modo de rejas. Esta area es la
denominada layout o formulario de la interfaz grafica. es la zona en donde dise
naremos
la presentacion agregando los controles o botones que se seleccionaran desde la paleta
del lado izquierdo.
3.1.2.
Tipos de control
Botones simples
Botones de seleccion
Botones de opcion
Barras de desplazamiento
Cajas de seleccion desplegable
Cajas de texto
3.
Interfaz Gr
afica de Usuario
Usted puede mostrar los nombres de los controles. Haga clic en File Preferences.
Active la opcion: show name in component pallete:
91
3.
Interfaz Gr
afica de Usuario
92
b) Slider:
Los deslizadores o barras de desplazamiento permiten explorar una larga lista de
elementos, acepta la entrada numerica dentro de un rango especifico, permitiendole
al usuario mover una barra corrediza. El desplazamiento de la barra se efect
ua presionando el boton del mouse y arrastrando la diapositiva, o pulsando el boton que
posee una flecha. La ubicacion de la barra indica un valor numerico.
Existen 4 propiedades que controlan el rango y el tama
no de paso del deslizador:
Value: contiene el valor actual del deslizador.
Max: define el valor maximo del deslizador, el valor por defecto es 1.
Min: define el valor mnimo del deslizador, el valor por defecto es 0.
Sliderstep: especifica el tama
no de un paso del deslizador con respecto al rango,
el valor por defecto es [0,010,10], proporciona un 1 % de cambio para los clics en
las flechas y un 10 % de cambio para los clics.
Estos valores pueden ser modificados efectuando los cambios en las propiedades
del deslizador.
3.
Interfaz Gr
afica de Usuario
93
c) Radio button:
Este control se utiliza para seleccionar una opcion de un grupo de opciones (es
decir, solo un botton puede estar seleccionado). Para seleccionar un radiobutton,
pulse el boton del mouse en el objeto.
Para que seann son mutuamente exclusivos es necesario que esten contenidos en
un Button Group.
Los radiobutton tiene 2 estados:
Value= Max=1, el boton esta seleccionado. Value=Min=0, el boton no esta seleccionado.
d) Checkbox:
Se utilizan para proporcionar al usuario varias opciones de las que se puede elegir
una o mas cuando se pulsa sobre la casilla de verificacion.
La propiedad value indica el estado del Checkbox asumiendo el valor Max o Min
(1 y 0 respectivamente por defecto).
Value=Max=1, la casilla esta verificada
Value=Min=0, la casilla no esta verificada.
e) Edit Text:
Se utilizan para ingresar o modificar cadenas de Texto.
String: es la propiedad que contiene el texto ingresado por el usuario. El texto se
devuelve como una cadena de caracteres.
Si el usuario desea ingresar valores numericos, debe convertir previamente los caracteres a n
umeros, usando el comando strdouble (convierte la cadena a un tipo
double).
3.
Interfaz Gr
afica de Usuario
94
f) Static Text:
Se utiliza para mostrar texto que el usuario no puede modificar. Se utiliza frecuentemente para etiquetar otros controles o indicar valores a un deslizador. Los
usuarios no pueden cambiar interactivamente el texto, por eso no hay manera de
invocar a la rutina del calback asociado con el.
g) Popup menu:
Permite visualizar una lista de opciones cuando los usuarios presionan la flecha.
Los popmenus son u
tiles cuando deseamos proporcionar opciones m
utuamente exclusivas y no usar mayor cantidad de espacio.
String: contiene la lista de cadenas desplegadas en el popmenu.
Value: Contiene en el ndice del tem seleccionado de la lista de cadenas. El primer
item en la lista tiene el indice 1.
Cuando no esta abierto un popmenu, la opcion que muestra esta determinada por
el ndice contenido en value.
h) Listbox:
Muestran una lista de tems entre los cuales el usuario puede seleccionar uno o
mas.
String: Contiene la lista de cadenas visualizadas en el Listbox.
Value: contiene el ndice del tem seleccionado de la lista de cadenas. El primer
tem en la lista tiene el ndice 1. Si el usuario selecciona m
ultiples tems, entonces
el value es un vector de ndices.
Min-Max1, se permite la seleccion m
ultiple.
Min-Max=1, no se permite la seleccion multiple.
ListoxTop: es un ndice en la serie de cadenas definidas por la propiedad string
y debe tener un valor entre 1 y el n
umero de cadenas.
Se necesita agregar otro controlador pushbutton que ejecute una accion asociada
al seleccionar un item.
3.
Interfaz Gr
afica de Usuario
95
i) Toggle Button:
Genera una accion en ndicar un estado binario (on u off). Cuando se pulsa el
boton toggle button aparece oprimido y se ejecuta las ordenes programadas dentro de su callback. El boton permanece oprimido a
un cuando se suelta el boton del
mouse. Solo cuando se vuelve a hacer clic sobre el boton deja de estar oprimido.
Value=Max=1, el boton esta oprimido.
Value=Min=0, el boton no esta oprimido.
j) Axes:
Permite visualizar los graficos.
El siguiente codigo construye los ejes cuya propiedad tag es ejes 1. axes (Handles.ejes 1).
k) Panel:
Proporciona agrupamientos identificable para los controles y les da una jerarquia.
Si Ud. Agrega un panel luego de agregar otros controladores, necesita traerlos adelante utilizando los comandos bring to front (traer adelante) y send to back
(enviar atras) en el men
u del formulario.
l) Button Group:
Permite agrupar los radiobutton para que se comporten mutuamente excluyentes.
m) ActiveX Control:
La siguiente tabla contiene la lista de las propiedades mas u
tiles para los controles.
Para acceder a configurar estas propiedades basta con hacer clic derecho sobre el
control y seleccionar la opcion Property Inspector
3.
Interfaz Gr
afica de Usuario
3.2.
96
3.
Interfaz Gr
afica de Usuario
97
3.
Interfaz Gr
afica de Usuario
98
3.
Interfaz Gr
afica de Usuario
99
7. Si todo esta conforme nuestro GUI modificara sus dimensiones, luego del panel
izquierdo hacemos clic en la opcion Axes y arrastamos una figura del tama
no del
fondo de nuestro GUI
8. Del mismo panel elegimos Static Text para colocar un texto de fondo a nuestro
GUI
3.
Interfaz Gr
afica de Usuario
100
10. Una vez alli, ingresamos a las Propiedades del Text, ya sea con anticlic y luego
clic en Property Inspector o dando doble clic en el rectangulo. Una vez alli
modificaremos las opciones de FontSize, FontWeigth y String
3.
Interfaz Gr
afica de Usuario
101
11. Una vez hechas esas modificaciones solo arrastaremos de cualquier esquina de
nuestro rectangulo para visualizar nuestro texto completamente.
3.
Interfaz Gr
afica de Usuario
102
13. De la misma forma que el texto arrastamos el cursor hasta formar un rectangulo.
14. Creamos un nuevo StaticText como en el paso 8, con las siguientes propiedades.
3.
Interfaz Gr
afica de Usuario
103
16. Haciendo anticlic en nuestro texto f(x): y luego Duplicate comenzamos a crear
las opciones a:, b:, Tol = 10, - si no ven por completo no hay nada de que
preocuparse mediante las esquinas pronunciadas puede usted extender o contraer
a su gusto. Se recomienda encuadrar el texto a lo mas peque
no posible.
17. De nuestro Panel hacemos clic en la opcion Edit Text y formamos un rectangulo.
3.
Interfaz Gr
afica de Usuario
104
18. Vayamos a las propiedades de nuestro Panel y modificamos Title, como se puede
observar
19. Una vez alli, comenzamos a ordenar los StaticText y los Edit Text dentro de
nuestro Panel Datos recuerde que al igual que los StaticText los Edit Text
tambien pueden ser duplicados.
20. Aunque al principio nuestros elementos no esten bien alineados Matlab tiene una
opcion llamada Align Objects ubicado como se muestra a continuacion
3.
Interfaz Gr
afica de Usuario
105
21. Hacemos clic alli y nos aparecera la ventana siguiente. Para nuestro caso seleccionamos f(x): y nuestro Edit Text, seleccionando uno luego presionamos la
tecla CONTROL y seleccionamos el otro (sin dejar de presionar CONTROL).
Y seleccionamos las opciones del Align Objects como nos muestra la siguiente
imagen
3.
Interfaz Gr
afica de Usuario
106
23. Repetimos los pasos hasta alinear nuestros objetos y tener una apariencia similar
a la siguiente.
24. Como podemos ver el color de fondo de Tol = 10 sobresale en el Edit Text
cercano a b: para ello la solucion es bastante simple, hacemos anticlic en el Edit
Text y presionamos Bring to Front o con las teclas Control + F, asi como en
la siguiente imagen.
3.
Interfaz Gr
afica de Usuario
107
25. Creamos 3 nuevos StaticText y sus respectivos Edit Text y los alineamos como
ya explicamos anteriormente .
3.
Interfaz Gr
afica de Usuario
108
27. Ingresamos a las propiedades del Listbox y modificamos la opcion String borrando su contenido.
28. Comenzamos a Alinear nuestro Listbox con los otros objetos que hemos creado.
3.
Interfaz Gr
afica de Usuario
109
3.
Interfaz Gr
afica de Usuario
110
32. Volvemos a nuestro Panel Izquierdo y elegimos la opcion Push Botton y hacemos
clic alli.
3.
Interfaz Gr
afica de Usuario
111
33. Duplicamos nuestro Boton dos veces y creamos un Panel llamado Operaciones. A
nuestro primer Boton lo llamaremos Graficar y en sus propiedades modificaremos
FontSize, FontWeigth, String.
34. A los otros dos botones los llamaremos Calcular, Salir con las mismas propiedades
del anterior. Luego Alinearemos los botones haciendo uso de Align Objects
3.
Interfaz Gr
afica de Usuario
112
3.
Interfaz Gr
afica de Usuario
113
37. Realizado esto, nos aparecera una nueva ventana de esta forma
3.
Interfaz Gr
afica de Usuario
114
3.
Interfaz Gr
afica de Usuario
115
3.
Interfaz Gr
afica de Usuario
116
43. Como podemos apreciar nuestra imagen no cumple todo el fondo de nuestro
GUI por lo tanto aumentaremos las medidas de nuestro fondo ingresando a las
propiedades del Axes y modificando lo siguiente: Width, Heigth, Tag como lo
explica la imagen.
44. Una vez hecho este cambio, vamos a Biseccion.fig y hacemos clic en Run Figure
o Control + T
3.
Interfaz Gr
afica de Usuario
117
45. Una vez alli podemos darnos cuenta que la imagen de fondo cubre todo el proyecto.
Pero otro detalle es que los cuadros y Axes estan en una mala posicion. Tanto solo
ordeneras de un modo que puedan ser apresiadas y no interfiera con el fondo.
46. Despues de ubicar bien nuestros objetos deberiamos tenerlos ubicados aproximadamente asi.
3.
Interfaz Gr
afica de Usuario
118
47. Ahora comenzaremos la programacion de nuestros Botones, en primer lugar trabajaremos con el Boton Graficar, hacemos anticlic luego vamos a View Callbacks
y se desplayara un menu del cual escogeremos Callback
3.
Interfaz Gr
afica de Usuario
119
49. Antes de continuar no debemos olvidar y verificar los Tag de cada uno de los
objetos de nuestro GUI. Ingresando a sus propiedades.
edit1
grafica
edit4
edit3
edit2
edit5
listbox1
edit6
edit7
pushbotton1
pushbotton2
pushbotton3
50. Una vez verificado volvemos a nuestros codigo e ingresamos a configurar el boton
Calcular ya sea haciendo anticlic y eligiendo Callback o desde Show Functions
y escogiendo pushbotton2 Callback.
3.
Interfaz Gr
afica de Usuario
120
3.
Interfaz Gr
afica de Usuario
121
53. Terminada nuestra programacion ejecutaremos nuestro GUI, haciendo clic en Save
and run Biseccion.m (F5) o presionando la tecla F5
3.
Interfaz Gr
afica de Usuario
122
55. Mejoraremos nuestro GUI con opciones de Zoom y manejo en la grafica. Para ello
volveremos a nuestro Biseccion.fig y luego damos clic en Toolbar Editor
3.
Interfaz Gr
afica de Usuario
123
56. Seleccionamos uno a uno los instrumentos (tools) a utilizar y presionamos Add
57. Seleccionaremos Zoom In, Zoom Out, Pan, Data Cursor y presionamos OK
3.
Interfaz Gr
afica de Usuario
124
59. En los Edit Text comenzamos a colocar los valores en este caso en f(x): pondremos log(x) x + 2 en el intervalo de 2 a 4 con un error de 105 y luego
presionamos el boton Graficar
3.
Interfaz Gr
afica de Usuario
125
BIBLIOGRAFIA
[1] Buhmann, M. D. (2004). Radial Basis Functions: Theory and Implementations.
Cambridge University Press. United Kingdom.
J.
Apuntes
de
C
alculo
Numerico[en
http://ma1.eii.us.es/Material/Cal_Num_itis_Apuntes.pdf
lnea].
[consulta
2012]
[5] Comer E.(2009) Metodos Numericos Instituto Tecnologico de Tijuana.
[6] Mathews J.; Fink K.(2000) Metodos Numericos con MATLAB. Prentice Hall,
Madrid.
[7] Meja C.(2002) Invitacion al An
alisis Numerico. Universidad Nacional de Colombia, Medelln.
[8] Mora W.F.(2010) Introduccion a los Metodos Numericos. Instituto Tecnologico de
Costa Rica.
[9] M
uller H. (1996) Una Introducci
on al An
alisi Numerico. Universidad Mayor de
San Simon. Cochabamba, Bolivia.
[10] Nakamura, S. (1992). Metodos Numericos Aplicados con Software. Pearson Educacion.
BIBLIOGRAFIA
127
G.
APUNTES
DE
MATLAB [en
lnea].