Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0
-
Upload
junior-lino-mera-carrasco -
Category
Documents
-
view
81 -
download
17
description
Transcript of Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0
Presentado por:Mera Carrasco, Junior Lino
Malhaber Montenegro, Miguel Angel
Asesor:Dr. Collantes Santisteban, Luis Jaime
UNPRG
2014
Metodos Numericos para el
Calculo Cientıfico con Matlab
TOMO 0
UNIVERSIDAD NACIONAL
“PEDRO RUIZ GALLO”
FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS
ESCUELA PROFESIONAL DE MATEMATICA
“Metodos Numericos para el CalculoCientıfico 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
Introduccion
La presentacion de estos tomos tiene su origen en los Seminarios denominados FUN-
DAMENTOS DE ECUACIONES NO LINEALES, INTERPOLACION, DIFEREN-
CIACION E INTEGRACION NUMERICA PARA EL CALCULO CIENTIFICO y
CALCULO CIENTIFICO DE ECUACIONES NO LINEALES, INTERPOLACION,
DIFERENCIACION E INTEGRACION NUMERICA 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 Cientıfico.
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 ingenierıa, ciencias medicas, ciencias economicas entre otras para ide-
alizar sus problemas y desarrollar un modelo matematico adecuado en algunos casos es
difıcil 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 Cientıfico 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 Cientıfico con Matlab, explicara de manera sencilla
y con ejemplos el uso y la programacion de Interfaces Graficas de Usuario (GUI) ası co-
mo el clasico uso de los archivos “.m” y por supuesto la solucion “manual”.
Este TOMO denominado Conceptos Previos esta dividido en tres capıtulos:
En el primero revisaremos la teorıa 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 capıtulo 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 capıtulo 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, difıcil tarda unos segundos. Imposible, un par de min-
utos. ”Dr. Rodney McKay - Stargate Atlantis
INDICE GENERAL
1. Preliminares 7
1.1. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.1. Matrices Cuadradas: Tipos especiales . . . . . . . . . . . . . . . . 8
1.1.2. Operaciones con matrices . . . . . . . . . . . . . . . . . . . . . . 9
1.1.3. Determinante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
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 numeros reales . . . . . . . . . . . . . . . . . . . . . . . 37
2.5. Operaciones con numeros complejos . . . . . . . . . . . . . . . . . . . . . 38
2.6. Operacion simbolica con numeros . . . . . . . . . . . . . . . . . . . . . . 38
2.7. Variables numericas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.8. Variables simbolicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.9. Operaciones con infinitos . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.10. Visualizacion de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5
6
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 Grafica de Usuario 89
3.1. Conceptos Previos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
Capıtulo 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 subındice designa el numero de fila y el segundo, el numero 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 subındice
se puede eliminar:
b = [b1 b2 b3 . . . bm]
1. Preliminares 8
y cuando la dimension de columnas es uno, m = 1, se les llama vectores columna y el
segundo subındice se puede eliminar:
c =
c1
c2...
cn
Al conjunto de elementos aii (subındice 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 numero de ecuaciones (que cor-
responde al numero de filas) y el numero de incognitas (que corresponde al numero de
columnas) tienen que ser iguales para que exista una posible solucion unica.
Definicion 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 = BTAT
Propiedad 3. (A+B)T = AT +BT
Propiedad 4. det(A)−1 = det(A−1) Suponiendo que A−1 existe.
1.1.1. Matrices Cuadradas: Tipos especiales
Una matriz simetrica 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 9
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 tamanos compatibles, concretamente,
si A es n × p y B es p ×m, para algun entero positivo p. En tal caso C = AB es una
matriz n×m cuyos elemntos son
cij =
p∑
k=1
aikbkj , para i = 1, . . . , n, j = 1, . . . , m
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
Aun 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 A−1, llamada
la inversa de A: AA−1 = A−1A = I
Unos de los requisitos para que exista la inversa de una matriz es que sea no singular.
Esta caracterıstica 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
Definicion 1.1.2. El determinante viene a ser una funcion que aplicada a una matriz
cuadrada da un unico valor numerico
| | : Mn×n → 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.
2. Si A =
a b
c d
⇒ det(A) = |A| = ad− bc .
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+jMij.
5. El determinante de una matriz cuadrada se define mediante la siguiente formula
recursiva (regla de Laplace):
det(A) =
a11 si n = 1n∑
j=1
∆ijaij , para n > 1, ∀i = 1, . . . , n(1.3)
donde ∆ij = (−1)i+jMij
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 multiplica por k, es decir:
det(B) =
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
a11 a12 . . . a1n
a21 a22 . . . a2n...
......
kai1 kai2 . . . kain...
......
an1 an2 . . . ann
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
= k
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
∣
a11 a12 . . . a1n
a21 a22 . . . a2n...
......
ai1 ai2 . . . ain...
......
an1 an2 . . . 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 determi-
nante 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 multiplo constante de otra fila (columna),
1. Preliminares 11
entonces det(A) = 0.
Propiedad 7. Si un multiplo 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 A−1, calculada mediante cofactores: A−1 =
adj(A)|A|
, donde adj(A) = |cofac(A)|T .De esto podemos decir que la inversa de A existe si y solo si el determinante de A es
no nulo . La ultima condicion se satisface si y solo si los vectores columnas de A son
linealmente independientes.
1. Preliminares 12
1.2. Repaso de Calculo
Definicion 1.2.1. Una ecuacion lineal con n variables x1, x2, . . . , xn es una igualdad
matematica que puede escribirse de la forma: a1x1 + a2x2 + . . .+ anxn = b, donde ai se
conocen como coeficientes de la ecuacion y a b el termino constante. Si b = 0 se llama
ecuacion homogenea.
Definicion 1.2.2. Si f(α) = 0, α se llama cero de f o raız de la ecuacion f(x) = 0. Un
cero es simple si f ′(α) 6= 0, y multiple en caso contrario.
Todos los metodos numericos de resolucion de ecuaciones presentan dificultades cuando
la ecuacion tiene raıces multiples ya que todos ellos se basan en los cambios de signo de
la funcion y estos son difıcilmente detectables en un entorno de una raız multiple.
Para funciones que son polinomios de grado n con coeficientes reales, es decir, tiene la
forma
pn(x) = a0 + a1x+ a2x2 + . . .+ anx
n =
n∑
k=0
akxk, ak ∈ R, an 6= 0.
Teorema 1.2.1. (Fundamental del Algebra) Cualquier ecuacion algebraica (Poli-
nomio) 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
n = 2 tiene dos ceros α± = (−a1 ±√
a21 − 4a0a2)/(2a2), ¿Se podra encontrar solucion
por radicales para cualquier grado del polinomio ?.
Teorema 1.2.2. ( de Abel) ∀pn, n ≥ 5, aplicando unicamente un numero finito
operaciones a los coeficientes del polinomio, no existe una formula explıcita 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∑
k=0
akxk. (1.5)
Teorema 1.2.3. (Algoritmo de la division) 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 ecuacion polinomial , tiene a lo mas n raıces
de α. Si α1 es una raiz : pn(x) = (x − α1)pn−1(x), si α2 es una raiz : pn−1(x) =
(x−α2)pn−2(x)...p1(x) = (x−αn) entonces pn(x) = (x−α1)(x−α2)(x−α3) . . . (x−αn).
Definicion 1.2.3. Una funcion f definida en un conjunto X de numeros reales tiene
limite L en x0, denotado por lımx→x0
f(x) = L. Si dado cualquier numero real ǫ > 0, existe
un numero real δ > 0 talque |f(x)− L| < ǫ, siempre que x ∈ X y 0 < |x− x0| < δ.
Definicion 1.2.4. Sea f una funcion definida en un conjunto X de numeros reales y
x0 ∈ X . Entonces f es continua en x0 si lımx→x0
f(x) = f(x0).
La funcion f es continua en el conjunto X si es continua en cada numero 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 numeros reales o complejos se define de manera similar.
Definicion 1.2.5. Sea {xn}∞n=1 una sucesion infinita de numeros reales o complejos. La
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 lımn→∞ xn = x
significa que la sucesion {xn}∞n=1 converge a x.
Teorema 1.2.6. Si f es una funcion definida en un conjunto X de numeros reales y
x0 ∈ X entonces las siguientes afirmaciones son equivalentes:
a. f es continua en x0;
b. Si {xn}∞n=1 es cualquier sucesion en X que converge a x0, entonces lımn→∞
f(xn) = f(x0).
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
Definicion 1.2.6. Sea f una funcion definida en un in-
tervalo abierto que contiene a x0. La funcion f es deriv-
able en x0 si f ′(x0) = lımx→x0
f(x)−f(x0)x−x0
existe. El numero
f ′(x0) es la derivada de f en x0. Una funcion que tiene
derivadas en cada numero de un conjunto X es derivable
en X.
y=f(x )
x
f(x ) (x ,f(x ))
f'(x )
0
0
0 0 0
0
Figura 1.1: la derivada
Los siguientes teoremas son fundamentales en la deduccion de metodos para la esti-
macion 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 biseccion)
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
numero c en (a, b) tal que f ′(c) = 0. (ver
figura 2)
b
y=f(x)
ca
f(a)=f(b)
f'(c)=0
Y
X
Figura 1.2: Teorema de Rolle
Teorema 1.2.10. (Teorema del Valor
medio) Si f ∈ C[a, b] y f es derivable en
(a, b). Entonces existe un numero c en (a, b)
tal que f ′(c) = f(b)−f(a)b−a
. (ver figura 3)
pendiente f'(c)
Rectas paralelas
y=f(x)
a bc
Figura 1.3: Teorema del valor medio
El otro concepto basico del calculo que usaremos ampliamente es la Integral de Rieman.
Definicion 1.2.7. La integral de Riemann de la funcion f en el intervalo [a, b] es el
siguiente lımite, si este existe:b∫
a
f(x)dx = lımmax ∆xi
n∑
i=1
f(zi)∆xp, donde los numeros
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) ≤f(x) ≤ f(c2) para toda x ∈ [a, b]. Ademas,
si f es derivable en (a, b), entonces los
numeros c1 y c2 aparecen en los extremos de
[a, b], o bien donde se anula f ′. (ver figura
4)
y=f(x)
ca bc1 2
Y
X
Figura 1.4: Teorema de los valores ex-
tremos
x0, x1, . . . , xn, satisfacen a = x0 ≤ x1 ≤ . . . ≤ xn = b, y ∆xi = xi − xi−1 para toda
i = 1, 2, . . . , n y zi se elige de manera arbitraria en el intervalo [xi−1, 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,
b∫
a
f(x)dx = lımn→∞
b− a
n
n∑
i=1
f(xi).
donde los numeros que aparecen en la figura 5. como xi son xi = a+ i(b− a)/n.
a= x x x x x x b=x X
Y
y=f(x)
0 1 2 i−1 i n−1 n
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) Supon-
ga 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 numero c en (a, b) tal que
b∫
a
f(x)g(x)dx = f(c)
∫ b
a
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
f(c) =1
b− a
b∫
a
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
ultimo, a f (n−1)
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 numeros distintos x0, . . . , xn en
[a, b], entonces existe un numero c en (a, b) tal que fn(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
numero entre f(a) y f(b), entonces existe un numero c en (a, b) tal que f(c) = L
En la siguiente seccion describiremos los polinomios de Taylor. Estos se usan amplia-
mente en el analisis numerico.
1.3. Series de Taylor
La Serie de Taylor (Polinomio de Taylor) es el medio mas importante que se emplea
para obtener modelos numericos y analizar los errores de truncamientto.
Teorema 1.3.1. (Teorema de Taylor) Supongamos que f ∈ Cn[a, b], que f (n+1)
existe en [a, b] y x0 ∈ [a, b]. Para cada x ∈ [a, b], existe un numero ξ(x) entre x0 y x tal
1. Preliminares 17
que f(x) = Pn(x) +Rn(x), donde:
Pn(x) = f(x0) + f ′(x0)(x− x0) +f ′′(x0)
2!(x− x0)
2 + . . .+ f(n)(x0)n!
(x− x0)n =
=n∑
k=0
f(k)(x0)k!
(x− x0)k y Rn(x) =
fn+1(ξ(x))(n+1)!
(x− x0)n+1
En este caso, Pn(x) es el n−esimo polinomio de Taylor para f respecto a x0 y Rn(x) se
llama el termino 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 Teorıa 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 implıcito 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 ∈ Cn(R), el teorema de Taylor se puede aplicar a cualquier n ≥ 0. Ademas,
f ′(x) = − sen x, f ′′(x) = − cosx, f ′′′(x) = sen x y f (4)(x) = cosx, de modo que f(0) = 1,
f ′(0) = 0, f ′′(0) = −1, f ′′′(0) = 0.
(a) Para n = 2 y x0 = 0, tenemos cosx = 1 − 12x2 + 1
6x3 sen ξ(x), donde ξ(x) es un
numero 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− 12(0,01)2 + 1
6(0,01)3 sen ξ(x) = 0,99995+ 0,16× 10−6 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× 10−6, 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× 10−6 ≤ cos 0,01 ≤ 0,99995 + 1.6× 10−6 < 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, podrıamos usar el hecho de que
| sen ξ(x)| ≤ 0,01 en la formula para el error, lo que produce la cota 0,16× 10−6
(b) Como f ′′′(0) = 0, el tecer polinomio de Taylor con termino de residuo en torno a
x0 = 0 es cosx = 1− 12x2 + 1
24x4 cos ξ(x).
donde 0 < ξ(x) < 0,01. El polinomio de aproximacion es el mismo, y la aproxi-
macion aun es 0.99995, pero ahora tenemos una mucha mejor garantia de precision
puesto que | cos ξ(x)| ≤ 1 para toda x, tenemos | 124x4 cos ξ(x)| ≤ 1
24(0,01)4(1) ≃
4,2× 10−10.
De modo que | cos 0,01−0,99995| ≤ 4,2×10−10, y 0,99994999958 = 0,9995−4,2×10−10 ≤ cos 0,01 ≤ 0,99995 + 4,2× 10−10 = 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 aprox-
imacion. En este caso, el tercer polinomio de taylor fue mucho mas informativo
que el segundo, aunque ambos dieron la misma aproximacion.
Definicion 1.3.1. Una funcion f : [a, b] → R, definida en un intervalo abierto [a, b], se
llama analıtica 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 19
1.4. Analisis de error
A lo largo del tiempo, los metodos numericos han sido desarrollados con el objeto de re-
solver problemas matematicos cuya solucion es difıcil 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 difıcil si no imposible de alcan-
zarse.
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 for-
malmente la contabilidad de un valor numerico
Definicion 1.4.1. El numero 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 numeros especıficos, no
se puede expresar exactamente con un numero finitos de digitos. Debido a que las
computadoras personales solo representan aproximadamente diez cifras significativas
(comunmente varian entre 7 y 14) tales numeros jamas se podran representar exac-
tamente. 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 impor-
tancia en la identificacion de exactitud y precision.
1.4.1. Exactitud y precision
Los errores asociados con los calculos se pueden caracterizar observando su precision y
exactitud.
La exactitud se refiere a la aproximacion de un numero 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 predic-
ciones.
Los errores numericos se generan con el uso de aproximaciones para representar las op-
eraciones y cantidades matematicas.
Para los tipos de errores, la relacion entre el resultado exacto o verdadero y el aproxi-
mado 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 centımetro es mucho mas sig-
nificativo 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 nor-
malizar 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.d1d2 . . . dkdk+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.d1d2 . . . 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 numero de la forma y′ = 0.δ1δ2 . . . δk × 10n.
Si dk+1 ≤ S, sumamos 1 a dk para obtener fl(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.
Definicion 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, |p−p∗
p|. En el caso p = 0 solo se utiliza el error absoluto.
Consideremos los errores absolutos y relativos al representar p por p∗ en el ejemplo
siguiente.
1. Preliminares 22
Ejemplo 1.4.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× 10−1
b. Si p = 0,3000 × 10−3 y p∗ = 0,3100 × 10−3, el error absoluto es 0,1 × 10−4 y el
error relativo es 0,3333× 10−1.
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× 10−1
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 tamano del
valor.
La siguiente definicion utiliza el error relativo como una medida de las cifras significa-
tivas de precision para una aproximacion.
Definicion 1.4.3. El numero p∗ aproxima a p con t cifras significativas si t es el mayor
entero no negativo para el cual
|p− p∗||p| < 5× 10−t
Ejemplo 1.4.3. 1.p = 3,141592, p∗ = 3,14
|p− p∗||p| ≈ 0,000507 <
10−2
2
Luego p∗ aproxima a p con 3 cifras significativas
2. p = 106, p∗ = 999996,
|p− p∗||p| ≈ 0,000004 <
10−5
2
Luego p∗ aproxima a p con 6 cifras significativas
Definicion 1.4.4. Si t es el mayor entero para el cual |p − p∗| < 10−t
2se 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 raıces de ax2 + bx + c = 0,
cuando a 6= 0, son
x1 =−b+
√b2 − 4ac
2ay x2 =
−b−√√
b2 − 4ac
2a
Con aritmetica de redondeo a cuatro cifras, considere esta formula aplicada a la ecuacion
x2 + 62,10x+ 1 = 0, cuyas raıces son aproximadamente
x1 = −0,01610723 y x2 = −62,08390. tenemos:
fl(x1) =−62,10 + 62,06
2,000=
−0,04000
2,000= −0,02000.
una mala aproximacion a x1 = −0,01611, con el error relativo grande
| − 0,01611 + 0,02000|−0,01611
= 2,4× 10−1.
Por otro lado, el calculo de x2 es: fl(x2) =−62,10−62,06
2,000= −124,2
2,000= −62,10
Tiene el error relativo pequeno |−62,08+62,10||−62,08|
≈ 3,2× 10−4.
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.
x1 =−b+
√b2 − 4ac
2a(−b−
√b2 − 4ac
−b−√b2 − 4ac
) =b2 − (b2 − 4ac)
2a(−b−√b2 − 4ac)
,
lo que se simplifica como una formula cuadratica alternativa
x1 =−2c
b+√b2 − 4ac
Al usarlo tenemos: fl(x1) = −2,00062,10+62,06
= −2,000124,2
= −0,01610, con el pequeno error
relativo 6,2× 10−4.
1.5. 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) ≤ TOL1 (1.6)
Criterio 2:
Abs(f(x)) ≤ TOL2 (1.7)
Si se cumple algunos de estos criterios se habra encontrado la solucion, de lo contrario,
se continua iterando de acuerdo al metodo seleccionado.
Capıtulo 2
MATLAB
2.1. ¿Que es Matlab?
MATLABr es un lenguaje de alto nivel y un entorno interactivo para el calculo numeri-
co, 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 JavaTM
MATLAB se puede utilizar en una gran variedad de aplicaciones, tales como proce-
samiento de senales y comunicaciones, procesamiento de imagen y vıdeo, sistemas de
control, pruebas y medidas, finanzas computacionales y biologıa computacional. Mas de
un millon de ingenieros y cientıficos de la industria y la educacion utilizan MATLAB,
el lenguaje del calculo tecnico.
2. Matlab 26
En el Calculo numerico
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 cientıficas y de ingenierıa habituales. Las
funciones matematicas principales utilizan librerıas 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 espe-
cializadas tales como estadıstica, optimizacion, analisis de senales y aprendizaje au-
tomatico.
2. Matlab 27
2.2. Requisitos e Instalacion 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 informa-
cion 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 seleccionare-
mos I have the File Installation Key for my license
2. Matlab 30
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.
2. Matlab 31
7. Seleccionamos Typical y luego presionamos Next.
8. Dejamos por defecto la opcion de la ubicacion y presionamos Next.
2. Matlab 32
9. Presionamos Install.
10. Una vez alli, solo tenemos que esperar a que instalen los componentes.
2. Matlab 33
11. Una vez todo este correcto presionamos Next.
12. Dejamos activa la opcion Active MATLAB y presionamos Next.
2. Matlab 34
13. Seleccionamos la opcion Activate manually without the Internet y presion-
amos 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 36
17. Si todo esta correcto presionaremos Finish.
2. Matlab 37
2.3. 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 numeros reales
OPERACION EXPRESION
Suma y resta >>1+2
>> 1241-870
Multiplicacion >>25.64*6
Divicion >> 20/4
Potenciacion >> 2.5^6
Maximo comun divisor >> gcd(124,48)
Mınimo comun multiplo >> lcm(20,5)
Resto de una division entera >>rem(7,3)
2. Matlab 38
2.5. Operaciones con numeros 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. Operacion simbolica con numeros
OPERACION EXPRESION
Factorizacion >> factor(2012)
Suma simbolica >> sym(3+4*i)+5.34-2*i
Resta simbolica >> sym(340/56)-5/2
Multiplicacion simbolica >> sym(1+2*i)*1/5
Division simbolica >> sym(3647)/56
Potenciacion simbolica >> sym(i)^2
Observacion 2.6.1. .
El comando sym convierte variables numericas en simbolicas.
Hay que tener mucha precaucion a la hora de mezclar numeros o variables numeri-
cas con simbolicas. La mezcla no suele funcionar muy bien.
2. Matlab 39
2.7. Variables numericas
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 simbolicas
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. Operaciones con infinitos
1/0 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 40
2.10. Visualizacion 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 raız 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 numero pi con 19 cifras decimales
Observacion 2.10.1. Matlab distingue entre mayusculas 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 numericos
Numeros enteros
Tipo de Dato Rango de valores Funcion de conversion
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 bytes class Attributes
x 1x1 2 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
Numeros decimales
Matlab representa numeros decimales en formato simple y doble precision. Por defecto,
es de doble precision, pero se puede convertir cualquier numero a simple con una uncion
de conversion.
a) Doble precision.
Valores maximos y mınimos de doble precision
Las funciones realmax y realmin retornan los valores maximos y mınimos 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
Creacion de datos de doble precision
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 Bytes Class Attributes
x 1x1 8 double
para verificar que un tipo de dato es decimal (o punto flotante) se hace uso de la
funcion isfloat.
>> isfloat(x)
ans =
1
Conversion a doble precision
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 double
x= -961258
>> whos x
Name Size Bytes Class Attributes
x 1x1 8 bouble
2. Matlab 44
b) Simple precision
Valores maximos y mınimos de doble precision
Las funciones realmax y realmin cuando se llaman con el argumento ’single’ retor-
nan los valores m’aximos y mınimos 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 numeros mas grandes que realmax(’single’) o menores que realmin(’single’) se
les asigna valores de infinito positivo (inf) y negativo (-inf) respectivamente.
Creacion de datos de simple precision
Como el tipo de dato numerico por defecto de Matlab es doble precision, entonces
se requiere una funcion de conversion single para crear un numero de simple pre-
cision.
>> x= single(13.04); % crea un tipo de dato decimal single
>> whos x
Name size Bytes Class Attributes
x 1x1 4 single
>> isfloat(x)
ans= 1
2. Matlab 45
Conversion a simple precision
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 Bytes Class Attributes
x 1x1 4 single
Numeros complejos
Los numeros complejos consisten de 2 partes separadas: una parte real y otra parte
imaginaria. La base imaginaria es la raız cuadrada de -1. Este es representado en MAT-
LAB por cualquiera de las 2 letras i o j.
Creacion de Numeros Complejos
Existen 2 formas para la creacion de un numero 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
6 12
>> y= [13 7; 2 8]
2. Matlab 46
y=
13 7
2 8
>> 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
6 12
>> zi= imag(z)
zi=
13 7
2 8
Valores especiales
Matlab usa los valores especiales inf, -inf y NaN para representar valores que son infini-
tamente positivos, negtaivos y aquellos que no son un numero 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 numeros relaes ni complejos con un valor es-
pecial NaN (Not a Number). Expresiones como 0/0 y Inf/Inf dan como resultado NaN,
por ejemplo
pi Numero π = 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 numerico
Para identificar el tipo de dato de una variable x se puede usar cualquiera de los sigu-
ientes 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 numero real o complejo
isnan(x) Determina si x no es un numero (NAN)
isinf(x) Determina si x es infinito
isfinite(x) Determina si x es finito
Formato de valores numericas
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. Anade 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. Anade la e.
long g El mas conveniente de los long.
rat En forma de fraccıon.
hex Hexadecimal (representacion en base 16)
bank Establece dos cifras decimales.
compact Suprime el exceso de lıneas.
loose Anade mas lıneas 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 numeros 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 0.025786543
>> 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
2. Matlab 50
2.11.2. 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.
Creacion de una cadena de caracteres (Arreglo de caracteres de 1 dimension)
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 Class Attributes
curso 1x22 44 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 carac-
terres.
>> class(curso)
ans =
char
>> ischar(curso)
ans =
1
2. Matlab 51
La funcion de concatenacion atrcat o el operador de concatenacion MATLAB[], per-
miten 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.
Creacion 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 tamanos, 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’
Comparacion de cadenas
Se puede compara cadenas utilizando funciones u operadores.
a) Comparacion con funciones
FUNCION DESCRIPCION
strcmp Determina si 2 cadenas son identicas. Reconoce mayusculas y minusculas.
strncmp Determina si los primeros n caracteres de 2 cadenas
son identicos. Reconoce mayusc. y minusc.
strcmpi Determina si 2 cadenas son identicas. No diferencia entre
mayusculas y minusculas.
strncmpi Dermina si los primeros n caracteres de 2 cadenas son
identicos. No diferencia entre mayusculas y minusculas.
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= 1 0 0 1 1 1
Comandos que identifican a un caracter
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)
Comparacion 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.
Evaluacion de cadenas: Funcion eval
eval: Evalua 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 2 5/3 3/2 7/5
>> cadena1=’sin(x*(pi/2))’;
2. Matlab 55
>> z=eval(cadena1)
z =
1 0.0000 -1 -0.0000 1
>> whos x y cadena1
Name Size Bytes Class Attributes
cadena1 1x13 26 char
x 1x5 40 double
y 1x5 40 double
2.11.3. Conversion de valores numericos 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 especıfico
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
Conversion 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 especıfica,
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. Analisis 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 numeros con una canti-
dad infinita de cifras. En este mundo define a√3 como el unico numero positivo tal
que al multiplicarse por el mismo produce el entero 3. Sin embargo, en el mundo de las
computadoras, cada numero representable tiene solo un numero finito de cifras significa
que solo los numeros 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 numericos. 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
numeros reales, pues la aritmetica de la maquina solo utiliza numeros con una cantidad
2. Matlab 57
finita de cifras, de modo que los calculos se realizan unicamente con representaciones
aproximadas de los numeros verdaderos.
2.12.1. Punto flotante
Un punto flotante es un numero que es expresado mediante un exponente y una mantisa.
Por ejemplo el numero 10.75 puede ser expresado como.
mantisa exponente
10,75× 100
1,075× 101
En general, un numero en punto flotante puede ser expresado como ±d0.d1d2d3 . . . dk ×bexpo donde : d0.d1d2d3 . . . dk =
k∑
i=1
diβ−i, di ∈ N, 0 ≤ di < β, se conoce como la
mantisa. (La precision depende de k y de β)
¿ Que se necesita para representar un numero en punto flotante?
El signo del numero, el signo del exponente, digitos para el exponente , digitos para la
amntisa.
Dado que un numero en punto flotante puede expresarse de distintas formas que son
equivalentes, es necesario establecer una unica representacion. Es por ello que se trabaja
con numeros normalizados. Decimos que un numero esta normalizado si el digito a la
izquierda del punto o coma esta entre 0 y la base. En particular, decimos que un numero
binario esta normalizado si el digito a la izquierda del punto es igual a 1.
1,00× 10−1 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 numeros de maquina para representar a todos los numeros
reales. Para examinar estos problemas, supondremos , para mayor claridad, que los
numeros de maquina se representan en la forma de punto flotante decimal normalizada
±0.d1d2 . . . dk × 10n, 0 ≤ di ≤ 9.
2. Matlab 58
para cada i = 1, 2, . . . , k. Los numeros de esta forma se llaman numeros de maquina
decimales con k dıgitos.
Cualquier numero positivo real dentro del intervalo numerico de la maquina se puede
normalizar como y = 0.d1d2 . . . dkdk+1dk+2 . . .× 10n
La forma de punto flotante de y, que denotamos fl(y), se obtiene terminando la mantisa
de y en k cifras decimales. Hay dos formas de realizar esto.
Metodo 1: llamado truncamiento, consiste simplemente en cortar los digitos dk+1dk+2 . . .
para obtener: fl(y) = 0.d1d2 . . . dk × 10n.
Tambien corresponden a procedimientos infinitos (desarrollados en Series, etc.) como en
el caso del termino del residuo del teorema de Taylor.
Metodo 2: llamado redondeo, suma S × 10n−(k+1) a y y luego trunca el resultado
para obtener un numero de la forma fl(y) = 0.δ1δ2 . . . δk × 10n.
Si dk+1 ≤ S, sumamos 1 a dk para obtener fl(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 numero 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 numero pi (π) tiene un desarrollo decimal infinito de la forma π =
3,14159265 . . .. Escrito en forma decimal normalizada, se tiene: π = 0,314159265 . . .×101
Metodo 1: La forma de punto flotante de cinco digitos de n utilizando truncamiento
es:fl(π) = 0,31415 · 101 = 3,1415
Metodo 2: Dado que el sexto digito de la expansion decimal de π es 9, la forma de π
con redondeo a cinco digitos es:
fl(π) = (0,31415 + 0,00001) · 101 = 3,1416 dk+1 ≤ 5
En la siguiente definicion se describen dos metodos para medir errores de aproximacion.
Definicion 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
evaluado, es decir, |p−p∗
p|. En el caso p = 0 solo se utiliza el error absoluto.
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× 10−1
b. Si p = 0,3000 × 10−3 y p∗ = 0,3100 × 10−3, el error absoluto es 0,1 × 10−4 y el
error relativo es 0,3333× 10−1.
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× 10−1
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 tamano del
valor.
La siguiente definicion utiliza el error relativo como una medida de las cifras significa-
tivas de precision para una aproximacion.
Definicion 2.12.2. El numero p∗ aproxima a p con t cifras significativas si t es el mayor
entero no negativo para el cual
|p− p∗||p| < 5× 10−t
Ejemplo 2.12.3. 1.p = 3,141592, p∗ = 3,14
|p− p∗||p| ≈ 0,000507 <
10−2
2
Luego p∗ aproxima a p con 3 cifras significativas
2. p = 106, p∗ = 999996,
|p− p∗||p| ≈ 0,000004 <
10−5
2
Luego p∗ aproxima a p con 6 cifras significativas
2. Matlab 60
Definicion 2.12.3. Si t es el mayor entero para el cual |p − p∗| < 10−t
2se dice que p∗
aproxima a p con t decimales
De regreso a la representacion de los numeros en la maquina, vemos que fl(y) como
punto flotante para el numero y tiene el error relativo |y−fl(y)y
|.Si se empleam K cifras decimales y el truncamiento para la representacion en la maquina
de:
y = 0.d1d2 . . . dkdk+1 . . .× 10n
entonces |y−fl(y)y
| = |0.d1d2...dkdk+1...×10n−0.d1d2...dk×10n
0.d1d2...×10n| = |0.dk+1dk+2...×10n−1
0.d1d2...×10n| = |0.dk+1dk+2...
0.d1d2...|×
10−k
Como d1 6= 0, el valor mınimo del denominador es 0.1. El numerador esta acotado su-
periormente por 1. entonces:
|y−fl(y)y
| ≤ 10,1
· 10−k = 10−k+1 (Cota de error relativo por truncamiento)
De manera similar, una Cota para el error relativo cuando se usa aritmeetica con re-
dondeo a K dıgitos es 0,5× 10−k+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 raıces de ax2 + bx + c = 0,
cuando a 6= 0, son
x1 =−b+
√b2 − 4ac
2ay x2 =
−b−√√
b2 − 4ac
2a
Con aritmetica de redondeo a cuatro cifras, considere esta formula aplicada a la ecuacion
x2 + 62,10x+ 1 = 0, cuyas raıces son aproximadamente
x1 = −0,01610723 y x2 = −62,08390. tenemos:
fl(x1) =−62,10 + 62,06
2,000=
−0,04000
2,000= −0,02000.
una mala aproximacion a x1 = −0,01611, con el error relativo grande
| − 0,01611 + 0,02000|−0,01611
= 2,4× 10−1.
Por otro lado, el calculo de x2 es: fl(x2) =−62,10−62,06
2,000= −124,2
2,000= −62,10
Tiene el error relativo pequeno |−62,08+62,10||−62,08|
≈ 3,2× 10−4.
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.
x1 =−b+
√b2 − 4ac
2a(−b−
√b2 − 4ac
−b−√b2 − 4ac
) =b2 − (b2 − 4ac)
2a(−b−√b2 − 4ac)
,
lo que se simplifica como una formula cuadratica alternativa
x1 =−2c
b+√b2 − 4ac
Al usarlo tenemos: fl(x1) = −2,00062,10+62,06
= −2,000124,2
= −0,01610, con el pequeno error
relativo 6,2× 10−4.
2.13. Matrices y vectores
2.13.1. Introduccion y operaciones de matices numericas
Comenzamos limpiando nuestra area de trabajo con : clear, clc, echo, off.
A = [1 2 3; 4 0 3; 9 3 2] A =
1 2 3
4 0 3
9 3 2
es una matriz 3× 3
Podemos reemplazar un numero cualquiera por un elemento aij de la matriz como:
A(2, 1) = −3 Ahora tenemos A =
1 2 3
−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
C’ 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 63
2.13.2. Submatrices numericas
h=[2,1], k=[2,3] Dos vectores
A(h,k) Submatriz obtenida deAquedandonos con las filas dadas
por h y las columnas dadas por k
A(2,1:2) Vector que tiene las dos primeras componentes de la
segunda fila deA
A(2,:), C(:,1) Segunda fila de A y primera columna de C
[A;b] Anadiendo la filaba la matriz A
[A,b.’] Anadiendo la columnabt a la matrizA
2.13.3. Introduccion y operaciones de matrices simbolicas
A=sym(’[1,3;t,s]’) A =
1 3
t s
es una matriz simbolica
b=sym(’[1 2]’) 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] Anadiendo la fila b a la matriz A
2. Matlab 64
2.13.4. 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 simbolica
numeric(A) Convierte una matriz simbolica en numerica
det(A) Determinante de la matriz A
determ(A) Determinante simbolico
inv(A) Inversa de la matriz A
inverse(A) Inversa simbolica
rank(A) Rango de A. Es tambien una orden simbolica
size(A) Orden o tamano de la matriz A
length(A) Maximo entre el numero de filas y columnas
2. Matlab 65
FUNCION DESCRIPCION
[V,D]=eig(A) Vectores propios y valores propios. V −1AV = D
[V,D]=eigensys(A) Vectores y valores propios, version simbolica
trace(A) Traza de A
poly(A) Coeficientes del polinomio caracterıstico en orden
decreciente que es como los trata normalmente
charpoly(A) Version simbolica de la anterior
orth(A) Base ortogonal de la imagen de A
null(A) Base del nucleo 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 −1AV = 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 lınea
recta. Matlab, por omision, une los puntos x, y mediante un trazo recto. Si nuestra
orden hubiera sido plot(x,y,’+r’) entonces habrıa pintado nuestros puntos x, y como
cruces rojas. La relacion de posibilidades de colores y marcas es la siguiente
OPCION MARCA
lınea continua
- lınea continua
-- lınea de guiones
. lınea punteada
-. lınea de guiones y puntos
+ cruces
* asteriscos
. puntos
o cırculos
x equis
OPCION COLOR
r rojo
y amarillo
m magenta
c turquesa
g verde
b azul
w blanco
k negro
Ejemplo 2.14.1. n=1:10
a=2.^n
plot(a,’ob’)
% Para ver mas 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 xe−0,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(’Grafica primera’) Tıtulo de la grafica
grid situa una rejilla en la grafica
text(4,-0.1,’Mınimo’) Situa un comentario en el punto (4,-0.1)
Graficas 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:
>> x=-4:0.2:4;
>> y=abs(sin(x).^3-x);
>> plot(x,y,’o’)
−4 −3 −2 −1 0 1 2 3 40
0.5
1
1.5
2
2.5
3
3.5
4
4.5
>> t=0:0.1:2*pi;
>> y=cos(3*t);
>> polar(t,y)
0.2
0.4
0.6
0.8
1
30
210
60
240
90
270
120
300
150
330
180 0
2. Matlab 69
Matlab dispone de un grupo de comandos para representar formas geometricas espe-
ciales 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 tıtulo
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:
>> fplot(’cos(x)’,[-3,3]);
−3 −2 −1 0 1 2 3−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
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
>> ezplot(’log(x)-x+2’,[1,4]);
1 1.5 2 2.5 3 3.5 4
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
x
log(x)−x+2
amos el comando LINSPACE de la manera siguiente. linspace(0,2*pi,n); donde las dos
primeras coordenadas nos indican el intervalo y la ultima 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 numero grande para dividir
el intervalo. Ubicando y uniendo los puntos en el plano cartesiano, obtenemos:
>>t=linspace(0,2*pi,9);
>>plot(cos(t),sin(t))
−1 −0.5 0 0.5 1−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
>>t=linspace(0,2*pi,3000);
>>plot(cos(t),sin(t))
−1 −0.5 0 0.5 1−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
¿que se deduce de ello?, ¿podemos explicar como Matlab realiza los ploteos de las fun-
ciones?
Para facilitar el calculo de curvatura y radio de curvatura, haremos uso de la sigu-
iente proposicion:
2. Matlab 71
Proposicion 2.14.1. Si f : I → R una funcion diferenciable entonces su grafica es una
curva regular y su curvatura y radio de curvatura estan determinados por:
k(t) =f ′′(t)
(1 + f ′(t)2)32
; ρ(t) =(1 + f ′(t)2)
32
f ′′(t)
Funcion Cuadratica Su ecuacion parametrica de dicha curva es α(t) = (t, t2), ∀t ∈[a, b]
luego graficaremos su traza.
>> t=linspace(-5,5,3000);
% divide el intervalo [-2,3] en 3000 partes.
>> y=t^2;
%imagenes de las componentes de x
>>plot(t,y), grid on,
>> hold on;
>> x=-4*t.^3;
>> z=(1/2)+3*t.^2;
>> plot(x,z)
>> plot(x,z),grid on
>> plot(x,z,’r’),grid on
−2 −1 0 1 2 3−1
0
1
2
3
4
5
6
7
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);
>> x = t-sin(t); y = 1-cos(t);
>> plot(x,y)
0 5 10 15 200
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
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:
Helice
1. Helice 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
>>f plot(’8/((x^2)+4)’,[-50,50])
−50 0 500
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
>>teta=linspace(0,2*pi,60);
>>r=1+cos(teta);
>>polar(teta,r)
0.5
1
1.5
2
30
210
60
240
90
270
120
300
150
330
180 0
2. Graficar la siguiente curva con ecuaciones parametricas:
x=t*sen(t),y=t*cos(t),z = t2.
Representacion de superficies
Matlab permite realizar graficos en tres dimensiones, tanto de lineales como de super-
ficies, 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; pintan-
do 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; con-
siderando una iluminacion en formato basico
cylinder( ′f ′ )(x,y,z) .- Grafica una superficie de revolucion generada por la rotacion
2. Matlab 74
>>t=0:pi/50:10*pi;
%t=linspace(0,10*pi,2000)
>>plot3(sin(t),cos(t),t),grid on,axis Square
−1−0.5
00.5
1
−1
−0.5
0
0.5
10
10
20
30
40
>>t=0:pi/10:10*pi;
%(t=linspace(0,10*pi,2000))
>>plot3(t.*sin(t),t.*cos(t),t.^2),grid on,axis Square
−40−20
020
40
−40
−20
0
20
400
200
400
600
800
1000
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 tamano de los vectores
2. Matlab 75
Paraboloide
>> [x,y]=meshgrid(-2:0.1:2);
>> plot3(x,y,x.^2+y.^2)
−2 −1 0 1 2
−2
0
20
1
2
3
4
5
6
7
8
Esfera Para poder trazar la esfera usaremos el comando Sphere
>>[x; y; z] =sphere(n) , donde n indica el numero 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
bastarıa poner
>> [x,y,z]=sphere(20);
>> x=2+3*x;y=2+3*y;z=3*z;% con
centro (2,2,0)y r=3
>> surf(x,y,z)
−20
24
6
−2
0
2
4
6−1
0
1
2
3
4
5
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 revolucion Consideremos en R3 la circunferencia C = {(x, y, z)/(y−2)2+z2 =
1, x = 0},al rotar C alrededor del eje Z se obtiene el toro.
Una parametrizacion para esta curva esta dado por
ϕ(u, v) = (cosu(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);
>> x=cos(u).*(2+cos(v));
>> y=sin(u).*(2+cos(v));
>> z=sin(v);
>> surf(x,y,z)
>> axis([-3 3 -3 3 -1 1])
−3−2
−10
12
3
−3
−2
−1
0
1
2
3
−1
0
1
2. Matlab 77
La Cinta de Mobius 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) = (v2sen u
2, (1 + v
2cos u
2) sen u, (1 + v
2cos u
2) cosu), 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)
−0.5
0
0.5
−2−1
01
2−1.5
−1
−0.5
0
0.5
1
1.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])−1
−0.5
0
0.5
1
1.5
2
−1−0.8
−0.6−0.4
−0.20
0.20.4
0.60.8
1−3
−2
−1
0
1
2
3
2. Matlab 79
Preparacion de pelıculas o Movies Matlab dispone de funciones para generar una
pelıcula, 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 tamano
de este vector columna depende del tamano 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];
>> for j=1:30
y=sin(x+j*pi/8);
plot(x,y);
M(:,j)=getframe;
end
>> movie (M,10,15)−8 −6 −4 −2 0 2 4 6 8
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Este ejemplo crea una pelicula de 30 imagenes (como la que se muestra), que se alma-
cenan como las columnas de la matriz M.
Una ves creada la pelicula, se puede visualizar el numero 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 senalar 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 rec-
ta.(hacer correr un punto en su traza de dicha curva)
2. Matlab 81
>> syms t
>> x=cos(t);
>> y=sin(t);
>> z=t./(2*pi);
>> ezplot3(x,y,z,[0,10*pi],’animate’)
−1−0.5
00.5
1
−1
−0.5
0
0.5
10
1
2
3
4
5
x
x = cos(t), y = sin(t), z = 1/2 t/π
y
z
Platano:
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 serıa 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)
axis([-1 2 -1 1 -3 3]) −1−0.5
00.5
11.5
2
−1
−0.5
0
0.5
1−3
−2
−1
0
1
2
3
2. Matlab 82
2.14.2. 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 Por defecto, aquı se guardan nuestros archivos
Mt 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 realice-
mos 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 nece-
sarios 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 menu ’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 seran 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 corre-
sponderan, respectivamente, al capıtulo del tema correspondiente.
Vamos ahora a realizar el siguiente ejemplo que nos ensena a editar y ejecutar un fichero
m.
Ejemplo 2.14.3. EDICION DE UN FICHERO M.
creamos un fichero m Para ello vamos al menu 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 menu 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. Definicion 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 raız 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 mınimo
[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 es-
calar 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 −1AV = D.
2.15.2. Definicion 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 funcion. 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 car-
peta de Metodos).
Por ultimo, en un tercer paso comprobamos que nuestra funcion opera correcta-
mente, 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)e−0,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 mınimo 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 mınimo se produce para x = 1,19028.
Si nuestra tolerancia para el error fuera de 10−8 entonces ejecutaremos
>> fminbnd(’ddexpn’,1,2,optimset(’TolX’,1e-8,’Display’,’iter’))
2. Matlab 88
con ello, ademas, conseguiremos que se nos informe del numero de iteraciones necesario
y del caracter del mınimo.
Matlab no cuenta con la operacion fmaxbnd analoga a la anterior. Si nosotros quisieramos
hallar el maximo de una funcion h lo que tendrıamos que hacer es calcular el mınimo
de −h.
Veamos ahora como obtener el mınimo local relativo de una funcion de varias variables,
lo cual se hace con la orden
>> fminsearch(’funcion’,−→x0 ,opciones)
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
Capıtulo 3
INTERFAZ GRAFICA DE USUARIO
3.1. Conceptos Previos
3.1.1. Iniciando una Interfaz Grafica 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 Grafica 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 disenaremos
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 Grafica de Usuario 91
Usted puede mostrar los nombres de los controles. Haga clic en File→ Preferences.
Active la opcion: show name in component pallete:
3. Interfaz Grafica 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 selec-
cionar 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 algun 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 efectua pre-
sionando 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 tamano de paso del deslizador:
Value: contiene el valor actual del deslizador.
Max: define el valor m’aximo del deslizador, el valor por defecto es 1.
Min: define el valor mınimo del deslizador, el valor por defecto es 0.
Sliderstep: especifica el tamano 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 Grafica 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 selec-
cionado.
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 car-
acteres a numeros, usando el comando strdouble (convierte la cadena a un tipo
double).
3. Interfaz Grafica de Usuario 94
f) Static Text:
Se utiliza para mostrar texto que el usuario no puede modificar. Se utiliza fre-
cuentemente 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 utiles cuando deseamos proporcionar opciones mutuamente ex-
clusivas 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 multiples ıtems, entonces
el value es un vector de ındices.
Min-Max¿1, se permite la seleccion multiple.
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 numero de cadenas.
Se necesita agregar otro controlador pushbutton que ejecute una accion asociada
al seleccionar un item.
3. Interfaz Grafica 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 den-
tro de su callback. El boton permanece oprimido aun 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 (Han-
dles.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 ade-
lante utilizando los comandos bring to front (traer adelante) y send to back
(enviar atras) en el menu 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 utiles 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 Grafica de Usuario 96
3.2. 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 Grafica 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 Grafica 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 Grafica 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 tamano del
fondo de nuestro GUI
8. Del mismo panel elegimos Static Text para colocar un texto de fondo a nuestro
GUI
3. Interfaz Grafica 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 Grafica 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 Grafica 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-
CION’ y nos ubicamos en la propiedad BackgroundColor hacemos clic en ’+’ y
modificamos las opciones red, green y blue con los valores 0.855, 0.894, 0.941
respectivamente.
3. Interfaz Grafica 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 pequeno posible.
17. De nuestro Panel hacemos clic en la opcion Edit Text y formamos un rectangulo.
3. Interfaz Grafica 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 Grafica de Usuario 105
21. Hacemos clic alli y nos aparecera la ventana siguiente. Para nuestro caso selec-
cionamos ’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 Grafica 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 Grafica 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 Grafica de Usuario 108
27. Ingresamos a las propiedades del Listbox y modificamos la opcion String bor-
rando su contenido.
28. Comenzamos a Alinear nuestro Listbox con los otros objetos que hemos creado.
29. Asi mismo realineamos nuestros objetos.
3. Interfaz Grafica de Usuario 109
30. Encerramos nuestros objetos en un nuevo Panel al que llamaremos Resultados.
3. Interfaz Grafica 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 Grafica de Usuario 111
33. Duplicamos nuestro Boton dos veces y creamos un Panel llamadoOperaciones. A
nuestro primer Boton lo llamaremos Graficar y en sus propiedades modificaremos
FontSize, FontWeigth, String.
34. A los otros dos botones los llamaremosCalcular, Salir con las mismas propiedades
del anterior. Luego Alinearemos los botones haciendo uso de Align Objects
3. Interfaz Grafica de Usuario 112
35. Una vez terminados nuestros objetos, guardamos nuestro proyecto.
36. Le colocamos un nombre en este caso Biseccion y una ubicacion, luego hacemos
clic en Guardar
3. Interfaz Grafica de Usuario 113
37. Realizado esto, nos aparecera una nueva ventana de esta forma
38. Hacemos clic en la opcion Show Functions y seleccionamosBiseccion OpeningFcn
3. Interfaz Grafica 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 Grafica de Usuario 115
41. Antes de continuar haremos una pequena prueba a nuestro GUI, haciendo clic en
Run Biseccion.m o presionando F5
42. Donde tendremos el siguiente resultado
3. Interfaz Grafica 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 Grafica 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 aproximada-
mente asi.
3. Interfaz Grafica de Usuario 118
47. Ahora comenzaremos la programacion de nuestros Botones, en primer lugar traba-
jaremos 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 Grafica 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
edit4
edit3edit2
edit5
edit6
edit7
pushbotton1
listbox1
grafica
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 Grafica de Usuario 120
51. Configuraremos el Boton Calcular con la siguiente programacion
3. Interfaz Grafica 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 Grafica 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 Grafica 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 Grafica 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):’ pon-
dremos ′log(x) − x + 2′ en el intervalo de ’2’ a ’4’ con un error de 10−5 y luego
presionamos el boton Graficar
3. Interfaz Grafica 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. Analisis Numerico[en lınea]. [consulta 2012].
[3] Burden R.L; Faires J.D . (2001). Numerical Abalysis. Cengage Learning Latin
America.
[4] Cobos J. Apuntes de Calculo Numerico[en lınea].
http://ma1.eii.us.es/Material/Cal_Num_itis_Apuntes.pdf [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] Mejıa C.(2002) Invitacion al Analisis Numerico. Universidad Nacional de Colom-
bia, Medellın.
[8] Mora W.F.(2010) Introduccion a los Metodos Numericos. Instituto Tecnologico de
Costa Rica.
[9] Muller H. (1996) Una Introduccion al Analisi Numerico. Universidad Mayor de
San Simon. Cochabamba, Bolivia.
[10] Nakamura, S. (1992). Metodos Numericos Aplicados con Software. Pearson Edu-
cacion.
BIBLIOGRAFIA 127
[11] A. Quarteroni, F. Saleri. (2006). Calculo 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 Nu-
merical Methods Using MATLAB. John Wiley Sons.
[14] V. Dominguez. L. Rapun Matlab en cinco lecciones de Numerico[en lınea].
http://www.unavarra.es/personal/victor dominguez/ [consulta 2012]
[15] Carrasco V.(2011) Metodos Numericos Aplicados a la Ingenierıa Problemas en
Polymath y Matlab. MACRO
[16] Morales M.(2010) Matlab R2010a Metodos Numericos con Visualizacion Grafica.
MACRO
[17] Amancio R., Orbegoso G., Munoz G., Villalta R. (2010) Matlab 2010 - Software
para ciencia e ingenierıa. MACRO
[18] Moler, C. (2004) Numerical computing with Matlab. SIAM
[19] Pineiro G. APUNTES DE MATLAB [en lınea].
http://www.uhu.es/candido.pineiro/docencia/apuntesmatlab.pdf [consul-
ta 2012]
[20] J. Cooper A Matlab Companior for Multivariable Calculus
[21] Chavil M. Sistema experto en Maple Para el analisis de Curvas y superficies en
R3
[22] Gonzales M., Sanchez R. Graficas de curvas y superficies usando Matlab