Sie sind auf Seite 1von 127

2014

M
etodos Num
ericos para el
C
alculo Cientfico con Matlab
TOMO 0

Presentado por:
Mera Carrasco, Junior Lino

Malhaber Montenegro, Miguel Angel

Asesor:
Dr. Collantes Santisteban, Luis Jaime

UNPRG

UNIVERSIDAD NACIONAL
PEDRO RUIZ GALLO

FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS

ESCUELA PROFESIONAL DE MATEMATICA

M
etodos Num
ericos para el C
alculo
Cientfico con Matlab
TOMO 0
CONCEPTOS PREVIOS

Presentado por:

Mera Carrasco Junior Lino


Malhaber Montenegro Miguel Angel

Asesor:

Dr. Collantes Santisteban Luis Jaime

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:

TOMO 0 Conceptos Previos


TOMO 1 Ecuaciones No Lineales
TOMO 2 Interpolacion
TOMO 3 Diferenciacion e Integracion Numerica
TOMO 4 Ecuaciones Lineales
TOMO 5 Ecuaciones Diferenciales Ordinarias
TOMO 6 Ecuaciones Diferenciales Parciales

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.

Este TOMO denominado Conceptos Previos esta dividido en tres captulos:

En el primero revisaremos la teora de Matrices, nociones del Calculo, Series de Taylor,


Analisis del Error y Criterios de Convergencia los cuales seran utilizados en los tomos
siguientes.

En el segundo captulo estudiaremos a Matlab desde su correcta instalacion hasta la


definicion de las funciones basicas que serviran en nuestros GUIs.

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.1. Matrices Cuadradas: Tipos especiales . . . . . . . . . . . . . . . .

1.1.2. Operaciones con matrices

. . . . . . . . . . . . . . . . . . . . . .

1.1.3. Determinante . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.4. Inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.2. Repaso de Calculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

1.3. Series de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

1.4. Analisis de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

1.4.1. Exactitud y precision . . . . . . . . . . . . . . . . . . . . . . . . .

20

1.4.2. Tipos de errores

. . . . . . . . . . . . . . . . . . . . . . . . . . .

21

1.5. Criterios de convergencia . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

2. Matlab

25

2.1. Que es Matlab? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.2. Requisitos e Instalacion de Matlab . . . . . . . . . . . . . . . . . . . . .

27

2.3. Inicio con Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

2.4. Operaciones con n


umeros reales . . . . . . . . . . . . . . . . . . . . . . .

37

2.5. Operaciones con n


umeros complejos . . . . . . . . . . . . . . . . . . . . .

38

2.6. Operacion simbolica con n


umeros . . . . . . . . . . . . . . . . . . . . . .

38

2.7. Variables numericas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

2.8. Variables simbolicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

2.9. Operaciones con infinitos . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

2.10. Visualizacion de resultados . . . . . . . . . . . . . . . . . . . . . . . . . .

40

2.11. Tipo de dato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

2.11.1. Datos numericos . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

2.11.2. Cadena de Caracter . . . . . . . . . . . . . . . . . . . . . . . . . .

50

2.11.3. Conversion de valores numericos a cadenas y viceversa, y entre


diferentes bases . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

2.12. Analisis de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

2.12.1. Punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

2.12.2. Tipos de errores

. . . . . . . . . . . . . . . . . . . . . . . . . . .

57

2.13. Matrices y vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

2.13.1. Introduccion y operaciones de matices numericas

. . . . . . . . .

61

2.13.2. Submatrices numericas . . . . . . . . . . . . . . . . . . . . . . . .

63

2.13.3. Introduccion y operaciones de matrices simbolicas . . . . . . . . .

63

2.13.4. Funciones matriciales . . . . . . . . . . . . . . . . . . . . . . . . .

64

2.14. Graficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

2.14.1. Primeros Pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

2.14.2. Conveniencia de los ficheros m . . . . . . . . . . . . . . . . . . . .

82

2.15. Definicion de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85

2.15.1. Funciones de MATLAB

. . . . . . . . . . . . . . . . . . . . . . .

85

2.15.2. Definicion funciones propias . . . . . . . . . . . . . . . . . . . . .

86

3. Interfaz Gr
afica de Usuario
3.1. Conceptos Previos

89

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

3.1.1. Iniciando una Interfaz Grafica GUI . . . . . . . . . . . . . . . . .

89

3.1.2. Tipos de control . . . . . . . . . . . . . . . . . . . . . . . . . . . .

90

3.2. Elaboracion de una Interfaz Grafica . . . . . . . . . . . . . . . . . . . . .

96

Captulo 1

PRELIMINARES

1.1.

Matrices

Una matriz A de n m es un arreglo rectangular de nm elementos aij , con i =


1, . . . , n,

j = 1, . . . , m distribuidos en un orden de n filas y m columnas como se

muestra a continuacion:

A=

a11 a12 a13 . . . a1m


a21 a22 a23 . . . a2m
..
..
..
..
.
.
.
.
an1 an2 an3 . . . anm

(1.1)

A un conjunto de elementos horizontal se le conoce como filas y a uno vertical, columna.


El primer subndice designa el n
umero de fila y el segundo, el n
umero de columna. El
elemento a11 se localiza en la esquina superior izquierda de A. La matriz A tiene n filas
y m columnas, por lo tanto, se dice que es de dimension (n m).
Las matrices con dimension de uno en filas, n = 1, son vectores fila y el primer subndice
se puede eliminar:
b = [b1

b2

b3

...

bm ]

1.

Preliminares

y cuando la dimension de columnas es uno, m = 1, se les llama vectores columna y el


segundo subndice se puede eliminar:

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.

Matrices Cuadradas: Tipos especiales

Una matriz sim


etrica es aquella en que aij = aji para todo i y j, es decir, AT = A.
Una matriz diagonal es una matriz cuyos elementos fuera de la diagonal principal
son iguales a cero.
Una matriz identidad es una matriz diagonal donde todos los elementos de la
diagonal principal son iguales a 1.
Una matriz triangular superior es una donde todos los elementos abajo de la
diagonal principal son iguales a cero.

1.

Preliminares

Una matriz triangular inferior es una donde todos los elementos arriba de la
diagonal principal son iguales a cero.

1.1.2.

Operaciones con matrices

La adicion algebraica de matrices se lleva acabo elemento a elemento y es conmutativa:


cij = aij bij = bij aij
y asociativa: aij + (cij + bij ) = (aij + cij ) + bij
La multiplicacion de una matriz A por un escalar k se obtiene multiplicando cada
elemento de A por k.
El producto de dos matrices es posible solo para tama
nos compatibles, concretamente,
si A es n p y B es p m, para alg
un entero positivo p. En tal caso C = AB es una
matriz n m cuyos elemntos son
cij =

p
X

aik bkj , para i = 1, . . . , n,

j = 1, . . . , m

k=1

el producto de matrices es asociativa (AB)C = A(BC) y distributiba A(B + C) =


AB + AC, pero en general, la multiplicacion no es conmutativa AB 6= BA
A
un cuando el producto es posible, la division de matrices no es una operacion definida.
Sin embargo, si una matriz A es cuadrada y no singular, existe una matriz A1 , llamada
la inversa de A: AA1 = A1 A = I
Unos de los requisitos para que exista la inversa de una matriz es que sea no singular.
Esta caracterstica se basa en la obtencion del determinante de una matriz, |A|; si
|A| = 0, la matriz es singular; si |A| =
6 0, la matriz es no singular.

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

1. Si A = [a] es una matriz de 1 1, entonces det(A) = |A| = a.

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

ij aij , para n > 1,

j=1

i = 1, . . . , n

