metodos numericos para el calculo cientifico con matlab - tomo 0

127
Presentado por: Mera Carrasco, Junior Lino Malhaber Montenegro, Miguel ´ Angel Asesor: Dr. Collantes Santisteban, Luis Jaime UNPRG 2014 etodos Num´ ericos para el alculo Cient´ ıfico con Matlab TOMO 0

Upload: junior-lino-mera-carrasco

Post on 09-Dec-2015

84 views

Category:

Documents


17 download

DESCRIPTION

Métodos Numéricos para el Calculo Científico con Matlab - TOMO 0

TRANSCRIPT

Page 1: 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

Page 2: Metodos Numericos para el Calculo Cientifico 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

Page 3: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 4: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 5: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 6: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 7: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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]

Page 8: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 9: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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)

Page 10: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 11: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 12: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 13: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

1. Preliminares 13

Teorema 1.2.4. (Del Residuo) El estudio obtenido al dividir un polinomio p(x) por

(x− α) es igual a p(α)

p(x) = (x− α)q(x) + r, evaluando en x = α, tenemos : p(α) = r.

Teorema 1.2.5. (del Factor) Cualquier 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.

Page 14: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 15: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 16: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 17: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 18: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 19: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 20: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 21: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 22: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 23: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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 .

Page 24: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 25: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 26: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 27: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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/

Page 28: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 29: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 30: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 31: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

2. Matlab 31

7. Seleccionamos Typical y luego presionamos Next.

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

Page 32: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

2. Matlab 32

9. Presionamos Install.

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

Page 33: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

2. Matlab 33

11. Una vez todo este correcto presionamos Next.

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

Page 34: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 35: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 36: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

2. Matlab 36

17. Si todo esta correcto presionaremos Finish.

Page 37: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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)

Page 38: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 39: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 40: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 41: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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:

Page 42: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 43: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 44: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 45: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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]

Page 46: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 47: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 48: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 49: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 50: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 51: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 52: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 53: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 54: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 55: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 56: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 57: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 58: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 59: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 60: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 61: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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:

Page 62: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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)

Page 63: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 64: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 65: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 66: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 67: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 68: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 69: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 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-

Page 70: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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:

Page 71: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 72: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 73: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 74: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 75: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 76: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 77: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 78: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 79: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 80: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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)

Page 81: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 82: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 83: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 84: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 85: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 86: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 87: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 88: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 89: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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)

Page 90: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 91: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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:

Page 92: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 93: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 94: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 95: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 96: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 97: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 98: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 99: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 100: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 101: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 102: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 103: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 104: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 105: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 106: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 107: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 108: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 109: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

3. Interfaz Grafica de Usuario 109

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

Page 110: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 111: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 112: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 113: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 114: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 115: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 116: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 117: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 118: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 119: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 120: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

3. Interfaz Grafica de Usuario 120

51. Configuraremos el Boton Calcular con la siguiente programacion

Page 121: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 122: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 123: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 124: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 125: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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

Page 126: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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.

Page 127: Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

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