(1.3)

donde ij = (1)i+j Mij

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

multiplica por k, es decir:






a11 a12
. . . a1n




a21 a22
. . . a2n


..
..
..
.
.
.
= k


ai1 ai2
. . . kain


..
..
..
.

.
.




an1 an2
. . . ann

. . . a1n
. . . a2n
..
.
. . . ain
..
.
. . . ann










= k|A|







(1.4)

Propiedad 3. Si A, B y C son identicas excepto por la j-esima columna y la j-esima


columna de C es la suma de la j-esima columna de A y B. Entonces det(C) = det(A) +
det(B).
Propiedad 4. Si se hace un intercambio de filas o columnas de A, entonces el determinante de esa nueva matriz es |A|.
Propiedad 5. Si A tiene dos filas o columnas iguales , det(A) = 0.
Propiedad 6.Si un fila (columna) de A es un m
ultiplo constante de otra fila (columna),

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

La inversa de una matriz A, denominada A1 , calculada mediante cofactores: A1 =


adj(A)
,
|A|

donde adj(A) = |cof ac(A)|T .

De esto podemos decir que la inversa de A existe si y solo si el determinante de A es


no nulo . La u
ltima condicion se satisface si y solo si los vectores columnas de A son
linealmente independientes.

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.

Teorema 1.2.1. (Fundamental del Algebra)


Cualquier ecuaci
on algebraica (Polinomio) con coeficientes reales o complejos, entonces existe al menos una raiz real o
compleja tal que p() = 0.
Cuando en un polinomio su grado (n) es 1, tiene un unico cero = a0 /a1 , cuando
p
n = 2 tiene dos ceros = (a1 a21 4a0 a2 )/(2a2 ), Se podra encontrar solucion
por radicales para cualquier grado del polinomio ?.
Teorema 1.2.2. ( de Abel) pn ,

n 5, aplicando u
nicamente un n
umero finito

operaciones a los coeficientes del polinomio, no existe una f


ormula explcita para calcular
todos los ceros de dicho polinomio.
Denotaremos por Pn el espacio de polinomios de grado menor o igual que n
pn (x) =

n
X

ak xk .

(1.5)

k=0

Teorema 1.2.3. (Algoritmo de la divisi


on) Si p(x) y f (x) son polinomios en x y
f (x) 6= 0 entonces se puede encontrar polinomios q(x) y r(x) tal que : p(x) = q(x)f (x) +
r(x), donde r(x) = 0 o grado(r(x)) <grado(f (x)).

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

La funcion f es continua en el conjunto X si es continua en cada n


umero en X.
C(X) denota al conjunto de funciones que son continuas en X. Cuando X es un intervalo
de la recta real, se omite los parentesis en esta notacion. Por ejemplo, el conjunto de
todas las funciones continuas en el intervalo cerrado [a, b] se denota C[a, b]. El limite de
una sucesion infinita de n
umeros reales o complejos se define de manera similar.
Definici
on 1.2.5. Sea {xn }
on infinita de n
umeros reales o complejos. La
n=1 una sucesi

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.

Teorema 1.2.6. Si f es una funci


on definida en un conjunto X de n
umeros reales y
x0 X entonces las siguientes afirmaciones son equivalentes:
a. f es continua en x0 ;
b. Si {xn }
on en X que converge a x0 , entonces lm f (xn ) = f (x0 ).
n=1 es cualquier sucesi
n

La derivada de f en x0 es la pendiente de la recta tangente a la grafica de f en (x0 , f (x0 )).


Como se muestra en la figura 1.
Teorema 1.2.7. Si la funcion f es derivable en x0 , entonces f es continua en x0 .

1.

Preliminares

14

f'(x0 )

Definici
on 1.2.6. Sea f una funcion definida en un in-

y=f(x0 )

tervalo abierto que contiene a x0 . La funcion f es derivf (x)f (x0 )


xx0
xx0

able en x0 si f (x0 ) = lm

(x0,f(x ))

f(x0)

existe. El n
umero

f (x0 ) es la derivada de f en x0 . Una funcion que tiene

x0

derivadas en cada n
umero de un conjunto X es derivable
en X.

Figura 1.1: la derivada


Los siguientes teoremas son fundamentales en la deduccion de metodos para la estimacion del error.
Teorema 1.2.8. ( de Bolzano) Sea f C[a, b] tal que f (a)f (b) < 0 entonces existe
c (a, b) tal que f (c) = 0. (Sea aplica en el metodo de bisecci
on)
Y
f'(c)=0
f(a)=f(b)

y=f(x)

Teorema 1.2.9 (Teorema de Rolle).


Suponga que f C[a, b] y que f es derivable
en (a, b). Si f (a) = f (b). entonces existe un

n
umero c en (a, b) tal que f (c) = 0. (ver
figura 2)

Figura 1.2: Teorema de Rolle


Rectas paralelas

pendiente f'(c)
y=f(x)

Teorema 1.2.10. (Teorema del Valor


medio) Si f C[a, b] y f es derivable en
(a, b). Entonces existe un n
umero c en (a, b)
tal que f (c) =

f (b)f (a)
.
ba

(ver figura 3)

Figura 1.3: Teorema del valor medio

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

Teorema 1.2.11. (Teorema de los Val-

ores extremos) Si f C[a, b], entonces


existen c1 , c2 [a, b] tales que f (c1 )

y=f(x)

f (x) f (c2 ) para toda x [a, b]. Adem


as,
si f es derivable en (a, b), entonces los

c
1

n
umeros c1 y c2 aparecen en los extremos de
[a, b], o bien donde se anula f . (ver figura

Figura 1.4: Teorema de los valores ex-

4)

tremos

x0 , x1 , . . . , xn , satisfacen a = x0 x1 . . . xn = b, y xi = xi xi1 para toda


i = 1, 2, . . . , n y zi se elige de manera arbitraria en el intervalo [xi1 , xi ]
Toda funcion continua f en [a, b] es Rieman-integrable en [a, b]. Esto nos permite elegir,
para fines de calculo, los puntos xi uniformemente distribuidos en [a, b], y para cada
i = 1, 2, . . . , n elegir zi = xi . En este caso,
Zb
a

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

de signo en [a, b]. Entonces existe un n


umero c en (a, b) tal que
Zb

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

El otro teorema que necesitamos y que normalmente no se presenta en un curso basico


de calculo se deduce al aplicar de manera sucesiva el teorema de Rolle a f, f , . . . , y, por
u
ltimo, a f (n1)
Teorema 1.2.13. (Teorema generalizado de Rolle) Suponga que f C[a, b] en n
veces derivable en (a, b). Si f (x) se anula en los n + 1 n
umeros distintos x0 , . . . , xn en
[a, b], entonces existe un n
umero c en (a, b) tal que f n (c) = 0
El siguiente teorema es el del valor intermedio, sirve para determinar si existe soluciones
de ciertos problemas. Sin embargo, no proporciona un metodo eficaz para determinar
tales soluciones.
Teorema 1.2.14. (Teorema del valor intermedio) Si f C[a, b] y L es cualquier
n
umero entre f (a) y f (b), entonces existe un n
umero c en (a, b) tal que f (c) = L

En la siguiente seccion describiremos los polinomios de Taylor. Estos


se usan ampliamente en el analisis n
umerico.

1.3.

Series de Taylor

La Serie de Taylor (Polinomio de Taylor) es el medio mas importante que se emplea


para obtener modelos n
umericos y analizar los errores de truncamientto.
Teorema 1.3.1. (Teorema de Taylor) Supongamos que f C n [a, b], que f (n+1)
existe en [a, b] y x0 [a, b]. Para cada x [a, b], existe un n
umero (x) entre x0 y x tal

1.

Preliminares

17

que f (x) = Pn (x) + Rn (x), donde:

(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

En este caso, Pn (x) es el nesimo polinomio de Taylor para f respecto a x0 y Rn (x) se


llama el t
ermino del residuo asociado a Pn (x) escrito en la forma de Lagrange, y no
es sino un error de truncamiento. J.L. Lagrange (1736-1813) fue uno de los grandes
matematicos franceses de todos los tiempos que, como veremos, hizo trascendentales
aportes en la Teora de Interpolacion. La serie infinita obtenida al tomar el limite de
Pn (x) cuando n es la serie de Taylor para f en torno a x0 . En el caso x0 = 0, el
polinomio de Taylor suele llamarse polinomio de Maclaurin, y la serie de Taylor se
nombra serie de Maclaurin.
El termino error de truncamiento se refiere al error implcito al usar una suma truncada,
o finita, para aproximar la suma de una serie infinita.
Ejemplo 1.3.1. Determinar (a) el segundo y (b) el tercer polinomio de Taylor para
f (x) = cos x respecto a x0 = 0, y use estos polinomios para aproximar cos(0,01).
Como f C n (R), el teorema de Taylor se puede aplicar a cualquier n 0. Ademas,

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.

(a) Para n = 2 y x0 = 0, tenemos cos x = 1 21 x2 + 16 x3 sen (x), donde (x) es un


n
umero entre 0 y x (ver figura 6). Para x = 0,001, el polinomio de Taylor y el
Termino del residuo son
cos 0,01 = 1 21 (0,01)2 + 16 (0,01)3 sen (x) = 0,99995 + 0,16 106 sen (x), donde
0 < (x) < 0,01. (la barra sobre el 6 en 0.16 se usa para indicar que este digito
se repite de manera indefinida) Puesto que | sen (x)| < 1 para toda x. tenemos
| cos 0,01 0,99995| 0,16 106, de modo que la aproximacion 0.99995 coincide

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).

donde 0 < (x)


< 0,01. El polinomio de aproximacion es el mismo, y la aproximacion a
un es 0.99995, pero ahora tenemos una mucha mejor garantia de precision
1 4

puesto que | cos (x)|


1 para toda x, tenemos | 24
x 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

Supongamos que al hacer ciertos calculos numericos tengamos un numero de la forma :


y = 0.d1 d2 . . . dk dk+1dk+2 . . . 10n y su aproxiamcion se puede realizar por dos metodos
:
1. Error de truncamiento
Consiste simplemente en cortar los digitos dk+1dk+2 . . . para obtener: y = 0.d1 d2 . . . dk
10n .
Estos tipos de errores son evaluados con una formulacion matematica en la serie
de Taylor.
2. Error de redondeo
Llamado redondeo, suma S 10n(k+1) a y y luego trunca el resultado para

obtener un n
umero de la forma y = 0.1 2 . . . k 10n .

Si dk+1 S, sumamos 1 a dk para obtener f l(y); esto es , redondeamos hacia


arriba, si dk+1 < S, Simplemente truncamos todo excepto los primeros k digitos;
as, redondeamos hacia abajo.
En la siguiente definicion se describen dos metodos para medir errores de aproximacion.
Definici
on 1.4.2. (Errores absoluto y relativo) Supongamos que el valor exacto de
un dato es p y disponemos de un valor aproximado p .
Se denomina error absoluto de p a la distancia que lo separa del valor exacto p,
es decir |p p |.
Se denomina error relativo de p al cociente entre el error absoluto y el objeto

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

a. Si p = 0,3000 101 y p = 0,3100 101 , el error absoluto es 0.1

y el error relativo es 0,3333 101

b. Si p = 0,3000 103 y p = 0,3100 103 , el error absoluto es 0,1 104 y el


error relativo es 0,3333 101 .

c. Si p = 0,3000 104 y p = 0,3100 104 , el error absoluto es 0,1 103 y el error


relativo es de nuevo 0,3333 101

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

Luego p aproxima a p con 6 cifras significativas


Definici
on 1.4.4. Si t es el mayor entero para el cual |p p | <

10t
2

se dice que p

aproxima a p con t decimales


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.

1.

Preliminares

23

Ejemplo 1.4.4. La formula cuadratica establece que las races de ax2 + bx + c = 0,


cuando a 6= 0, son
x1 =

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

una mala aproximacion a x1 = 0,01611, con el error relativo grande


| 0,01611 + 0,02000|
= 2,4 101 .
0,01611
Por otro lado, el calculo de x2 es: f l(x2 ) =
Tiene el error relativo peque
no

|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

= 0,01610, con el peque


no error

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)

Abs(f (x)) T OL2

(1.7)

Criterio 2:

Si se cumple algunos de estos criterios se habra encontrado la solucion, de lo contrario,


se contin
ua iterando de acuerdo al metodo seleccionado.

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

Visitando la pagina de Mathworks empresa desarrolladora de Matlab cuya sede central


esta situada en Natick, Massachusetts, Estados Unidos. Nos ofrece la siguiente informacion acerca de los requisitos del sistema y el ordenador para la correcta instalacion de
la version 2012b.

http : //www.mathworks.es/support/sysreq/current release/

2.

Matlab

28

Si nuestro ordenador cumple los requisitos antes mecionados pasaremos a la instalacion


de Matlab.
1. Ingresamos a la ubicacion de nuestro instalador y ejecutamos el archivo setup.exe
o simplemente setup.

2. Seleccione la opcion Install without using the Internet y luego presione Next.

2.

Matlab

29

3. Acepte las condiciones seleccionando Yes y luego presione Next.

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

5. Ubicamos la primera clave que aparezca en nuestro instalador y la copiamos.

6. Pegamos la clave en el recuadro que hemos seleccionado y presionamos Next.

30

2.

Matlab

7. Seleccionamos Typical y luego presionamos Next.

8. Dejamos por defecto la opcion de la ubicacion y presionamos Next.

31

2.

Matlab

9. Presionamos Install.

10. Una vez alli, solo tenemos que esperar a que instalen los componentes.

32

2.

Matlab

11. Una vez todo este correcto presionamos Next.

12. Dejamos activa la opcion Active MATLAB y presionamos Next.

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.

16. Una vez alli solo presionamos Next.

2.

Matlab

17. Si todo esta correcto presionaremos Finish.

36

2.

Matlab

2.3.

37

Inicio con Matlab

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)

Resto de una division entera

>>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

Se puede operar con las variables. Por

volumen=altura*pi*radio^2

defecto, pi es el numero

area=(altura+radio)*2*pi*radio Se puede hacer varias operaciones a la


c=altura/radio

vez e incluso asignar valores a nuevas

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

a=1234, b=sym(237) sym Convierte variables numericas en simbolicas


bb=numeric(b)

numeric realiza la operacion inversa a sym

d=a+b

2.9.
1/0

Operaciones con infinitos


Inf representa el concepto tradicionalmente
representado por

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

El punto y coma (;) al final de la orden hace que no se visualice el resultado.


>> Altura=1/sqrt(3);

sqrt realiza la raz cuadrada

>> Altura

Solo se muestra una aproximacion con 4 cifras decimales

>> format long, Altura

Ahora se pueden ver hasta 15 cifras decimales

>> format short e, Altura Formato exponencial corto


>> format long e, Altura

Formato exponencial largo

>> 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

Entero con signo de 8 bits

-2^7 a 2^7-1

int8

Entero con signo de 16 bits

-2^15 a 2^15-1

int16

Entero con signo de 32 bits

-2^31 a 2^31-1

int32

Entero con signo de 64 bits

-2^63 a 2^31-1

int64

Entero sin signo de 8 bits

0 a 2^8-1

int8

Entero sin signo de 16 bits

0 a 2^16-1

int16

Entero sin signo de 32 bits

0 a 2^32-1

int32

Entero sin signo de 64 bits

0 a 2^32-1

int64

Ejemplo 2.11.1. >> x=int16(32767)


x= 32767
luego podemos verificar el tipo de dato de x mediante:
>> whos x
Name size
x

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);

%crea un entero de 64 bits

>> 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

La segunda es utilizando la funcion complex. Se comninan 2 entradas, la primera es real


y la segunda imaginaria.
>> x=[10

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

>> zi= imag(z)


zi=
13

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

Comandos que identifican el tipo de dato num


erico
Para identificar el tipo de dato de una variable x se puede usar cualquiera de los siguientes comandos:
COMANDO

OPERACION

whos x

visualiza el tipo de dato x

isnumeric(x)

Determina si x es un tipo de dato numerico

isa(x,integer)

Determina si x es del tipo numerico especificado

isa(x,uint 64)

Determina si x es del tipo numerico especificado

isa(x,float)

Determina si x es del tipo numerico especificado

isa(x,double)

Determinar si x es del tipo numerico especificado

isa(x,single)

Determinar si x es del tipo numerico especificado

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

Formato de valores num


ericas
A continuacion se presenta los diferentes formatos que usa MATLAB en la visualizacion
de sus variables.

2.

Matlab

48

TIPO

RESULTADO

short

Escala el formato a 5 digitos.

short e

Escala el formato a 5 digitos. A


nade la e.

short g

El mas conveniente de los short.

long

Escala el formato a 5 digitos.

long e

Escala el formato a 15 digitos. A


nade la e.

long g

El mas conveniente de los long.

rat

En forma de fraccon.

hex

Hexadecimal (representacion en base 16)

bank

Establece dos cifras decimales.

compact

Suprime el exceso de lneas.

loose

A
nade mas lneas para que la salida sea mas legible.

La funcion format cambia la visualizacion de los valores numericos mostrados en la


ventana de comandos.
Esta configuracion solo afectan la forma en la que los n
umeros son visualizados, no como
MATLAB los calcula.

Format, por si solo, cambia al formato por defecto, que es short.


Format tipo, cambia al formato especificado por tipo.
La funcion get(0,format) verifica el formato actual.
>> x=[17/6 25.786543e-3];
>> format short
>> x
x =

2.8333

0.0258

>> format short e


>> x
x =

2.8333e+000

2.5787e-002

>> format short g


>> x
x =

2.8333

0.025787

2.

Matlab

49

>> format long


>> x
x =

2.833333333333334

0.025786543000000

>> format long e


>> x
x =

2.833333333333334e+000

2.578654300000000e-002

>> format long g


>> x
x =

2.83333333333333

>> format bank


>> x
x =

2.83

0.03

>> format rat


>> x
x =

17/6

259/10044

>> format compact


>> x
x =

17/6

259/10044

>> format loose


>> x
x =

17/6

259/10044

0.025786543

2.

Matlab

2.11.2.

50

Cadena de Caracter

En MATLAB, cadena se refiere a un arreglo de caracteres UNICODE. La cadena es un


vector, donde cada elemento de este vector es un caracter.
Creaci
on de una cadena de caracteres (Arreglo de caracteres de 1 dimensi
on)
Se especifica el dato caracter ubicado a los caracteres dentro de un par de comillas
simples.
>> curso=seminario de aplicada
curso =
seminario de aplicada
>> whos curso
Name

Size

Bytes

curso

1x22

44

Class

Attributes

char

como se puede apreciar cada caracter usa 2 bytes en su almacenamiento interno.


las funciones class e ischar muestran la identidad de curso como un arreglo de caracterres.
>> class(curso)
ans =
char
>> ischar(curso)
ans =
1

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

Determina si 2 cadenas son identicas. Reconoce may


usculas y min
usculas.

strncmp

Determina si los primeros n caracteres de 2 cadenas


son identicos. Reconoce may
usc. y min
usc.

strcmpi

Determina si 2 cadenas son identicas. No diferencia entre


may
usculas y min
usculas.

strncmpi

Dermina si los primeros n caracteres de 2 cadenas son


identicos. No diferencia entre may
usculas y min
usculas.

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=

Comandos que identifican a un car


acter
isletter determina si un caracter es una letra.

2.

Matlab

54

>> curso=seminario MM635;


>> A=isletter(curso)
A= 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
isspace, determina si un caracter escun espacio en blanco (blanco, tab o nueva
linea)
Comparaci
on que busca y reemplazan caracteres
strrep permite cambiar los caracteres de una cadena.
>> fecha=miercoles 27/07/1821;
>>correccionfecha=strrep(fecha,27/07/1821,28/07/1821)
correccionfecha=

miercoles 28/07/1821

Findstr devuelve la posicion inicial de una subcadena contenida a lo largo de la


cadena.
>> posicion=findstr(28,correccionfecha)
posicion =

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

>> whos x y cadena1


Name

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

Convierte un entero positivo a su equivalente caracter


( codigo UNICODE). Trunca cualquier parte fraccional

int2str

Convierte un entero positivo o negativo a un tipo caracter.

num2str

Convierte un tipo numerico a un tipo caracter de precision y


formato especfico

mat2str

Convierte un tipo numerico a un tipo caracter de una


determinada precision, retornando una cadena MATLAB que
puede ser evaluada

dec2hex

Convierte un entero positivo a un tipo caracter de base


hexadecimal

dec2bin

Convierte un entero positivo a un tipo caracter de base


binaria

dec2base

Convierte un entero positivo aa un tipo caracter de cualquier


base 2 a 36.

2.

Matlab

56

Conversi
on de cadenas a valores numericos
COMANDO

OPERACION

uintN

Convierte un caracter a un codigo entero que representa el caracter

str2num

Convierte un tipo caracter a un tipo numerico

str2double

Similar a strnum, pero ofrece una mayor calidad o trabaja con arreglos
celdas de cadenas.

hex2num

Convierte un tipo numerico a un tipo caracter de precision especfica,


retornando una cadena que MATLAB pueda evaluar.

hex2dec

Convierte un tipo caracter de base hexadecimal a un entero positivo.

bin2dec

Convierte un entero positivo a un tipo caracter de base binaria.

base2dec

Convierte un entero positivo a un tipo caracter de cualquier base


desde 2 hasta 36.

2.12.

An
alisis de error

Cualquier problema numerico se resuelve a travez de un algoritmo que nos proporciona


unos resultados a partir de unos datos iniciales. Es decir, se trata de realizar un proceso
del tipo: Datos Algoritmo Resultados
En nuestro mundo matematico permitimos la existencia de n
umeros con una canti
dad infinita de cifras. En este mundo define a 3 como el u
nico n
umero positivo tal
que al multiplicarse por el mismo produce el entero 3. Sin embargo, en el mundo de las
computadoras, cada n
umero representable tiene solo un n
umero finito de cifras significa

que solo los n


umeros racionales se pueden representar con exactitud. Puesto que 3 no
es racional, se da una representacion aproximada, una cuyo cuadrado no sera 3, pero si
lo bastante cercano a 3 como para ser aceptable.

Existen dos causa principales de errores en los calculos n


umericos. La primera es el
error de truncamiento y la segunda es el error de redondeo. El error de truncamiento se
debe a las aproximaciones utilizadas en la formula matematica.
Los errores de redondeo surgen al usar una calculadora o computadora para calculos con
n
umeros reales, pues la aritmetica de la maquina solo utiliza n
umeros con una cantidad

2.

Matlab

57

finita de cifras, de modo que los calculos se realizan u


nicamente con representaciones
aproximadas de los n
umeros verdaderos.

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

mantisa. (La precision depende de k y de )

Que se necesita para representar un n


umero en punto flotante?
El signo del n
umero, el signo del exponente, digitos para el exponente , digitos para la
amntisa.
Dado que un n
umero en punto flotante puede expresarse de distintas formas que son
equivalentes, es necesario establecer una unica representacion. Es por ello que se trabaja
con n
umeros normalizados. Decimos que un n
umero esta normalizado si el digito a la
izquierda del punto o coma esta entre 0 y la base. En particular, decimos que un n
umero
binario esta normalizado si el digito a la izquierda del punto es igual a 1.
1,00 101 normalizado 0,001 102 no normalizado
Existen varios tipos de errores, enunciaremos cuatro de ellas.

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

para cada i = 1, 2, . . . , k. Los n


umeros de esta forma se llaman n
umeros de maquina
decimales con k dgitos.
Cualquier n
umero positivo real dentro del intervalo numerico de la maquina se puede
normalizar como y = 0.d1 d2 . . . dk dk+1 dk+2 . . . 10n
La forma de punto flotante de y, que denotamos f l(y), se obtiene terminando la mantisa
de y en k cifras decimales. Hay dos formas de realizar esto.
M
etodo 1: llamado truncamiento, consiste simplemente en cortar los digitos dk+1 dk+2 . . .
para obtener: f l(y) = 0.d1 d2 . . . dk 10n .
Tambien corresponden a procedimientos infinitos (desarrollados en Series, etc.) como en
el caso del termino del residuo del teorema de Taylor.
M
etodo 2: llamado redondeo, suma S 10n(k+1) a y y luego trunca el resultado
para obtener un n
umero de la forma f l(y) = 0.1 2 . . . k 10n .
Si dk+1 S, sumamos 1 a dk para obtener f l(y); esto es , redondeamos hacia arriba, si
dk+1 < S, Simplemente truncamos todo excepto los primeros k digitos; as, redondeamos
hacia abajo.
Observacion: Los errores de redondeo son debidos a redondeos en los calculos porque
estan hechos con un n
umero finito de cifras significativas.
En muchas ocasiones el metodo de redondeo son poco significativos y no tienen ninguna
importancia Sin embargo, en algunos problemas pueden llegar a destruir por completo
el significado de un resultado.
Ejemplo 2.12.1. El n
umero pi () tiene un desarrollo decimal infinito de la forma =
3,14159265 . . .. Escrito en forma decimal normalizada, se tiene: = 0,314159265 . . .101
M
etodo 1: La forma de punto flotante de cinco digitos de n utilizando truncamiento
es:f l() = 0,31415 101 = 3,1415
M
etodo 2: Dado que el sexto digito de la expansion decimal de es 9, la forma de
con redondeo a cinco digitos es:
f l() = (0,31415 + 0,00001) 101 = 3,1416

dk+1 5

En la siguiente definicion se describen dos metodos para medir errores de aproximacion.


Definici
on 2.12.1. (Errores absoluto y relativo) Supongamos que el valor exacto
de un dato es p y disponemos de un valor aproximado p .

2.

Matlab

59

Se denomina error absoluto de p a la distancia que lo separa del valor exacto p,


es decir |p p |.
Se denomina error relativo de p al cociente entre el error absoluto y el objeto

|. En el caso p = 0 solo se utiliza el error absoluto.


evaluado, es decir, | pp
p
Consideremos los errores absolutos y relativos al representar p por p en el ejemplo
siguiente.
Ejemplo 2.12.2.

a. Si p = 0,3000 101 y p = 0,3100 101, el error absoluto es 0.1

y el error relativo es 0,3333 101

b. Si p = 0,3000 103 y p = 0,3100 103 , el error absoluto es 0,1 104 y el


error relativo es 0,3333 101 .

c. Si p = 0,3000 104 y p = 0,3100 104 , el error absoluto es 0,1 103 y el error


relativo es de nuevo 0,3333 101

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

Luego p aproxima a p con 3 cifras significativas


2. p = 106 ,

p = 999996,
|p p |
105
0,000004 <
|p|
2

Luego p aproxima a p con 6 cifras significativas

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

aproxima a p con t decimales


De regreso a la representacion de los n
umeros en la maquina, vemos que f l(y) como
punto flotante para el n
umero y tiene el error relativo | yfyl(y) |.
Si se empleam K cifras decimales y el truncamiento para la representacion en la maquina
de:
y = 0.d1 d2 . . . dk dk+1 . . . 10n
entonces | yfyl(y) | = |
10k

0.d1 d2 ...dk dk+1 ...10n 0.d1 d2 ...dk 10n


|
0.d1 d2 ...10n

=|

0.dk+1 dk+2 ...10n1


|
0.d1 d2 ...10n

=|

0.dk+1 dk+2 ...


|
0.d1 d2 ...

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

10k = 10k+1 (Cota de error relativo por truncamiento)

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

una mala aproximacion a x1 = 0,01611, con el error relativo grande


| 0,01611 + 0,02000|
= 2,4 101 .
0,01611
Por otro lado, el calculo de x2 es: f l(x2 ) =
Tiene el error relativo peque
no

|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

relativo 6,2 104 .

= 0,01610, con el peque


no error

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

b=[0.34 1+2 2^(-5)]

b = (0,34, 3, 1/32) es un vector

C=[i 2+1 1/3;

Otra matriz 3 3

4*5 1+i 1;2^(1/2) 9 1]


d=1:0.5:3

d = (1; 1,5; 2; 2,5; 3), construimos el vector d


a partir de 1 hasta 3 incrementando 0.5

size(d), size(A)

Calcula el orden de las matrices d y A.

e=1:3

Cuando no hay incremento se entiende que es 1

ee=1:-0.5:-4

El incremento puede ser negativo.

A.

Matriz traspuesta

Matriz traspuesta conjugada

A+C, A-C, A*C

Matriz suma, diferencia y producto de A y C

A+2, A-3+i

Matriz obtenida de A sumando a cada elemento 2 y -3 + i

A*b.

Producto de A por el traspuesto de b

A*i

Multiplicamos por i cada elemento de A

A.*C

Multiplicamos elemento a elemento las matrices A y C

A^2

A*A

C.^(A-6)

Matriz que resulta de elevar cada coeficiente de C al


correspondiente coeficiente de A 6

2.^A

Matriz cuyo coeficiente es 2 elevado al correspondiente


coeficiente de A

inv(A)

Matriz inversa de A

X=A\C

X es la solucion del sistema de ecuaciones A X = C


Si A es invertible coincide con inv(A)*C

Y=A/C

Y es la solucion del sistemaY C = A. En realidad,


Matlab defineA/C=(A.\C.)

A./C, A.\C

Matriz que resulta de dividir cada coeficiente de A


(resp. de C) por el correspondiente de C (resp. de A)

2.

Matlab

2.13.2.

63

Submatrices num
ericas

h=[2,1], k=[2,3] Dos vectores


Submatriz obtenida deAquedandonos con las filas dadas

A(h,k)

por h y las columnas dadas por k


Vector que tiene las dos primeras componentes de la

A(2,1:2)

segunda fila deA


A(2,:), C(:,1)

Segunda fila de A y primera columna de C

[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

es una matriz simbolica

Definicion de un vector simbolico

c=[1 3;4/5 7/8], C=sym(c) Definicion de otra matriz simbolica


D=[1,2;e,f]

Nota: D es una cadena de caracteres y no


una matriz simbolica

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)

Obteniendo el elemento a12 de la matriz A

A(1,2)=18

Haciendo que a12 valga 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)

Matriz cero de orden m n

ones(m,n)

Matriz de unos

diag(x)

Si x es un vector, el resultado es una


matriz con el vector x como diagonal principal
Si x es una matriz cuadrada, el resultado es el vector
diagonal de la matriz x

triu(A)

Parte triangular superior de la matriz A

tril(A)

Parte triangular inferior de la matriz A

hilb(m,n)

Matriz de Hilbert de orden m n

magic(m,n)

Matriz magica de orden m n

rand(m,n)

Matriz m n aleatoria

vander(x)

Matriz de Vandermonde construida a partir de x

sym(A)

Convierte una matriz numerica en simb


olica

numeric(A)

Convierte una matriz simb


olica en numerica

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)

Rango de A. Es tambien una orden simb


olica

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)

Vectores propios y valores propios. V 1 AV = D

[V,D]=eigensys(A)

Vectores y valores propios, version simb


olica

trace(A)

Traza de A

poly(A)

Coeficientes del polinomio caracterstico en orden


decreciente que es como los trata normalmente

charpoly(A)

Version simb
olica de la anterior

orth(A)

Base ortogonal de la imagen de A

null(A)

Base del n
ucleo de A, KerA

nullspace(A)

Version numerica de la anterior

[V,J]=jordan(A)

J = Forma canonica de Jordan de A y V = Matriz de paso,


es decir V 1 AV = J. Es tambien una orden simbolica

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

La orden : x=[1 2 3], y=[1 4 9], plot(x,y)


relaiza la representacion grafica de los puntos (1; 1), (2; 4) y (3;9) unidos por una lnea
recta. Matlab, por omision, une los puntos x, y mediante un trazo recto. Si nuestra
orden hubiera sido plot(x,y,+r) entonces habra pintado nuestros puntos x, y como
cruces rojas. La relacion de posibilidades de colores y marcas es la siguiente

OPCION

MARCA
lnea continua

OPCION

COLOR

lnea continua

rojo

--

lnea de guiones

amarillo

lnea punteada

magenta

-.

lnea de guiones y puntos

turquesa

cruces

verde

asteriscos

azul

puntos

blanco

crculos

negro

equis

Ejemplo 2.14.1. n=1:10


a=2.^n
plot(a,ob)
% Para ver m
as opciones teclea la orden: help plot

2.

Matlab

67

Ejemplo 2.14.2. Introduciendo una a una en la ventana de comandos las siguientes


ordenes obtendremos la representacion grafica de la funcion f (x) = sen xe0,4x en el
intervalo [0,10].
x=0:0.05:10;
y=sin(x).*exp(-0.4.*x);
plot(x,y)
axis([0,10,-1,1])

La x valora en [0, 10] y la yen[1, 1]

xlabel(eje x), ylabel(eje y) Rotulos en los ejes x, y


title(Gr
afica primera)

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)

Grafica barras verticales, donde y representa las frecuencias y x define


los espacios en el eje x.

barh(x,y)

Grafica barras verticales, donde x representa las frecuencias y y define


los espacios en el eje y.

stem(x,y)

Grafica bastones verticales, donde y representa las frecuencias y x define


los espacios en ele eje x

stairs(x,y)

Grafica una curva escalonada.

polar(x,y)

Dibuja una curva en coordenadas polares y = y(x).

pie(x)

Realiza un grafico de sectores relativo a los valores del vector x.

rose(x)

Dibuja un histograma angular relativo al vector y.

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)

Dibuja un conjunto de vectores con origen en (0,0), y cuya magnitud


y direccion viene determinadas por el modulo de z = x + iy.

feather(x,y)

Dibuja un conjunto de vectores con origen en el eje X,


y cuya magnitud y direccion viene determinadas por el modulo de y.

fplot(f,[a,b])

Grafica la funcion f en el intervalo [a, b].

ezplot(f,[a,b])

Grafica la funcion f en el intervalo [a, b], adicionando un ttulo


por defecto.

loglog(x,y)

Realiza una grafica cartesiana con escala logaritmica en los ejes


coordenados.

semilogx(x,y)

Realiza una grafica cartesiana con escala logaritmica en el eje x y


escala normal en el eje y.

semilogy(x,y)

Realiza una grafica cartesiana con escala logaritmica en el eje y y


escala normal en el eje x.

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

Circunferencia Sea C la semicircunferencia unitaria. Para hallar los puntos que se


obtienen al variar el parametro t en el intervalo [0,2], con un incremento de /4, us-

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

amos el comando LINSPACE de la manera siguiente. linspace(0,2*pi,n); donde las dos


primeras coordenadas nos indican el intervalo y la u
ltima nos indica en cuantas partes
se va a dividir el intervalo de tal manera que al hacer correr el parametro t, nos arroje
un bosquejo de la grafica. Siempre se recomienda colocar un n
umero grande para dividir
el intervalo. Ubicando y uniendo los puntos en el plano cartesiano, obtenemos:
1
0.8
0.6

>>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

>>plot(t,y), grid on,

6
5

>> hold on;

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

calcularemos su longitud de arco.


>> t = -5:.01:5;
>> x = t; y = t.^2;
>> sum = 0;
>> for j = 1:100
dx = x(j+1) - x(j);
dy = y(j+1) - y(j);
sum = sum + abs(dx)+abs(dy);

2.

Matlab

72

end
>> sum
sum =

10.0000

Haciendo uso de la proposicion 1 anteriormente mencionada, obtenemos rapidamente la


evoluta de (t) = (t, t2 ) es : e(t) = (4t3 , 12 + 3t2 )

y su traza la podemos observar en

la figura anterior de color rojo.

Cicloide La ecuacion de la cicloide es (t) = (t sen(t), 1 cos(t)) y si nosotros la


representamos en un intervalo [0, 6]. El comando en matlab sera:
>> t = linspace(0,6*pi);

2
1.8
1.6

>> x = t-sin(t); y = 1-cos(t);

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

Agnesi Agnesi la funcion que describe esta curva es f (x) =

a3
.
x2 +a2

veamos para a=2.

El comando a utilizar sera:


Cardioide Cardioide Ecuacion r = 1 + cos() donde [0, 2].su traza en matlab es:
H
elice
1. H
elice circular recta. Sus ecuaciones parametricas son: x=sent, y=sent, z=t,
t [0, 10] . vamos a graficar la curva, usando plot3

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. Graficar la siguiente curva con ecuaciones parametricas:


x=t*sen(t),y=t*cos(t),z = t2 .
Representaci
on de superficies
Matlab permite realizar graficos en tres dimensiones, tanto de lineales como de superficies, siendo sencillo crear objetos graficos a traves de los siguientes comandos. Para
ello revisaremos un documento que realizamos denominado ALGUNAS CURVAS Y
SUPERFICIES EN MATLAB:
Plot3(x,y,z) .- Dibuja el conjunto de puntos (x,y,z) en un sistema de tres dimensiones
meshgrid(x,y) .- Crea arreglos bidimensionales a partir de los arreglos x e y, para
elaborar la grafica de una superficie explicita z=f(x,y)
contour(x,y,z) .- Grafica las curvas de nivel de la superficie explicita z=f(x,y)
surf(x,y,z) .- Grafica una superficie explicita z=f(x,y) con los arreglos x , y e z; pintando cada una de las celdas
surfc(x,y,z) .- Grafica una superficie explicita z=f(x,y) con los arreglos x , y e z;
Proyectando las curvas de nivel en el plano xy
surfl(x,y,z) .- Grafica una superficie explicita z=f(x,y) con los arreglos x , y e z; considerando una iluminacion en formato basico
cylinder( f )(x,y,z) .- Grafica una superficie de revolucion generada por la rotacion

2.

Matlab

>>t=0:pi/50:10*pi;

74

40

30

%t=linspace(0,10*pi,2000)

20

10

>>plot3(sin(t),cos(t),t),grid on,axis Square


0
1
0.5

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

>>plot3(t.*sin(t),t.*cos(t),t.^2),grid on,axis Square


0
40

20

40
20

20

20
40

40

de la funcion f=f(t) en el intervalo definido para t


quiver3(x,y,z,u,v,w,c) .- Grafica los vectores de componentes (u,v,w) en los puntos
(x,y,z),c indica el tama
no de los vectores

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

Esfera Para poder trazar la esfera usaremos el comando Sphere


>>[x; y; z] =sphere(n) , donde n indica el n
umero de puntos en los que queda
dividido tanto el ecuador de la esfera como el meridiano principal
>> surf(x,y,z)
Dibuja a una esfera de radio 1 y centro (0; 0; 0).Si el centro es (x0; y0; z0) y el radio r
bastara poner

>> [x,y,z]=sphere(20);
>> x=2+3*x;y=2+3*y;z=3*z;% con

5
4
3

centro (2,2,0)y r=3


>> surf(x,y,z)

2
1
0
1
6
4

6
4

0
2

Vectores normales a una esfera:


>>[x,y,z]=sphere(20); >>surfnorm(x,y,z) grafica la esfera y los vectores en cada
punto de interseccion de los paralelos con los meridianos.

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

La grafica del toro se obtiene con la secuencia de comandos:

>> 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

La grafica de la cinta de Mobius se obtiene con la secuencia de comandos:

>> 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

Elipsoide Para graficar el elipsoide simplemente se tiene e cuenta las parametrizaciones


siguientes:
(u, v) = (cos(u). cos(v), sen(u). cos(v), 3 sen(v))
. Luego, veamos como es su grafica 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);

>>

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.

La funcion moviein(n) reserva memoria para almacenar n frames.


>> M=moviein(30);
>> M=moviein(30);
>> x=[-2*pi:0.2:2*pi];

1
0.8
0.6

>> for j=1:30


y=sin(x+j*pi/8);
plot(x,y);

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

>> axis off;


>> m=moviein(30);
>> for n=1:30;
xa=-2:0.2:2;
ya=-2:0.2:2;
[x,y]=meshgrid(xa,ya);
z=x.^2-y.^2;
surf(z);
view([-37.5+6*n 30]);
axis([0 25 0 30 -4 4]);
axis off;
m(:,n)=getframe;
end
>> movie(m,60,10)

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

x = cos(t), y = sin(t), z = 1/2 t/

>> 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

Conveniencia de los ficheros m

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

Por defecto, aqu se guardan nuestros archivos


Carpeta de Metodos(..\MATLAB*\work\Mt)

La carpeta bin es fundamental ya que en ella se encuentra el ejecutable de Matlab.


Por defecto, en la carpeta ..\Matlab*\work se guardan todos los archivos que realicemos en nuestras sesiones con Matlab y es la razon que justifica que nosotros colguemos
de esta carpeta la subcarpeta Mt. En ella tendremos todos los ficheros que son necesarios para ejecutar todos los listados de estas practicas y que se caracterizan por tener
en su nombre un guion bajo _. Para obtener los ficheros de la carpeta Mt deberemos
acceder al enlace de nombre Carpeta Mt.
Una vez obtenida la carpeta work\Mt y con el fin de que Matlab sepa donde buscar
los ficheros en ella contenidos debemos, la primera vez, incluir dicha carpeta dentro del
path de Matlab, para ello:
1. Ejecutamos en la ventana de comandos la instruccion editpath
2. En la venta que nos aparece vamos al men
u Path y seleccionamos Add to Path.
3. En la nueva ventanita, seleccionamos la carpeta Mt y salimos dando a OK.

2.

Matlab

83

4. Salimos de la ventana de editor del path, nos preguntara si queremos conservar


los cambios para futuras sesiones y le decimos que s.

2.

Matlab

84

Es importante tener en cuenta lo siguiente:


Todos los ficheros que abramos en este curso ser
an creados en la carpeta
work. Para recalcarlo y recordarlo, por lo menos en las primeras lecciones siempre
que hablemos de un archivo de nombre ficherito lo llamaremos work\ficherito
Con el fin de ordenar nuestros ficheros utilizaremos como criterio a la hora de
asignar nombre a un archivo el siguiente: La primera letra de dicho archivo corresponderan, respectivamente, al captulo del tema correspondiente.
Vamos ahora a realizar el siguiente ejemplo que nos ense
na a editar y ejecutar un fichero
m.
DE UN FICHERO M.
Ejemplo 2.14.3. EDICION
creamos un fichero m

Para ello vamos al men


u File\New\M-file

editamos

Escribimos el contenido del fichero m. En esta practica,


escribimos el listado de la practica anterior

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

Vamos a la ventana de comandos y escribimos1grafo

2.

Matlab

85

2.15.

Definici
on de funciones

2.15.1.

Funciones de MATLAB

Damos la relacion de las funciones escalares mas importantes de Matlab

FUNCION

DESCRIPCION

sin, asin

seno, arcoseno

cos, acos

coseno, arcocoseno

tan, atan

tangente, arcotangente

sinh, asinh

seno y arcoseno hiperbolico

cosh, tanh

coseno y tangente hiperbolico

abs(x), abs(z)

valor absoluto de r R y modulo de z C

angle(z)

argumento de z C

conj(z)

conjungado de z C

real(z), imag(z)

parte real e imaginaria de z C

log, log10

logaritmo neperiano y en base 10

sign(z)

z/|z| si z 6= 0 y 0 si z = 0

sqrt

raz cuadrada

ceil(r)

redondea hacia infinito r R

fix(r)

redondea hacia cero

floor(r)

redondea hacia menos infinito

round(r)

redondea hacia el entero mas proximo

2.

Matlab

86

Y ahora damos la relacion de las funciones vectoriales mas importantes de Matlab

FUNCION

DESCRIPCION

sum(x)

suma de las componentes de x

prod(x)

analogo con el producto

[y,i]=max(x)

y es la maxima componente de x e i el lugar donde ocurre

[y,i]=min(x)

analogo al anterior con el mnimo

[y,i]=sort(x)

y es la ordenacion de las componentes de x de menor a mayor, i es


el vector tal que x(i) = y, i.e. la reordenacion que hay que hacer

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

Ejemplo 2.15.1. Creamos la funcion de nombre 1medcd que calcula la media y la


suma de los cuadrados de los datos dados por las componentes del vector x. para ello
procedemos como sigue:
Primero se edita el fichero m de listado:
function [media, cuadrado]=1medcd(x)
n=length(x);
media=sum(x)/n;
cuadrado=sum(x.^2);
En un segundo paso asignamos el nombre work\1medcd.m al fichero editado (seguimos
con nuestro criterio de recordar que debemos guardar los ficheros creados en la carpeta de Metodos).
Por u
ltimo, en un tercer paso comprobamos que nuestra funcion opera correctamente, para ello vamos a la ventana de comandos y ejecutamos el siguiente listado
>> x=[1 2 3 4 5],
>> [xmed,cd]=1medcd(x)

obteniendo xmed=3 y cd=55.


Ejemplo 2.15.2. Definimos la funcion g(x) = sen(x)e0,4x con el listado
function y=1expn(x)
y=-sin(x).*exp(-0.4.*x);
y con el nombre work\1expn.m. Aprovechamos ahora para calcular su mnimo relativo
en el intervalo [1, 2] lo cual lo conseguimos con el comando fminbnd ejecutando en la
ventana de comandos lo siguiente
>> fminbnd(1expn,1,2)
obteniendose que el mnimo se produce para x = 1,19028.
Si nuestra tolerancia para el error fuera de 108 entonces ejecutaremos
>> fminbnd(ddexpn,1,2,optimset(TolX,1e-8,Display,iter))

2.

Matlab

88

con ello, ademas, conseguiremos que se nos informe del n


umero de iteraciones necesario
y del caracter del mnimo.

Matlab no cuenta con la operacion fmaxbnd analoga a la anterior. Si nosotros quisieramos


hallar el maximo de una funcion h lo que tendramos que hacer es calcular el mnimo
de h.
Veamos ahora como obtener el mnimo local relativo de una funcion de varias variables,
lo cual se hace con la orden

>> fminsearch(funcion,
x ,opciones)
0

que funciona de forma analoga al comando fminbnd; en este caso no se considera el

intervalo de trabajo como argumento de entrada, sino un vector


x0 que indica el punto
en torno del cual deseamos minimizar la funcion.
Ejemplo 2.15.3. Minimizar la funcion f (x, y) = sen(xy) en un entorno del origen de
coordenadas.
>> fminsearch(sin(x(1)*x(2)),[0,0])
ans=
1.0268 -1.5298

Captulo 3

INTERFAZ GRAFICA
DE USUARIO

3.1.

Conceptos Previos

3.1.1.

Iniciando una Interfaz Gr


afica GUI

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

Entre los principales botones tenemos:


a) Push Button:
Este boton genera una accion cuando el usuario hace un clic sobre el (por ejemplo,
un boton OK puede cerrar una caja de dialogo).
Para acceder a las propiedades de cualquier control, hacer clic derecho y seleccionar la opcion Property Inspector.
Las principales propiedades de pusg button son:
String: esta propiedad posee la cadena de caracteres que se mostraran sobre el
boton
Tag: es el nombre que identifica al contador en la subfuncion del archivo m o
callback. Debe ser un nombre descriptivo (por ejemplo closebutton).
Cuando el usuario pulsa el pushbutton, su callback se ejecuta. No devuelve valor
ni mantiene alg
un estado.

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

Elaboracion de una Interfaz Grafica

1. Una vez iniciado Matlab digitamos guide en la linea de comando y presionamos


ENTER.

2. Elegimos la opcion Create New GUI y seleccionamos Blank GUI(Default)


(GUI en Blanco) y presionamos OK

3.

Interfaz Gr
afica de Usuario

97

3. Si todo esta correcto nos aparecera la siguiente ventana

4. Nos ubicamos en la esquina inferior izquierda y hacemos anticlic (clic derecho) y


seleccionamos Property Inspector

3.

Interfaz Gr
afica de Usuario

98

5. Una vez alli, buscamos el simbolo + en la opcion PaperPosition, asi como en


la imagen siguiente

6. Modificamos la opciones de width y heigth con 200.0 y 50.0 respectivamente.

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

9. Arrastramos tratando de formar un rectangulo y soltamos, asi como en la imagen.

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.

12. De nuestro Panel hacemos clic en la opcion Panel

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.

15. Ahora ingresaremos a las propiedades de nuestro texto METODO


DE LA BISEC y nos ubicamos en la propiedad BackgroundColor hacemos clic en + y
CION
modificamos las opciones red, green y blue con los valores 0.855, 0.894, 0.941
respectivamente.

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

22. Ahora seleccionaremos f(x): y a: siguiendo el mis procedimiento.

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 .

26. Regresamos a nuestro Panel Izquierdo y hacemos clic en Listbox y formamos


nuevamente un rectangulo.

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.

29. Asi mismo realineamos nuestros objetos.

3.

Interfaz Gr
afica de Usuario

109

30. Encerramos nuestros objetos en un nuevo Panel al que llamaremos Resultados.

3.

Interfaz Gr
afica de Usuario

110

31. Ingresamos a las propiedades del Panel y configuraremos el BackgroundColor.

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

35. Una vez terminados nuestros objetos, guardamos nuestro proyecto.

36. Le colocamos un nombre en este caso Bisecci


on y una ubicacion, luego hacemos
clic en Guardar

3.

Interfaz Gr
afica de Usuario

113

37. Realizado esto, nos aparecera una nueva ventana de esta forma

38. Hacemos clic en la opcion Show Functions y seleccionamos Biseccion OpeningFcn

3.

Interfaz Gr
afica de Usuario

114

39. En la ubicacion donde guardamos nuestro proyecto debemos agregar ademas la


imagen que sera nuestro fondo en el GUI

40. Una vez en Biseccion OpeningFcn Copiamos el siguiente codigo fuente

3.

Interfaz Gr
afica de Usuario

115

41. Antes de continuar haremos una peque


na prueba a nuestro GUI, haciendo clic en
Run Biseccion.m o presionando F5

42. Donde tendremos el siguiente resultado

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

48. Automaticamente nos llevara al menu de la programacion y copiaremos el siguiente


codigo.

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

51. Configuraremos el Boton Calcular con la siguiente programacion

120

3.

Interfaz Gr
afica de Usuario

121

52. De la misma manera configuraremos el Boton 3 llamado Salir

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

54. Probamos nuestro Boton 3 haciendo clic en Salir, y luego en Si

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

58. Si hemos realizado todo correctamente y ejecutamos nuestra figura, deberemos


tener lo siguiente:

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

60. Una vez graficado, verificamos si nuestra raiz(zero) se encuentra en el intervalo


que hemos elegido. Luego hacemos clic en el Boton Calcular

BIBLIOGRAFIA
[1] Buhmann, M. D. (2004). Radial Basis Functions: Theory and Implementations.
Cambridge University Press. United Kingdom.

[2] Aleman M.; Alvarez


L.; Sanchez J. An
alisis Numerico[en lnea]. [consulta 2012].
[3] Burden R.L; Faires J.D . (2001). Numerical Abalysis. Cengage Learning Latin
America.
[4] Cobos

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

[11] A. Quarteroni, F. Saleri. (2006). C


alculo Cientifico con MATLAB y Octave.
Springer-Verlag, Italia, Milano.
[12] Velasquez J.(2007) Analisis Numerico. Ediciones Uninorte.
[13] Won Y. Yang , Wenwu Cao , Tae-Sang Chung , John Morris(2005) Applied Numerical Methods Using MATLAB. John Wiley Sons.
[14] V. Dominguez. L. Rapun Matlab en cinco lecciones de Numerico[en lnea].
http://www.unavarra.es/personal/victor dominguez/ [consulta 2012]
[15] Carrasco V.(2011) Metodos Numericos Aplicados a la Ingeniera Problemas en
Polymath y Matlab. MACRO
[16] Morales M.(2010) Matlab R2010a Metodos Numericos con Visualizaci
on Grafica.
MACRO
[17] Amancio R., Orbegoso G., Mu
noz G., Villalta R. (2010) Matlab 2010 - Software
para ciencia e ingeniera. MACRO
[18] Moler, C. (2004) Numerical computing with Matlab. SIAM
[19] Pineiro

G.

APUNTES

DE

MATLAB [en

lnea].

http://www.uhu.es/candido.pineiro/docencia/apuntesmatlab.pdf [consulta 2012]


[20] J. Cooper A Matlab Companior for Multivariable Calculus
[21] Chavil M. Sistema experto en Maple Para el an
alisis de Curvas y superficies en
R3
[22] Gonzales M., Sanchez R. Gr
aficas de curvas y superficies usando Matlab