Metodos Numericos para el Calculo Cientifico con Matlab - TOMO 0

February 18, 2017 | Author: Junior Lino Mera Carrasco | Category: N/A
Share Embed Donate


Short Description

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

Description

2014 M´ etodos Num´ ericos para el C´ alculo Cient´ıfico con Matlab TOMO 0

Presentado por: Mera Carrasco, Junior Lino ´ Malhaber Montenegro, Miguel Angel

Asesor: Dr. Collantes Santisteban, Luis Jaime

UNPRG

UNIVERSIDAD NACIONAL “PEDRO RUIZ GALLO” ´ FACULTAD DE CIENCIAS F´ISICAS Y MATEMATICAS ´ ESCUELA PROFESIONAL DE MATEMATICA

“M´ etodos Num´ ericos para el C´ alculo Cient´ı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

Introducci´ on La presentaci´on de estos tomos tiene su origen en los Seminarios denominados FUN´ DAMENTOS DE ECUACIONES NO LINEALES, INTERPOLACION, DIFEREN´ E INTEGRACION ´ NUMERICA ´ ´ CIACION PARA EL CALCULO CIENTIFICO y ´ ´ CALCULO CIENT´IFICO DE ECUACIONES NO LINEALES, INTERPOLACION, ´ E INTEGRACION ´ NUMERICA ´ DIFERENCIACION CON MATLAB desarrollados en Diciembre del 2012 como investigaci´on de los cursos de Seminario de Matem´atica Pura y Aplicada de la carrera profesional de Matem´aticas de la Universidad Nacional Pedro Ruiz Gallo con el asesoramiento del Dr. Luis Jaime Collantes Santisteban, dichos trabajos enfocaban la parte te´orica y practica de algunos temas del C´alculo 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 econ´omicas entre otras para idealizar sus problemas y desarrollar un modelo matem´atico adecuado en algunos casos es dif´ıcil porque la aplicaci´on resulta excesivamente compleja o los m´etodos analiticos no se adecuan muy bien a sus resultados por ello es conveniente el uso de m´etodos num´ericos los cuales conducen a soluciones aproximadas pero m´as manejables y se puede dar uso a un ordenador provisto de un software adecuado, para nuestro caso Matlab.

M´etodos Num´ericos para el C´alculo Cient´ıfico con Matlab esta divido en 7 tomos:

TOMO 0 Conceptos Previos TOMO 1 Ecuaciones No Lineales TOMO 2 Interpolaci´on TOMO 3 Diferenciaci´on e Integraci´on Num´erica TOMO 4 Ecuaciones Lineales TOMO 5 Ecuaciones Diferenciales Ordinarias TOMO 6 Ecuaciones Diferenciales Parciales

M´etodos Num´ericos para el C´alculo Cient´ıfico con Matlab, explicara de manera sencilla y con ejemplos el uso y la programaci´on de Interfaces Graficas de Usuario (GUI) as´ı como el cl´asico uso de los archivos “.m” y por supuesto la soluci´on “manual”.

Este TOMO denominado Conceptos Previos est´a dividido en tres cap´ıtulos:

En el primero revisaremos la teor´ıa de Matrices, nociones del C´alculo, Series de Taylor, An´alisis del Error y Criterios de Convergencia los cuales ser´an utilizados en los tomos siguientes.

En el segundo cap´ıtulo estudiaremos a Matlab desde su correcta instalaci´on hasta la definici´on de las funciones b´asicas que servir´an 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 elaboraci´on del modelo b´asico de nuestros GUIs.

”Por favor, soy Rodney McKay, dif´ıcil tarda unos segundos. Imposible, un par de minutos. ”Dr. Rodney McKay - Stargate Atlantis

´INDICE GENERAL

1. Preliminares

7

1.1. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.1.1. Matrices Cuadradas: Tipos especiales . . . . . . . . . . . . . . . .

8

1.1.2. Operaciones con matrices

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

9

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

9

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

11

1.2. Repaso de C´alculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

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

16

1.4. An´alisis de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

1.4.1. Exactitud y precisi´on . . . . . . . . . . . . . . . . . . . . . . . . .

20

1.4.2. Tipos de errores

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

21

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

23

2. Matlab

25

2.1. ¿Qu´e es Matlab? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.2. Requisitos e Instalaci´on de Matlab . . . . . . . . . . . . . . . . . . . . .

27

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

37

2.4. Operaciones con n´ umeros reales . . . . . . . . . . . . . . . . . . . . . . .

37

2.5. Operaciones con n´ umeros complejos . . . . . . . . . . . . . . . . . . . . .

38

2.6. Operaci´on simb´olica con n´ umeros . . . . . . . . . . . . . . . . . . . . . .

38

2.7. Variables num´ericas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

2.8. Variables simb´olicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

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

39

2.10. Visualizaci´on de resultados . . . . . . . . . . . . . . . . . . . . . . . . . .

40

5

6

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

40

2.11.1. Datos num´ericos . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

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

50

2.11.3. Conversi´on de valores num´ericos a cadenas y viceversa, y entre diferentes bases . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

2.12. An´alisis 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. Introducci´on y operaciones de matices num´ericas

. . . . . . . . .

61

2.13.2. Submatrices num´ericas . . . . . . . . . . . . . . . . . . . . . . . .

63

2.13.3. Introducci´on y operaciones de matrices simb´olicas . . . . . . . . .

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. Definici´on de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85

2.15.1. Funciones de MATLAB

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

85

2.15.2. Definici´on funciones propias . . . . . . . . . . . . . . . . . . . . .

86

3. Interfaz Gr´ afica de Usuario 3.1. Conceptos Previos

89

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

89

3.1.1. Iniciando una Interfaz Gr´afica GUI . . . . . . . . . . . . . . . . .

89

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

90

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

96

Cap´ıtulo 1

PRELIMINARES

1.1.

Matrices

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

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

muestra a continuaci´on: 

   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 n´ umero de fila y el segundo, el n´ umero de columna. El elemento a11 se localiza en la esquina superior izquierda de A. La matriz A tiene n filas y m columnas, por lo tanto, se dice que es de dimensi´on (n × m). Las matrices con dimensi´on de uno en filas, n = 1, son vectores fila y el primer sub´ındice se puede eliminar: b = [b1

b2

b3

...

bm ]

1.

Preliminares

8

y cuando la dimensi´on 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 soluci´on de sistemas de ecuaciones lineales. Para tales sistemas, el n´ umero de ecuaciones (que corresponde al n´ umero de filas) y el n´ umero de inc´ognitas (que corresponde al n´ umero de columnas) tienen que ser iguales para que exista una posible soluci´on u ´ nica. Definici´ on 1.1.1. (Transpuesta) Sea A = [aij ] una matriz de (n × m), entonces la traspuesta de A, es la matriz de (m × n) obtenida intercambiando las filas por las columnas de A, es decir, AT = [aji ] Algunas propiedades Propiedad 1. (AT )T = A Propiedad 2. (AB)T = B T AT Propiedad 3. (A + B)T = AT + B T Propiedad 4. det(A)−1 = det(A−1 ) Suponiendo que A−1 existe.

1.1.1.

Matrices Cuadradas: Tipos especiales

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

1.

Preliminares

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 adici´on 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 multiplicaci´on de una matriz A por un escalar k se obtiene multiplicando cada elemento de A por k. El producto de dos matrices es posible s´olo para tama˜ nos compatibles, concretamente, si A es n × p y B es p × m, para alg´ un entero positivo p. En tal caso C = AB es una matriz n × m cuyos elemntos son cij =

p X

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

j = 1, . . . , m

k=1

el producto de matrices es asociativa (AB)C = A(BC) y distributiba A(B + C) = AB + AC, pero en general, la multiplicaci´on no es conmutativa AB 6= BA A´ un cuando el producto es posible, la divisi´on de matrices no es una operaci´on 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−1 A = 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 obtenci´on del determinante de una matriz, |A|; si |A| = 0, la matriz es singular; si |A| = 6 0, la matriz es no singular.

1.1.3.

Determinante

Definici´ on 1.1.2. El determinante viene a ser una funci´on que aplicada a una matriz cuadrada da un u ´ nico valor num´erico

| | : Mn×n → R( o C) A



|A|

(1.2)

1.

Preliminares

10

1. Si A = [a] es una matriz de 1 × 1, entonces det(A) = |A| = a.   a b  ⇒ det(A) = |A| = ad − bc . 2. Si A =  c d 3. El menor Mij es el derminante de la submatriz de (n − 1) × (n − 1) de una matriz A de (n × n) suprimiendo la i-´esima fila y la j-´esima columna. 4. El cofactor Aij asociado con Mij se define como Aij = (−1)i+j Mij . 5. El determinante de una matriz cuadrada se define mediante la siguiente f´ormula recursiva (regla de Laplace):    a11 si n = 1 n det(A) = P  ∆ij aij , para n > 1,  j=1

∀i = 1, . . . , n

(1.3)

donde ∆ij = (−1)i+j Mij

PROPIEDADES Propiedad 1. Si cualquier fila o columna de A es el vector cero , entonces det(A) = 0. Propiedad 2. Si la i-´esima fila o la j-´esima columna de A se multiplican por una constante k, entonces det(A) se a11 a12 a21 a22 .. .. . . det(B) = kai1 kai2 .. .. . . an1 an2

multiplica por k, es decir: a11 a12 . . . a1n a21 a22 . . . a2n .. .. .. . . . = k ai1 ai2 . . . kain .. .. .. . . . an1 an2 . . . ann

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

= k|A|

(1.4)

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

1.

Preliminares

11

entonces det(A) = 0. Propiedad 7. Si un m´ ultiplo de una fila (columna) de A se suma a otro fila (columna) de A, el determinante no cambiar´a. 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) = |cof ac(A)|T .

De esto podemos decir que la inversa de A existe si y s´olo si el determinante de A es no nulo . La u ´ ltima condici´on se satisface si y s´olo si los vectores columnas de A son linealmente independientes.

1.

Preliminares

1.2.

12

Repaso de C´ alculo

Definici´ on 1.2.1. Una ecuaci´on lineal con n variables x1 , x2 , . . . , xn es una igualdad matem´atica que puede escribirse de la forma: a1 x1 + a2 x2 + . . . + an xn = b, donde ai se conocen como coeficientes de la ecuaci´on y a b el t´ermino constante. Si b = 0 se llama ecuaci´on homog´enea. Definici´ on 1.2.2. Si f (α) = 0, α se llama cero de f o ra´ız de la ecuaci´on f (x) = 0. Un cero es simple si f ′ (α) 6= 0, y m´ ultiple en caso contrario. Todos los m´etodos n´ umericos de resoluci´on de ecuaciones presentan dificultades cuando la ecuaci´on tiene ra´ıces multiples ya que todos ellos se basan en los cambios de signo de la funci´on y est´os son dif´ıcilmente detectables en un entorno de una ra´ız m´ ultiple. Para funciones que son polinomios de grado n con coeficientes reales, es decir, tiene la forma 2

n

pn (x) = a0 + a1 x + a2 x + . . . + an x =

n X k=0

ak xk ,

ak ∈ R, an 6= 0.

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

n ≥ 5, aplicando u ´nicamente un n´ umero finito

operaciones a los coeficientes del polinomio, no existe una f´ ormula 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 X

ak xk .

(1.5)

k=0

Teorema 1.2.3. (Algoritmo de la divisi´ on) Si p(x) y f (x) son polinomios en x y f (x) 6= 0 entonces se puede encontrar polinomios q(x) y r(x) tal que : p(x) = q(x)f (x) + r(x), donde r(x) = 0 ´o grado(r(x)) 0, existe x→x0

un n´ umero real δ > 0 talque |f (x) − L| < ǫ, siempre que x ∈ X y 0 < |x − x0 | < δ. Definici´ on 1.2.4. Sea f una funci´on definida en un conjunto X de n´ umeros reales y x0 ∈ X. Entonces f es continua en x0 si l´ım f (x) = f (x0 ). x→x0

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

sucesi´on {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 notaci´on l´ımn→∞ xn = x significa que la sucesi´on {xn }∞ n=1 converge a x.

Teorema 1.2.6. Si f es una funci´ on definida en un conjunto X de n´ umeros reales y x0 ∈ X entonces las siguientes afirmaciones son equivalentes: a. f es continua en x0 ; b. Si {xn }∞ on en X que converge a x0 , entonces l´ım f (xn ) = f (x0 ). n=1 es cualquier sucesi´ n→∞

La derivada de f en x0 es la pendiente de la recta tangente a la gr´afica de f en (x0 , f (x0 )). Como se muestra en la figura 1. Teorema 1.2.7. Si la funci´on f es derivable en x0 , entonces f es continua en x0 .

1.

Preliminares

14

f'(x0 )

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

y=f(x0 )

tervalo abierto que contiene a x0 . La funci´on f es derivf (x)−f (x0 ) x−x0 x→x0

able en x0 si f ′ (x0 ) = l´ım

(x0,f(x ))

f(x0)

existe. El n´ umero

0

f ′ (x0 ) es la derivada de f en x0 . Una funci´on que tiene

x0

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

Figura 1.1: la derivada Los siguientes teoremas son fundamentales en la deducci´on de m´etodos para la estimaci´on 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 m´etodo de bisecci´ on) Y f'(c)=0 f(a)=f(b)

y=f(x)

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

a



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

b

c

X

Figura 1.2: Teorema de Rolle Rectas paralelas

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

Teorema 1.2.10. (Teorema del Valor medio) Si f ∈ C[a, b] y f es derivable en (a, b). Entonces existe un n´ umero c en (a, b) tal que f ′ (c) =

f (b)−f (a) . b−a

(ver figura 3)

a

c

b

Figura 1.3: Teorema del valor medio

El otro concepto b´asico del c´alculo que usaremos ampliamente es la Integral de Rieman. Definici´ on 1.2.7. La integral de Riemann de la funci´on f en el intervalo [a, b] es el n Rb P siguiente l´ımite, si ´este existe: f (x)dx = l´ım f (zi )∆xp , donde los n´ umeros m´ax ∆xi i=1 a

1.

Preliminares

15

Teorema 1.2.11. (Teorema de los Val-

Y

ores extremos) Si f ∈ C[a, b], entonces existen c1 , c2 ∈ [a, b] tales que f (c1 ) ≤

y=f(x)

f (x) ≤ f (c2 ) para toda x ∈ [a, b]. Adem´ as, si f es derivable en (a, b), entonces los

a

c 1

c

2

b

X

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

Figura 1.4: Teorema de los valores ex-

4)

tremos

x0 , x1 , . . . , xn , satisfacen a = x0 ≤ x1 ≤ . . . ≤ xn = b, y ∆xi = xi − xi−1 para toda i = 1, 2, . . . , n y zi se elige de manera arbitraria en el intervalo [xi−1 , xi ] Toda funci´on continua f en [a, b] es Rieman-integrable en [a, b]. Esto nos permite elegir, para fines de c´alculo, los puntos xi uniformemente distribuidos en [a, b], y para cada i = 1, 2, . . . , n elegir zi = xi . En este caso, Zb a

n

b−aX f (x)dx = l´ım f (xi ). n→∞ n i=1

donde los n´ umeros que aparecen en la figura 5. como xi son xi = a + i(b − a)/n. Y y=f(x)

a= x

0

x

1

x

2

x

x i−1

i

x b=x n n−1

X

Figura 1.5:

En nuestro estudio del an´alisis num´erico necesitaremos otros dos resultados. El primero es una generalizaci´on del teorema del valor medio para integrales. Teorema 1.2.12. (Teorema del valor medio ponderado para integrales) Suponga que f ∈ C[a, b], que la integral de Riemann de g existe en [a, b] y que g(x) no cambia

1.

Preliminares

16

de signo en [a, b]. Entonces existe un n´ umero c en (a, b) tal que Zb

f (x)g(x)dx = f (c)

Z

b

g(x)dx

a

a

Cuando g(x) = 1, el teorema 1.2.12 es el del valor medio para integrales que proporciona el valor promedio de la funci´on f en el intervalo [a, b] como 1 f (c) = b−a

Zb

f (x)dx

a

El otro teorema que necesitamos y que normalmente no se presenta en un curso b´asico de c´alculo se deduce al aplicar de manera sucesiva el teorema de Rolle a f, f ′ , . . . , y, por u ´ ltimo, 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 n´ umeros distintos x0 , . . . , xn en [a, b], entonces existe un n´ umero c en (a, b) tal que f n (c) = 0 El siguiente teorema es el del valor intermedio, sirve para determinar si existe soluciones de ciertos problemas. Sin embargo, no proporciona un m´etodo eficaz para determinar tales soluciones. Teorema 1.2.14. (Teorema del valor intermedio) Si f ∈ C[a, b] y L es cualquier n´ umero entre f (a) y f (b), entonces existe un n´ umero c en (a, b) tal que f (c) = L ´ En la siguiente secci´on describiremos los polinomios de Taylor. Estos se usan ampliamente en el an´alisis n´ umerico.

1.3.

Series de Taylor

La Serie de Taylor (Polinomio de Taylor) es el medio m´as importante que se emplea para obtener modelos n´ umericos y analizar los errores de truncamientto. Teorema 1.3.1. (Teorema de Taylor) Supongamos que f ∈ C n [a, b], que f (n+1) existe en [a, b] y x0 ∈ [a, b]. Para cada x ∈ [a, b], existe un n´ umero ξ(x) entre x0 y x tal

1.

Preliminares

17

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

(n)

(x0 ) Pn (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + f 2! (x − x0 )2 + . . . + f n!(x0 ) (x − x0 )n = n P n+1 (ξ(x)) f (k) (x0 ) (x − x0 )k y Rn (x) = f (n+1)! (x − x0 )n+1 = k! k=0

En este caso, Pn (x) es el n−´esimo polinomio de Taylor para f respecto a x0 y Rn (x) se llama el t´ ermino del residuo asociado a Pn (x) escrito en la forma de Lagrange, y no es sino un error de truncamiento. J.L. Lagrange (1736-1813) fue uno de los grandes matem´aticos franceses de todos los tiempos que, como veremos, hizo trascendentales aportes en la Teor´ıa de Interpolaci´on. 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 t´ermino 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 ∈ C n (R), el teorema de Taylor se puede aplicar a cualquier n ≥ 0. Adem´as,

f ′ (x) = − sen x, f ′′ (x) = − cos x, f ′′′ (x) = sen x y f (4) (x) = cos x, de modo que f (0) = 1, f ′ (0) = 0, f ′′ (0) = −1, f ′′′ (0) = 0.

(a) Para n = 2 y x0 = 0, tenemos cos x = 1 − 21 x2 + 16 x3 sen ξ(x), donde ξ(x) es un n´ umero entre 0 y x (ver figura 6). Para x = 0,001, el polinomio de Taylor y el T´ermino del residuo son cos 0,01 = 1 − 21 (0,01)2 + 16 (0,01)3 sen ξ(x) = 0,99995 + 0,1¯6 × 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,1¯6 × 10−6, de modo que la aproximacion 0.99995 coincide

por lo menos con los primeros cinco digitos de cos 0,01, y 0,9999483 < 0,99995 − 1.¯6 × 10−6 ≤ cos 0,01 ≤ 0,99995 + 1.¯6 × 10−6 < 0,9999517.

La cota de error es mucho mayor que el error real. Esto se debe, en parte, a la pobre cota que usamos para | sen ξ(x)|. Se puede demostrar que para todo valor

1.

Preliminares

18

Figura 1.6:

de x, tenemos | sen x| ≤ |x|. Como 0 ≤ ξ < 0,01, podr´ıamos usar el hecho de que | sen ξ(x)| ≤ 0,01 en la f´ormula para el error, lo que produce la cota 0,1¯6 × 10−6

(b) Como f ′′′ (0) = 0, el tecer polinomio de Taylor con t´ermino de residuo en torno a x0 = 0 es cos x = 1 − 21 x2 +

1 4 x 24

¯ cos ξ(x).

¯ donde 0 < ξ(x) < 0,01. El polinomio de aproximaci´on es el mismo, y la aproximaci´on a´ un es 0.99995, pero ahora tenemos una mucha mejor garantia de precisi´on 1 4 ¯ ¯ puesto que | cos ξ(x)| ≤ 1 para toda x, tenemos | 24 x cos ξ(x)| ≤

4,2 × 10−10 .

1 (0,01)4 (1) 24



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 an´alisis num´erico. El primero es encontrar una aproximaci´on, que los polinomios de Taylor proporcionan en ambas partes. El segundo es determinar la precision de la aproximaci´on. En este caso, el tercer polinomio de taylor fue mucho m´as informativo que el segundo, aunque ambos dieron la misma aproximaci´on. Definici´ on 1.3.1. Una funci´on f : [a, b] → R, definida en un intervalo abierto [a, b], se llama anal´ıtica cuando, para cada a ∈ [a, b] existe un ε > 0 tal que la serie de Taylor (Pn en teorema 1.3.1) converge para f (x) desde que |x − x0 | < ε

1.

Preliminares

1.4.

19

An´ alisis de error

A lo largo del tiempo, los m´etodos num´ericos han sido desarrollados con el objeto de resolver problemas matem´aticos cuya soluci´on es dif´ıcil o imposible de obtener por medio de los procedimientos tradicionales. Las soluciones que ofrecen los m´etodos num´ericos son aproximaciones de los valores reales y, por tanto se tendr´a un cierto grado de error que ser´a conveniente determinar. Aunque la perfecci´on es una meta digna de alabarse es dif´ıcil si no imposible de alcanzarse. Las aproximaciones num´ericas pueden introducir errores la pregunta es ¿Qu´e error puede considerarse tolerable?. El concepto de cifras o digitos significativos se ha desarrollado para designar formalmente la contabilidad de un valor num´erico Definici´ on 1.4.1. El n´ umero de cifras significativas es el numero de digitos, m´as un digito estimado que se pueda usar con confianza. Ejemplo 1.4.1. Los ceros no siempre son cifras significativas ya que pueden usarse solo para ubicar el punto decimal.

1.

Preliminares

20

Se puede decir que la aproximaci´on es aceptable siempre y cuando sea correcta hasta cuatro cifras significativas esto es, debe existir seguridad que las primeras cuatro cifras son correctas. Aunque ciertas cantidades tales como π, o



7 representan n´ umeros 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 (com´ unmente varian entre 7 y 14) tales n´ umeros jam´as se podr´an representar exactamente. A la omision del resto de cifras significativas se le conoce como error de redondeo. Los errores de redondeo y el uso de cifras significativas tienen mucha importancia en la identificaci´on de exactitud y precisi´on.

1.4.1.

Exactitud y precisi´ on

Los errores asociados con los c´alculos se pueden caracterizar observando su precisi´on y exactitud. La exactitud se refiere a la aproximaci´on de un n´ umero al valor verdadero que se supone representa. La inexactitud ( conocida tambi´en como sesgo ) se define tambi´en como un alejamiento sistem´atico de la verdad. La precisi´on por otro lado se refiere a la magnitud del esparcimiento. Usaremos el t´ermino de error para representar la inexactitud y la precision de las predicciones. Los errores num´ericos se generan con el uso de aproximaciones para representar las operaciones y cantidades matem´aticas. Para los tipos de errores, la relaci´on entre el resultado exacto o verdadero y el aproximado esta dado por : Valor verdadero = valor aproximado + error Reordenando la ecuaci´on , se encuentra que el error num´erico es error= Valor verdadero - valor aproximado Un defecto es que muchas veces no se toma en consideraci´on el orden de magnitud del valor que se esta probando . Por ejemplo, un error de un cent´ımetro es mucho mas significativo si se esta midiendo un remache que un puente.

1.

Preliminares

21

Una manera de medir las magnitudes de las cantidades que se est´an evaluendo es normalizar el error respecto al valor verdadero, como en: error relativo fraccional= error/ valor verdadero

1.4.2.

Tipos de errores

Supongamos que al hacer ciertos calculos numericos tengamos un numero de la forma : y = 0.d1 d2 . . . dk dk+1dk+2 . . . × 10n y su aproxiamci´on se puede realizar por dos metodos : 1. Error de truncamiento Consiste simplemente en cortar los digitos dk+1dk+2 . . . para obtener: y ′ = 0.d1 d2 . . . dk × 10n . Estos tipos de errores son evaluados con una formulaci´on matem´atica en la serie de Taylor. 2. Error de redondeo Llamado redondeo, suma S × 10n−(k+1) a y y luego trunca el resultado para

obtener un n´ umero de la forma y ′ = 0.δ1 δ2 . . . δk × 10n .

Si dk+1 ≤ S, sumamos 1 a dk para obtener f l(y); esto es , redondeamos hacia arriba, si dk+1 < S, Simplemente truncamos todo excepto los primeros k digitos; as´ı, redondeamos hacia abajo. En la siguiente definici´on se describen dos m´etodos para medir errores de aproximaci´on. Definici´ on 1.4.2. (Errores absoluto y relativo) Supongamos que el valor exacto de un dato es p y disponemos de un valor aproximado p∗ . Se denomina error absoluto de p∗ a la distancia que lo separa del valor exacto p, es decir |p − p∗ |. Se denomina error relativo de p∗ al cociente entre el error absoluto y el objeto ∗

evaluado, es decir, | p−p |. En el caso p = 0 s´olo se utiliza el error absoluto. p Consideremos los errores absolutos y relativos al representar p por p∗ en el ejemplo siguiente.

1.

Preliminares

Ejemplo 1.4.2.

22

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

y el error relativo es 0,333¯3 × 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,333¯3 × 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,333¯3 × 10−1

Este ejemplo se muestra el mismo error relativo, para una gran variedad de errores absolutos. Como una medida de la precisi´on, el error absoluto puede llevar a confusiones, en tanto que el error relativo es m´as significativo, pues toma en cuenta el tama˜ no del valor. La siguiente definicion utiliza el error relativo como una medida de las cifras significativas de precisi´on para una aproximaci´on. Definici´ on 1.4.3. El n´ umero p∗ aproxima a p con t cifras significativas si t es el mayor entero no negativo para el cual |p − p∗ | < 5 × 10−t |p| Ejemplo 1.4.3. 1.p = 3,141592,

p∗ = 3,14

|p − p∗ | 10−2 ≈ 0,000507 < |p| 2 Luego p∗ aproxima a p con 3 cifras significativas 2. p = 106 ,

p∗ = 999996, |p − p∗ | 10−5 ≈ 0,000004 < |p| 2

Luego p∗ aproxima a p con 6 cifras significativas Definici´ on 1.4.4. Si t es el mayor entero para el cual |p − p∗ | <

10−t 2

se dice que p∗

aproxima a p con t decimales La perdida de precisi´on debida al error de redondeo se puede evitar a menudo mediante la reformulaci´on del problema, como se muestra en el siguiente ejemplo.

1.

Preliminares

23

Ejemplo 1.4.4. La f´ormula cuadr´atica establece que las ra´ıces de ax2 + bx + c = 0, cuando a 6= 0, son x1 =

−b +



−b − b2 − 4ac y x2 = 2a

p√

b2 − 4ac 2a

Con aritmetica de redondeo a cuatro cifras, considere esta f´ormula aplicada a la ecuaci´on x2 + 62,10x + 1 = 0, cuyas ra´ıces son aproximadamente x1 = −0,01610723 y x2 = −62,08390. tenemos: f l(x1 ) =

−62,10 + 62,06 −0,04000 = = −0,02000. 2,000 2,000

una mala aproximaci´on a x1 = −0,01611, con el error relativo grande | − 0,01611 + 0,02000| = 2,4 × 10−1 . −0,01611 Por otro lado, el c´alculo de x2 es: f l(x2 ) = Tiene el error relativo peque˜ no

|−62,08+62,10| |−62,08|

−62,10−62,06 2,000

=

−124,2 2,000

≈ 3,2 × 10−4 .

= −62,10

Para obtener una aproximaci´on m´as precisa con redondeo a cuatro cifras para x1 , se cambia la forma de la f´ormula cuadr´atica mediante la racionalizaci´on del numerador. √ √ −b + b2 − 4ac −b − b2 − 4ac b2 − (b2 − 4ac) √ √ x1 = )= , ( 2a −b − b2 − 4ac 2a(−b − b2 − 4ac) lo que se simplifica como una f´ormula cuadr´atica alternativa x1 = Al usarlo tenemos: f l(x1 ) = relativo 6,2 × 10−4 .

1.5.

−2c √ b + b2 − 4ac

−2,000 62,10+62,06

=

−2,000 124,2

= −0,01610, con el peque˜ no error

Criterios de convergencia

Los criterios de convergencia que se ver´an en este punto, son aplicables para todos los m´etodos que se estudian en el pr´oximo capitulo. Previamente se establece una toleracia ya sea para la variable x o para la funci´on f (x), dependiendo de los valores de las propiedades fisicas motivo de estudio, esto es, TOL1 y TOL2 .

1.

Preliminares

24

Se calcula el error para la variable x, hasta que este sea menor que la tolerancia es decir Critero 1: Abs(xk+1 − xk ) ≤ T OL1

(1.6)

Abs(f (x)) ≤ T OL2

(1.7)

Criterio 2:

Si se cumple algunos de estos criterios se habr´a encontrado la soluci´on, de lo contrario, se contin´ ua iterando de acuerdo al m´etodo seleccionado.

Cap´ıtulo 2

MATLAB

2.1.

¿Qu´ e es Matlab?

MATLABr es un lenguaje de alto nivel y un entorno interactivo para el c´alculo num´erico, la visualizaci´on y la programaci´on. Mediante MATLAB, es posible analizar datos, desarrollar algoritmos y crear modelos o aplicaciones. El lenguaje, las herramientas y las funciones matem´aticas incorporadas permiten explorar diversos enfoques y llegar a una soluci´on antes que con hojas de c´alculo o lenguajes de programaci´on tradicionales, como pueden ser C/C++ o JavaT M

MATLAB se puede utilizar en una gran variedad de aplicaciones, tales como procesamiento de se˜ nales y comunicaciones, procesamiento de imagen y v´ıdeo, sistemas de control, pruebas y medidas, finanzas computacionales y biolog´ıa computacional. M´as de un mill´on de ingenieros y cient´ıficos de la industria y la educaci´on utilizan MATLAB, el lenguaje del c´alculo t´ecnico.

2.

Matlab

26

En el C´ alculo num´ erico MATLAB proporciona una serie de m´etodos de c´alculo num´erico para analizar datos, desarrollar algoritmos y crear modelos. El lenguaje de MATLAB incluye funciones matem´aticas que permiten las operaciones cient´ıficas y de ingenier´ıa habituales. Las funciones matem´aticas principales utilizan librer´ıas optimizadas por procesador a fin de permitir una ejecuci´on r´apida de los c´alculos de vectores y matrices. Entre los m´etodos disponibles se encuentran: Interpolaci´on y regresi´on Diferenciaci´on e integraci´on Sistemas lineales de ecuaciones An´alisis de Fourier Valores propios y valores singulares Ecuaciones diferenciales ordinarias (EDO) Matrices dispersas Los productos complementarios de MATLAB proporcionan funciones para ´areas especializadas tales como estad´ıstica, optimizaci´on, an´alisis de se˜ nales y aprendizaje autom´atico.

2.

Matlab

2.2.

27

Requisitos e Instalaci´ on de Matlab

Visitando la p´agina de Mathworks empresa desarrolladora de Matlab cuya sede central est´a situada en Natick, Massachusetts, Estados Unidos. Nos ofrece la siguiente informaci´on acerca de los requisitos del sistema y el ordenador para la correcta instalaci´on de la version 2012b.

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

2.

Matlab

28

Si nuestro ordenador cumple los requisitos antes mecionados pasaremos a la instalaci´on de Matlab. 1. Ingresamos a la ubicaci´on de nuestro instalador y ejecutamos el archivo setup.exe o simplemente setup.

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

2.

Matlab

29

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

4. En este paso nos pide que ingresemos la clave del producto. Por ello seleccionaremos I have the File Installation Key for my license

2.

Matlab

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

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

30

2.

Matlab

7. Seleccionamos Typical y luego presionamos Next.

8. Dejamos por defecto la opci´on de la ubicaci´on y presionamos Next.

31

2.

Matlab

9. Presionamos Install.

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

32

2.

Matlab

11. Una vez todo este correcto presionamos Next.

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

33

2.

Matlab

34

13. Seleccionamos la opcion Activate manually without the Internet y presionamos Next.

14. Seleccionamos la opcion Provide the path to the license file y presionamos Browse....

2.

Matlab

35

15. Ubicamos la licencia en la carpeta crack de nuestro instalador y elegimos lic standalone y presionamos Select.

16. Una vez alli s´olo presionamos Next.

2.

Matlab

17. Si todo esta correcto presionaremos Finish.

36

2.

Matlab

2.3.

37

Inicio con Matlab

Iniciaremos Matlab dando doble clic en el Icono de Matlab. Una vez alli nos aparecera una ventana divida en tres partes: Ventana del Directorio Actual (Current Folder), Ventana de Historia de Comandos (Command History) y la Ventana de Comandos (Command Window); es en ´esta ultima sobre la que empezaremos a digitar nuestras ordenes.

2.4.

Operaciones con n´ umeros reales

´ OPERACION

´ EXPRESION

Suma y resta

>>1+2 >> 1241-870

Multiplicaci´on

>>25.64*6

Divici´on

>> 20/4

Potenciaci´on

>> 2.5^6

M´aximo com´ un divisor

>> gcd(124,48)

M´ınimo com´ un m´ ultiplo

>> lcm(20,5)

Resto de una divisi´on entera

>>rem(7,3)

2.

Matlab

2.5.

38

Operaciones con n´ umeros complejos

´ OPERACION

´ EXPRESION

Suma y resta

>> (13+4*i)+2-i >> 2-3*i-(7+2*i)

Multiplicaci´on

>> (5+i)*(7+1.64*i)

Dividido por

>> (1-5*i)/(2*i)

Divide a

>> i\(3-9*i)

Potenciaci´on

>> (4+6*i)^2 >> (4+6*i)^i

2.6.

Operaci´ on simb´ olica con n´ umeros

´ OPERACION

´ EXPRESION

Factorizaci´on

>> factor(2012)

Suma simb´ olica

>> sym(3+4*i)+5.34-2*i

Resta simb´ olica

>> sym(340/56)-5/2

Multiplicaci´on simb´ olica

>> sym(1+2*i)*1/5

Divisi´on simb´ olica

>> sym(3647)/56

Potenciaci´on simb´ olica

>> sym(i)^2

Observaci´ on 2.6.1. . El comando sym convierte variables num´ericas en simb´olicas. Hay que tener mucha precauci´on a la hora de mezclar n´ umeros o variables num´ericas con simb´olicas. La mezcla no suele funcionar muy bien.

2.

Matlab

2.7.

39

Variables num´ ericas

DATOS DE UN CILINDRO altura=3 radio=1/2

Se puede operar con las variables. Por

volumen=altura*pi*radio^2

defecto, pi es el numero π

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

vez e incluso asignar valores a nuevas

d=radio^(1/2)

variables

radio=1, volumen Cuando se reasigna un valor a una variable que ya existe, no se recalculan las variables definidas a partir de ella a no ser que se vuelva a calcular de nuevo su nuevo valor.

2.8.

Variables simb´ olicas

a=1234, b=sym(237) sym Convierte variables num´ericas en simbolicas bb=numeric(b)

numeric realiza la operaci´on inversa a sym

d=a+b

2.9. 1/0

Operaciones con infinitos Inf representa el concepto tradicionalmente representado por ∞

Inf+Inf Inf-Inf NaN significa Not a Number Inf/Inf 0^Inf 3^Inf 1^Inf

2.

Matlab

2.10.

40

Visualizaci´ on de resultados

El punto y coma (;) al final de la orden hace que no se visualice el resultado. >> Altura=1/sqrt(3);

sqrt realiza la ra´ız cuadrada

>> Altura

S´olo se muestra una aproximaci´on con 4 cifras decimales

>> format long, Altura

Ahora se pueden ver hasta 15 cifras decimales

>> format short e, Altura Formato exponencial corto >> format long e, Altura

Formato exponencial largo

>> vpa(pi,20)

Muestra el n´ umero pi con 19 cifras decimales

Observaci´ on 2.10.1. Matlab distingue entre may´ usculas y minusculas Altura, altura, ALTuRa son tres variables distintas

2.11.

Tipo de dato

A continuaci´on se presenta un organigrama de los diferentes tipos de datos con los cuales trabaja MATLAB.

2.

Matlab

41

2.11.1.

Datos num´ ericos

N´ umeros enteros Tipo de Dato

Rango de valores

Funci´ on de conversi´ on

Entero con signo de 8 bits

-2^7 a 2^7-1

int8

Entero con signo de 16 bits

-2^15 a 2^15-1

int16

Entero con signo de 32 bits

-2^31 a 2^31-1

int32

Entero con signo de 64 bits

-2^63 a 2^31-1

int64

Entero sin signo de 8 bits

0 a 2^8-1

int8

Entero sin signo de 16 bits

0 a 2^16-1

int16

Entero sin signo de 32 bits

0 a 2^32-1

int32

Entero sin signo de 64 bits

0 a 2^32-1

int64

Ejemplo 2.11.1. >> x=int16(32767) x= 32767 luego podemos verificar el tipo de dato de x mediante: >> whos x Name size x

1x1

bytes 2

class

Attributes

int16

o sino mediante >> tipo x= class(x) tipox = int 16 si desea verificar que x es un tipo de dato entero se utiliza la funci´on isinteger. >>

isinteger (x) ans = 1

Para convertir otro tipo de dato , como una cadena, a entero, puede utilizar las funciones de conversi´on. Por ejemplo , definamos la siguiente cadena:

2.

Matlab

>>

42

str= ’SEMINARIO’

Luego aplicamos la funci´on de conversi´ona entero int8 que convierte cada uno de los elementos de str a entero con signo de 8 bits, es decir, obtenemos su respectivo c´odigo ASCII. >> int8(str) ans = 83

69

77

73

78

65

82

73

79

N´ umeros decimales Matlab representa n´ umeros decimales en formato simple y doble precisi´on. Por defecto, es de doble precisi´on, pero se puede convertir cualquier n´ umero a simple con una unci´on de conversi´on. a) Doble precisi´on. Valores m´ aximos y m´ınimos de doble precisi´ on Las funciones realmax y realmin retornan los valores m´aximos y m´ınimos que pueden representarse con el tipo double. >> realmax ans= 1.7977e+308 >> -realmax ans= -1.7977e+308 >>

realmin ans= 2.2251e-308

>> -realmin ans= -2.2251e-308

2.

Matlab

43

Creaci´ on de datos de doble precisi´ on Como el tipo num´erico por defecto de Matlab es doble precisi´on, entonces s´olo se requiere una simple sentencia de comandos: >> x= 18.04 ; >> whos x Name

stize

x

1x1

Bytes 8

Class

Attributes

double

para verificar que un tipo de dato es decimal (o punto flotante) se hace uso de la funci´on isfloat. >> isfloat(x) ans = 1

Conversi´ on a doble precisi´ on Se pueden convertir otros datos num´ericos, caracteres o cadenas, y datos l´ogicos a doble precisi´on usando la funci´on Matlab double. >> y=int64(-961258) ; %crea un entero de 64 bits >> x=double(y) % convierte a doubl´ e x= -961258 >> whos x Name x

Size 1x1

Bytes 8

Class bouble

Attributes

2.

Matlab

44

b) Simple precisi´on Valores m´ aximos y m´ınimos de doble precisi´ on Las funciones realmax y realmin cuando se llaman con el argumento ’single’ retornan 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 n´ umeros m´as grandes que realmax(’single’) o menores que realmin(’single’) se les asigna valores de infinito positivo (inf) y negativo (-inf) respectivamente.

Creaci´ on de datos de simple precisi´ on Como el tipo de dato num´erico por defecto de Matlab es doble precisi´on, entonces se requiere una funci´on de conversi´on single para crear un n´ umero de simple precisi´on. >> x= single(13.04); % crea un tipo de dato decimal single >> whos x Name

size

x

1x1

>> isfloat(x) ans= 1

Bytes 4

Class single

Attributes

2.

Matlab

45

Conversi´ on a simple precisi´ on Se pueden convertir otros datos num´ericos, caracteres o cadenas, y datos l´ogicos a doble precisi´on usando la funci´on 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

x

1x1

Bytes

Class

4

Attributes

single

N´ umeros complejos Los n´ umeros complejos consisten de 2 partes separadas: una parte real y otra parte imaginaria. La base imaginaria es la ra´ız cuadrada de -1. Este es representado en MATLAB por cualquiera de las 2 letras i o j. Creaci´ on de N´ umeros Complejos Existen 2 formas para la creaci´on de un n´ umero complejo: La primera es asignar a una variable un valor complejo de la forma a + bi. >> x= 3+2i x= 3.00000+ 2.0000i

La segunda es utilizando la funci´on complex. Se comninan 2 entradas, la primera es real y la segunda imaginaria. >> x=[10

20; 6

12]

x= 10

20

6

12

>> y= [13 7; 2

8]

2.

Matlab

46

y= 13

7

2

8

>> z=complex(x,y) z= 10.0000+ 13.0000i 20.0000+ 7.0000i 6.0000 + 2.0000i

12.000 + 8.0000i

Para obtener la parte real e imaginaria utilizando la funci´on 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 infinitamente positivos, negtaivos y aquellos que no son un n´ umero respectivamente. Casos en que se retoma el valor infinito >> x=1/0 warning: Divide by zero x= Inf >> x=log(0) warning : log of zero. x= -Inf >> x=1.e1000

2.

Matlab

47

x=Inf >> x=exp(1000) x= Inf Casos en que se retoma el valor NaN MATLAB representa valores que no son n´ umeros relaes ni complejos con un valor especial NaN (Not a Number). Expresiones como 0/0 y Inf/Inf dan como resultado NaN, por ejemplo pi

N´ umero π = 3,01415926

exp(1)

0 a 2^16-1

Inf

0 a 2^32-1

NaN

0 a 2^32-1

Comandos que identifican el tipo de dato num´ erico Para identificar el tipo de dato de una variable x se puede usar cualquiera de los siguientes comandos: COMANDO

´ OPERACION

whos x

visualiza el tipo de dato x

isnumeric(x)

Determina si x es un tipo de dato num´erico

isa(x,’integer’)

Determina si x es del tipo num´erico especificado

isa(x,’uint 64’)

Determina si x es del tipo num´erico especificado

isa(x,’float’)

Determina si x es del tipo num´erico especificado

isa(x,’double’)

Determinar si x es del tipo num´erico especificado

isa(x,’single’)

Determinar si x es del tipo num´erico especificado

isreal(x)

Determina si x es n´ umero real o complejo

isnan(x)

Determina si x no es un n´ umero (NAN)

isinf(x)

Determina si x es infinito

isfinite(x)

Determina si x es finito

Formato de valores num´ ericas A continuaci´on se presenta los diferentes formatos que usa MATLAB en la visualizaci´on de sus variables.

2.

Matlab

48

TIPO

RESULTADO

short

Escala el formato a 5 digitos.

short e

Escala el formato a 5 digitos. A˜ nade la e.

short g

El m´as conveniente de los short.

long

Escala el formato a 5 digitos.

long e

Escala el formato a 15 digitos. A˜ nade la e.

long g

El mas conveniente de los long.

rat

En forma de fracc´ıon.

hex

Hexadecimal (representaci´on en base 16)

bank

Establece dos cifras decimales.

compact

Suprime el exceso de l´ıneas.

loose

A˜ nade mas l´ıneas para que la salida sea mas legible.

La funci´on format cambia la visualizaci´on de los valores num´ericos mostrados en la ventana de comandos. Esta configuraci´on s´olo afectan la forma en la que los n´ umeros son visualizados, no como MATLAB los calcula.

Format, por si s´olo, cambia al formato por defecto, que es short. Format tipo, cambia al formato especificado por tipo. La funci´on get(0,’format’) verifica el formato actual. >> x=[17/6 25.786543e-3]; >> format short >> x x =

2.8333

0.0258

>> format short e >> x x =

2.8333e+000

2.5787e-002

>> format short g >> x x =

2.8333

0.025787

2.

Matlab

49

>> format long >> x x =

2.833333333333334

0.025786543000000

>> format long e >> x x =

2.833333333333334e+000

2.578654300000000e-002

>> format long g >> x x =

2.83333333333333

>> format bank >> x x =

2.83

0.03

>> format rat >> x x =

17/6

259/10044

>> format compact >> x x =

17/6

259/10044

>> format loose >> x x =

17/6

259/10044

0.025786543

2.

Matlab

2.11.2.

50

Cadena de Caracter

En MATLAB, cadena se refiere a un arreglo de caracteres UNICODE. La cadena es un vector, donde cada elemento de este vector es un car´acter. Creaci´ on de una cadena de caracteres (Arreglo de caracteres de 1 dimensi´ on) Se especifica el dato car´acter ubicado a los caracteres dentro de un par de comillas simples. >> curso=’seminario de aplicada ’ curso = seminario de aplicada >> whos curso Name

Size

Bytes

curso

1x22

44

Class

Attributes

char

como se puede apreciar cada caracter usa 2 bytes en su almacenamiento interno. las funciones class e ischar muestran la identidad de curso como un arreglo de caracterres. >> class(curso) ans = char >> ischar(curso) ans = 1

2.

Matlab

51

La funci´on de concatenaci´on atrcat o el operador de concatenaci´on MATLAB[], permiten unir 2 o mas caracteres generando un nuevo arreglo de caracteres. >> curco= ’seminario de aplicada’; >> universidad=’UNPRG’; >> strcat(universidad,’,’,curso) ans = UNPRG,seminario de aplicada Para concatenar cadenas verticalmente use strvcat. Creaci´ on de arreglos de caracteres de 2 dimensiones Cuando creamos arreglo de caracteres bidimensionales, debemos estar seguros que cada fila tenga la misma longitud. La siguiente matriz tiene 3 cadenas todas de 10 caracteres cada una. >> provincias=[’1Chiclayo1’;’Lambayeque’;’1Fere~ nafe1’] provincias = 1Chiclayo1 Lambayeque 1Fere~ nafe1 cuando creamos arreglos de caracteres desde cadenas de diferentes tama˜ nos, se debe rellenar las cadenas m´as 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 funci´on char. Char automaticamente rellena todas las cadenas a la longitud de la cadena de entrada mas larga.

2.

Matlab

52

>> provincias=char(’Chiclayo’;’Lambayeque’;’Fere~ nafe’) provincias = Chiclayo Lambayeque Fere~ nafe La funci´on deblank permite extraer una o m´as cadenas de un arreglo. >> pronvicia_mas_comercial=deblank(provincias(1,:)) pronvicia_mas_comercial = Chiclayo La funci´on deblank tambien permite remover los espacios en blanco. >> A{1,1}=’seminario

’;

>> A{1,2}=’aplicada

’;

>> A=deblank(A) A = ’seminario’

’aplicada’

Comparaci´ on de cadenas Se puede compara cadenas utilizando funciones u operadores. a) Comparaci´on con funciones ´ FUNCION

´ DESCRIPCION

strcmp

Determina si 2 cadenas son id´enticas. Reconoce may´ usculas y min´ usculas.

strncmp

Determina si los primeros n caracteres de 2 cadenas son identicos. Reconoce may´ usc. y min´ usc.

strcmpi

Determina si 2 cadenas son id´enticas. No diferencia entre may´ usculas y min´ usculas.

strncmpi

Dermina si los primeros n caracteres de 2 cadenas son id´enticos. No diferencia entre may´ usculas y min´ usculas.

2.

Matlab

53

Las siguientes cadenas str1 y str2 no son id´enticas, por lo que su comparaci´on devuelve el valor l´ogico 0 (falso) >> str1=’hola’; >> str2=’holla’; >> C=strcmp(str1,str2) C= 0 Los primeros tres caracteres de str1 y str2 son id´enticos( valor l´ogico 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) Comparaci´on utilizando operadores Se puede utilizar los operadores relacionales de MATLAB en arreglos de caracteres, siempre que los arreglos que se est´an comparando tengan iguales dimensiones, o uno sea escalar. Todos los operadores relacionales ( >,>=, A=’Manuel’; >> B=’Miguel’; >> A==B ans=

1

0

0

1

1

1

Comandos que identifican a un car´ acter isletter determina si un car´acter es una letra.

2.

Matlab

54

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

miercoles 28/07/1821

Findstr devuelve la posici´on inicial de una subcadena contenida a lo largo de la cadena. >> posicion=findstr(’28’,correccionfecha) posicion =

11

strmatch busca a trav´es de las filas de un arreglo de cadenas para encontrar las cadenas que empiecen con la serie de caracteres dada. Esta funci´on retorna los ´ındices de la filas que empiecen con estos caracteres. Evaluaci´ on de cadenas: Funci´ on eval eval: Eval´ ua una cadena que contiene una expresi´on MATLAB, sentencia o llamada a funci´on. Su sintaxis es : eval(’string’). >> x=[1:5]; >> y=eval(’(x+2)./x’) y = 3

2

>> cadena1=’sin(x*(pi/2))’;

5/3

3/2

7/5

2.

Matlab

55

>> z=eval(cadena1) z = 1

0.0000

-1

-0.0000

1

>> whos x y cadena1 Name

Size

Bytes

cadena1

1x13

26

char

x

1x5

40

double

y

1x5

40

double

2.11.3.

Class

Attributes

Conversi´ on de valores num´ ericos a cadenas y viceversa, y entre diferentes bases

COMANDO

´ OPERACION

chard

Convierte un entero positivo a su equivalente car´acter ( c´odigo UNICODE). Trunca cualquier parte fraccional

int2str

Convierte un entero positivo o negativo a un tipo car´acter.

num2str

Convierte un tipo num´erico a un tipo car´acter de precisi´on y formato espec´ıfico

mat2str

Convierte un tipo num´erico a un tipo car´acter de una determinada precisi´on, retornando una cadena MATLAB que puede ser evaluada

dec2hex

Convierte un entero positivo a un tipo car´acter de base hexadecimal

dec2bin

Convierte un entero positivo a un tipo car´acter de base binaria

dec2base

Convierte un entero positivo aa un tipo car´acter de cualquier base 2 a 36.

2.

Matlab

56

Conversi´ on de cadenas a valores numericos COMANDO

´ OPERACION

uintN

Convierte un car´acter a un c´odigo entero que representa el car´acter

str2num

Convierte un tipo car´acter a un tipo num´erico

str2double

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

hex2num

Convierte un tipo num´erico a un tipo car´acter de precisi´on 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 car´acter de base binaria.

base2dec

Convierte un entero positivo a un tipo car´acter de cualquier base desde 2 hasta 36.

2.12.

An´ alisis de error

Cualquier problema num´erico se resuelve a tr´avez 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 matem´atico permitimos la existencia de n´ umeros con una canti√ dad infinita de cifras. En este mundo define a 3 como el u ´ nico n´ umero positivo tal que al multiplicarse por el mismo produce el entero 3. Sin embargo, en el mundo de las computadoras, cada n´ umero representable tiene s´olo un n´ umero finito de cifras significa √ que s´olo los n´ umeros racionales se pueden representar con exactitud. Puesto que 3 no es racional, se da una representacion aproximada, una cuyo cuadrado no ser´a 3, pero si lo bastante cercano a 3 como para ser aceptable.

Existen dos causa principales de errores en los c´alculos n´ umericos. La primera es el error de truncamiento y la segunda es el error de redondeo. El error de truncamiento se debe a las aproximaciones utilizadas en la f´ormula matem´atica. Los errores de redondeo surgen al usar una calculadora o computadora para c´alculos con n´ umeros reales, pues la aritm´etica de la m´aquina s´olo utiliza n´ umeros con una cantidad

2.

Matlab

57

finita de cifras, de modo que los c´alculos se realizan u ´ nicamente con representaciones aproximadas de los n´ umeros verdaderos.

2.12.1.

Punto flotante

Un punto flotante es un n´ umero que es expresado mediante un exponente y una mantisa. Por ejemplo el n´ umero 10.75 puede ser expresado como. mantisa

exponente

10,75×

100

1,075×

101

En general, un n´ umero en punto flotante puede ser expresado como ±d0 .d1 d2 d3 . . . dk × k P bexpo donde : d0 .d1 d2 d3 . . . dk = di β −i , di ∈ N, 0 ≤ di < β, se conoce como la i=1

mantisa. (La precisi´on depende de k y de β)

¿ Qu´e se necesita para representar un n´ umero en punto flotante? El signo del n´ umero, el signo del exponente, digitos para el exponente , digitos para la amntisa. Dado que un n´ umero en punto flotante puede expresarse de distintas formas que son equivalentes, es necesario establecer una unica representaci´on. Es por ello que se trabaja con n´ umeros normalizados. Decimos que un n´ umero esta normalizado si el digito a la izquierda del punto o coma esta entre 0 y la base. En particular, decimos que un n´ umero binario esta normalizado si el digito a la izquierda del punto es igual a 1. 1,00 × 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 c´alculo que aprarecen al usar una colecci´on finita de n´ umeros de m´aquina para representar a todos los n´ umeros reales. Para examinar estos problemas, supondremos , para mayor claridad, que los n´ umeros de m´aquina se representan en la forma de punto flotante decimal normalizada ±0.d1 d2 . . . dk × 10n ,

0 ≤ di ≤ 9.

2.

Matlab

58

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

dk+1 ≤ 5

En la siguiente definici´on se describen dos m´etodos para medir errores de aproximaci´on. Definici´ on 2.12.1. (Errores absoluto y relativo) Supongamos que el valor exacto de un dato es p y disponemos de un valor aproximado p∗ .

2.

Matlab

59

Se denomina error absoluto de p∗ a la distancia que lo separa del valor exacto p, es decir |p − p∗ |. Se denomina error relativo de p∗ al cociente entre el error absoluto y el objeto ∗

|. En el caso p = 0 s´olo se utiliza el error absoluto. evaluado, es decir, | p−p p Consideremos los errores absolutos y relativos al representar p por p∗ en el ejemplo siguiente. Ejemplo 2.12.2.

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

y el error relativo es 0,333¯3 × 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,333¯3 × 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,333¯3 × 10−1

Este ejemplo se muestra el mismo error relativo, para una gran variedad de errores absolutos. Como una medida de la precisi´on, el error absoluto puede llevar a confusiones, en tanto que el error relativo es m´as significativo, pues toma en cuenta el tama˜ no del valor. La siguiente definicion utiliza el error relativo como una medida de las cifras significativas de precisi´on para una aproximaci´on. Definici´ on 2.12.2. El n´ umero p∗ aproxima a p con t cifras significativas si t es el mayor entero no negativo para el cual |p − p∗ | < 5 × 10−t |p| Ejemplo 2.12.3. 1.p = 3,141592,

p∗ = 3,14

|p − p∗ | 10−2 ≈ 0,000507 < |p| 2

Luego p∗ aproxima a p con 3 cifras significativas 2. p = 106 ,

p∗ = 999996, |p − p∗ | 10−5 ≈ 0,000004 < |p| 2

Luego p∗ aproxima a p con 6 cifras significativas

2.

Matlab

60

Definici´ on 2.12.3. Si t es el mayor entero para el cual |p − p∗ | <

10−t 2

se dice que p∗

aproxima a p con t decimales De regreso a la representaci´on de los n´ umeros en la m´aquina, vemos que f l(y) como punto flotante para el n´ umero y tiene el error relativo | y−fyl(y) |. Si se empleam K cifras decimales y el truncamiento para la representaci´on en la m´aquina de: y = 0.d1 d2 . . . dk dk+1 . . . × 10n entonces | y−fyl(y) | = | 10−k

0.d1 d2 ...dk dk+1 ...×10n −0.d1 d2 ...dk ×10n | 0.d1 d2 ...×10n

=|

0.dk+1 dk+2 ...×10n−1 | 0.d1 d2 ...×10n

=|

0.dk+1 dk+2 ... |× 0.d1 d2 ...

Como d1 6= 0, el valor m´ınimo del denominador es 0.1. El numerador est´a acotado superiormente por 1. entonces: | y−fyl(y) | ≤

1 0,1

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

De manera similar, una Cota para el error relativo cuando se usa aritme´etica con redondeo a K d´ıgitos es 0,5 × 10−k+1 La perdida de precisi´on debida al error de redondeo se puede evitar a menudo mediante la reformulaci´on del problema, como se muestra en el siguiente ejemplo. Ejemplo 2.12.4. La f´ormula cuadr´atica establece que las ra´ıces de ax2 + bx + c = 0, cuando a 6= 0, son x1 =

−b +



b2 − 4ac −b − y x2 = 2a

p√

b2 − 4ac 2a

Con aritmetica de redondeo a cuatro cifras, considere esta f´ormula aplicada a la ecuaci´on x2 + 62,10x + 1 = 0, cuyas ra´ıces son aproximadamente x1 = −0,01610723 y x2 = −62,08390. tenemos: f l(x1 ) =

−62,10 + 62,06 −0,04000 = = −0,02000. 2,000 2,000

una mala aproximaci´on a x1 = −0,01611, con el error relativo grande | − 0,01611 + 0,02000| = 2,4 × 10−1 . −0,01611 Por otro lado, el c´alculo de x2 es: f l(x2 ) = Tiene el error relativo peque˜ no

|−62,08+62,10| |−62,08|

−62,10−62,06 2,000

=

≈ 3,2 × 10−4 .

−124,2 2,000

= −62,10

2.

Matlab

61

Para obtener una aproximaci´on m´as precisa con redondeo a cuatro cifras para x1 , se cambia la forma de la f´ormula cuadr´atica mediante la racionalizaci´on del numerador. √ √ −b + b2 − 4ac −b − b2 − 4ac b2 − (b2 − 4ac) √ √ x1 = ( )= , 2a −b − b2 − 4ac 2a(−b − b2 − 4ac) lo que se simplifica como una f´ormula cuadr´atica alternativa x1 = Al usarlo tenemos: f l(x1 ) =

−2c √ b + b2 − 4ac

−2,000 62,10+62,06

=

−2,000 124,2

relativo 6,2 × 10−4 .

= −0,01610, con el peque˜ no error

2.13.

Matrices y vectores

2.13.1.

Introducci´ on y operaciones de matices num´ ericas

Comenzamos limpiando nuestra ´area de trabajo con : clear, clc, echo, off. 

1 2 3

  A = [1 2 3; 4 0 3; 9 3 2] A =  4 0 3  9 3 2



   es una matriz 3 × 3 

Podemos reemplazar un n´ umero cualquiera aij de la matriz como:  por un elemento  1 2 3     A(2, 1) = −3 Ahora tenemos A =  −3 0 3    9 3 2 Mencionaremos algunos operaciones en matrices que se emplean en MATLAB:

2.

Matlab

62

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

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

C=[i 2+1 1/3;

Otra matriz 3 × 3

4*5 1+i 1;2^(1/2) 9 1] d=1:0.5:3

d = (1; 1,5; 2; 2,5; 3), construimos el vector d a partir de 1 hasta 3 incrementando 0.5

size(d), size(A)

Calcula el orden de las matrices d y A.

e=1:3

Cuando no hay incremento se entiende que es 1

ee=1:-0.5:-4

El incremento puede ser negativo.

A.’

Matriz traspuesta

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 soluci´on del sistema de ecuaciones A · X = C Si A es invertible ’coincide’ con inv(A)*C

Y=A/C

Y es la soluci´on del sistemaY · C = A. En realidad, Matlab defineA/C=(A.’\C.’)’

A./C, A.\C

Matriz que resulta de dividir cada coeficiente de A (resp. de C) por el correspondiente de C (resp. de A)

2.

Matlab

2.13.2.

63

Submatrices num´ ericas

h=[2,1], k=[2,3] Dos vectores Submatriz obtenida deAqued´andonos con las filas dadas

A(h,k)

por h y las columnas dadas por k Vector que tiene las dos primeras componentes de la

A(2,1:2)

segunda fila deA A(2,:), C(:,1)

Segunda fila de A y primera columna de C

[A;b]

A˜ nadiendo la filaba la matriz A

[A,b.’]

A˜ nadiendo la columnabt a la matrizA

2.13.3.

Introducci´ on y operaciones de matrices simb´ olicas

A=sym(’[1,3;t,s]’) b=sym(’[1 2]’)



A=

1 3 t s



 es una matriz simb´olica

Definici´on de un vector simb´olico

c=[1 3;4/5 7/8], C=sym(c) Definici´on de otra matriz simb´olica D=’[1,2;e,f]’

Nota: D es una cadena de caracteres y no una matriz simb´olica

A+C, A*C

Suma y producto de A y C

A*C^(-1)

Divisi´on de A y C

C^3

C3

A(1,2)

Obteniendo el elemento a12 de la matriz A

A(1,2)=18

Haciendo que a12 valga 18

[A;b]

A˜ nadiendo la fila b a la matriz A

2.

Matlab

2.13.4.

64

Funciones matriciales

´ FUNCION

´ DESCRIPCION

eye(n)

Matriz identidad n × n

zeros(m,n)

Matriz cero de orden m × n

ones(m,n)

Matriz de unos

diag(x)

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

triu(A)

Parte triangular superior de la matriz A

tril(A)

Parte triangular inferior de la matriz A

hilb(m,n)

Matriz de Hilbert de orden m × n

magic(m,n)

Matriz m´agica 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 num´erica en simb´ olica

numeric(A)

Convierte una matriz simb´ olica en num´erica

det(A)

Determinante de la matriz A

determ(A)

Determinante simb´ olico

inv(A)

Inversa de la matriz A

inverse(A)

Inversa simb´ olica

rank(A)

Rango de A. Es tambi´en una orden simb´ olica

size(A)

Orden o tama˜ no de la matriz A

length(A)

M´aximo entre el n´ umero de filas y columnas

2.

Matlab

65

´ FUNCION

´ DESCRIPCION

[V,D]=eig(A)

Vectores propios y valores propios. V −1 AV = D

[V,D]=eigensys(A)

Vectores y valores propios, versi´on simb´ olica

trace(A)

Traza de A

poly(A)

Coeficientes del polinomio caracter´ıstico en orden decreciente que es como los trata normalmente

charpoly(A)

Versi´on simb´ olica de la anterior

orth(A)

Base ortogonal de la imagen de A

null(A)

Base del n´ ucleo de A, KerA

nullspace(A)

Versi´on num´erica de la anterior

[V,J]=jordan(A)

J = Forma can´onica de Jordan de A y V = Matriz de paso, es decir V −1 AV = J. Es tambi´en una orden simb´olica

Nota: Se puede aplicar una orden simb´olica a una matriz num´erica. Pero, en dicho caso la matriz se transforma en simb´olica.

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 representaci´on gr´afica de los puntos (1; 1), (2; 4) y (3;9) unidos por una l´ınea recta. Matlab, por omisi´on, 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 relaci´on de posibilidades de colores y marcas es la siguiente ´ OPCION

MARCA l´ınea continua

´ OPCION

COLOR

-

l´ınea continua

r

rojo

--

l´ınea de guiones

y

amarillo

.

l´ınea punteada

m

magenta

-.

l´ınea de guiones y puntos

c

turquesa

+

cruces

g

verde

*

asteriscos

b

azul

.

puntos

w

blanco

o

c´ırculos

k

negro

x

equis

Ejemplo 2.14.1. n=1:10 a=2.^n plot(a,’ob’) % Para ver m´ as opciones teclea la orden: help plot

2.

Matlab

67

Ejemplo 2.14.2. Introduciendo una a una en la ventana de comandos las siguientes ordenes obtendremos la representaci´on gr´afica de la funci´on 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’) R´otulos en los ejes x, y title(’Gr´ afica primera’)

T´ıtulo de la gr´afica

grid

sit´ ua una rejilla en la gr´afica

text(4,-0.1,’M´ ınimo’)

Sit´ ua un comentario en el punto (4,-0.1)

Gr´ aficas en el plano Presentaremos comandos al igual del plot son de igual importancia: COMANDOS

´ DESCRIPCION

bar(x,y)

Grafica barras verticales, donde y representa las frecuencias y x define los espacios en el eje x.

barh(x,y)

Grafica barras verticales, donde x representa las frecuencias y y define los espacios en el eje y.

stem(x,y)

Grafica bastones verticales, donde y representa las frecuencias y x define los espacios en ele eje x

stairs(x,y)

Grafica una curva escalonada.

polar(x,y)

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

pie(x)

Realiza un gr´afico de sectores relativo a los valores del vector x.

rose(x)

Dibuja un histograma angular relativo al vector y.

2.

Matlab

68

Ejemplo: 4.5 4

>> x=-4:0.2:4;

3.5

>> y=abs(sin(x).^3-x);

2.5

>> plot(x,y,’o’)

1.5

3

2

1 0.5 0 −4

−3

−2

−1

0

1

90

2

3

4

1

120

60 0.8

>> t=0:0.1:2*pi;

0.6 150

30 0.4 0.2

>> y=cos(3*t); 180

0

>> polar(t,y) 210

330

300

240 270

2.

Matlab

69

Matlab dispone de un grupo de comandos para representar formas geom´etricas especiales en el plano, estos se describen en la siguiente tabla. COMANDOS

´ DESCRIPCION

compass(x,y)

Dibuja un conjunto de vectores con origen en (0,0), y cuya magnitud y direcci´on viene determinadas por el m´odulo de z = x + iy.

feather(x,y)

Dibuja un conjunto de vectores con origen en el eje X, y cuya magnitud y direcci´on viene determinadas por el m´odulo de y.

fplot(’f’,[a,b])

Grafica la funci´on f en el intervalo [a, b].

ezplot(’f’,[a,b])

Grafica la funci´on f en el intervalo [a, b], adicionando un t´ıtulo por defecto.

loglog(x,y)

Realiza una gr´afica cartesiana con escala logaritmica en los ejes coordenados.

semilogx(x,y)

Realiza una gr´afica cartesiana con escala logaritmica en el eje x y escala normal en el eje y.

semilogy(x,y)

Realiza una gr´afica cartesiana con escala logaritmica en el eje y y escala normal en el eje x.

fill(x,y,c)

Dibuja una regi´on poligonal cuyos v´ertices son los elementos de los vectores columna x, y; el parametro c contiene el color a graficar.

Ejemplos: 1 0.8 0.6 0.4 0.2

>> fplot(’cos(x)’,[-3,3]);

0 −0.2 −0.4 −0.6 −0.8 −1 −3

−2

−1

0

1

2

3

Circunferencia Sea C la semicircunferencia unitaria. Para hallar los puntos que se obtienen al variar el par´ametro t en el intervalo [0,2π], con un incremento de π/4, us-

2.

Matlab

70

log(x)−x+2 1 0.8 0.6 0.4

>> ezplot(’log(x)-x+2’,[1,4]);

0.2 0 −0.2 −0.4 −0.6 1

1.5

2

2.5 x

3

3.5

4

amos el comando LINSPACE de la manera siguiente. linspace(0,2*pi,n); donde las dos primeras coordenadas nos indican el intervalo y la u ´ ltima nos indica en cuantas partes se va a dividir el intervalo de tal manera que al hacer correr el par´ametro t, nos arroje un bosquejo de la gr´afica. Siempre se recomienda colocar un n´ umero grande para dividir el intervalo. Ubicando y uniendo los puntos en el plano cartesiano, obtenemos: 1 0.8 0.6

>>t=linspace(0,2*pi,9);

0.4 0.2

>>plot(cos(t),sin(t))

0 −0.2 −0.4 −0.6 −0.8 −1 −1

−0.5

0

0.5

1

−0.5

0

0.5

1

1 0.8 0.6

>>t=linspace(0,2*pi,3000);

0.4 0.2

>>plot(cos(t),sin(t))

0 −0.2 −0.4 −0.6 −0.8 −1 −1

¿qu´e se deduce de ello?, ¿podemos explicar como Matlab realiza los ploteos de las funciones?

Para facilitar el c´alculo de curvatura y radio de curvatura, haremos uso de la siguiente proposici´on:

2.

Matlab

71

Proposici´ on 2.14.1. Si f : I → R una funci´ on diferenciable entonces su gr´ afica es una curva regular y su curvatura y radio de curvatura estan determinados por: f ′′ (t)

3

(1 + f ′ (t)2 ) 2 k(t) = 3 ; ρ(t) = f ′′ (t) (1 + f ′ (t)2 ) 2

Funci´ on Cuadr´ atica Su ecuaci´on 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; %im´ agenes de las componentes de x 7

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

6 5

>> hold on;

4 3

>> x=-4*t.^3;

2 1

>> z=(1/2)+3*t.^2;

0 −1 −2

>>

plot(x,z)

>> plot(x,z),grid on >> plot(x,z,’r’),grid on

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

−1

0

1

2

3

2.

Matlab

72

end >> sum sum =

10.0000

Haciendo uso de la proposici´on 1 anteriormente mencionada, obtenemos r´apidamente 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 ecuaci´on 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 ser´a: >> t = linspace(0,6*pi);

2 1.8 1.6

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

1.4 1.2

>> plot(x,y)

1 0.8 0.6 0.4 0.2 0

0

5

10

15

20

Ahora haremos el calculo para hallar la longitud de arco del intervalo [0, 2π] utilizando el siguiente comando. >> normderiv=inline(’sqrt((1-1*cos(t)).^2+(1*sin(t)).^2)’,’t’); >> quad8(normderiv,0,2*pi) ans = 8.0000

Agnesi Agnesi la funci´on que describe esta curva es f (x) =

a3 . x2 +a2

veamos para a=2.

El comando a utilizar ser´a: Cardioide Cardioide Ecuacion r = 1 + cos(θ) donde θ ∈ [0, 2π].su traza en matlab es: H´ elice 1. H´ elice circular recta. Sus ecuaciones param´etricas son: x=sent, y=sent, z=t, t ∈ [0, 10Π] . vamos a graficar la curva, usando plot3

2.

Matlab

73

2 1.8 1.6 1.4

>>f plot(’8/((x^2)+4)’,[-50,50])

1.2 1 0.8 0.6 0.4 0.2 0 −50

0

50

90

2 60

120

>>teta=linspace(0,2*pi,60);

1.5 1

150

30

0.5

>>r=1+cos(teta); 180

0

>>polar(teta,r) 210

330

240

300 270

2. Graficar la siguiente curva con ecuaciones parametricas: x=t*sen(t),y=t*cos(t),z = t2 . Representaci´ on de superficies Matlab permite realizar gr´aficos en tres dimensiones, tanto de lineales como de superficies, siendo sencillo crear objetos gr´aficos a trav´es de los siguientes comandos. Para ello revisaremos un documento que realizamos denominado ALGUNAS CURVAS Y SUPERFICIES EN MATLAB: Plot3(x,y,z) .- Dibuja el conjunto de puntos (x,y,z) en un sistema de tres dimensiones meshgrid(x,y) .- Crea arreglos bidimensionales a partir de los arreglos x e y, para elaborar la grafica de una superficie explicita z=f(x,y) contour(x,y,z) .- Grafica las curvas de nivel de la superficie explicita z=f(x,y) surf(x,y,z) .- Grafica una superficie explicita z=f(x,y) con los arreglos x , y e z; pintando cada una de las celdas surfc(x,y,z) .- Grafica una superficie explicita z=f(x,y) con los arreglos x , y e z; Proyectando las curvas de nivel en el plano xy surfl(x,y,z) .- Grafica una superficie explicita z=f(x,y) con los arreglos x , y e z; considerando una iluminaci´on en formato b´asico cylinder( ′ f ′ )(x,y,z) .- Grafica una superficie de revoluci´on generada por la rotaci´on

2.

Matlab

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

74

40

30

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

20

10

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

1 0.5

0

0

−0.5

−0.5 −1

−1

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

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

800 600 400 200

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

20

40 20

0

0

−20

−20 −40

−40

de la funci´on f=f(t) en el intervalo definido para t quiver3(x,y,z,u,v,w,c) .- Grafica los vectores de componentes (u,v,w) en los puntos (x,y,z),c indica el tama˜ no de los vectores

2.

Matlab

75

Paraboloide

8 7

>> [x,y]=meshgrid(-2:0.1:2);

6 5

>> plot3(x,y,x.^2+y.^2)

4 3 2 1 0 2 0 −2

2

1

0

−1

−2

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

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

5 4 3

centro (2,2,0)y r=3 >> surf(x,y,z)

2 1 0 −1 6 4

6 4

2

2

0

0 −2

−2

Vectores normales a una esfera: >>[x,y,z]=sphere(20); >>surfnorm(x,y,z) grafica la esfera y los vectores en cada punto de intersecci´on de los paralelos con los meridianos.

2.

Matlab

76

Toro de revoluci´ on Consideremos en R3 la circunferencia C = {(x, y, z)/(y−2)2 +z 2 = 1, x = 0},al rotar C alrededor del eje Z se obtiene el toro. Una parametrizaci´on para esta curva esta dado por ϕ(u, v) = (cos u(2 + cos v), sen u(2 + cos v), sen v),

0 6 u 6 2π;

0 6 v 6 2π

La gr´afica del toro se obtiene con la secuencia de comandos:

>> u=linspace(0,2*pi,41);v=u; >> [u,v]=meshgrid(u,v); 1

>> x=cos(u).*(2+cos(v));

0

>> y=sin(u).*(2+cos(v));

−1 3

>> z=sin(v); >> surf(x,y,z) >> axis([-3 3 -3 3 -1 1])

2 1 0 −1 −2 −3

−3

−2

−1

0

1

2

3

2.

Matlab

77

La Cinta de M¨ obius Es una superficie que se puede construir a partir de una tira de papel de forma rectangular ABCD. Torciendo la tira, una sola vez, de manera que se haga coincidir el v´ertice A con el v´ertice C y el v´ertice B con el v´ertice D obteniendo la superficie mencionada. Se genera con la siguiente funci´on vectorial: r(u, v) = ( v2 sen u2 , (1 + v2 cos u2 ) sen u, (1 + v2 cos u2 ) cos u),

0 6 u 6 2π;

−1 6 v 6 1

La gr´afica de la cinta de M¨obius se obtiene con la secuencia de comandos:

>> u=linspace(0,2*pi,30); >> v=linspace(-1,1,15); >> [u,v]=meshgrid(u,v); >> z=(1+v/2.*cos(u/2)).*cos(u); >> y=(1+v/2.*cos(u/2)).*sin(u); >> x=v/2.*sin(u/2); >> surf(x,y,z)

1.5 1 0.5 0 −0.5 −1 0.5

−1.5 2 1

0 0 −1 −2

−0.5

2.

Matlab

78

Elipsoide Para graficar el elipsoide simplemente se tiene e cuenta las parametrizaciones siguientes: ϕ(u, v) = (cos(u). cos(v), sen(u). cos(v), 3 sen(v)) . Luego, veamos como es su gr´afica 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);

3

2

>>

Y=sin(U).*cos(V);

1

0

>> Z=3*sin(V);

−1

−2

>> surf(X,Y,Z) axis([-1 2 -1 1 -3 3])

2 −3 1

1.5 0.8

1 0.6

0.4

0.2

0.5 0

−0.2

0 −0.4

−0.6

−0.5 −0.8

−1

−1

2.

Matlab

79

Preparaci´ on de pel´ıculas o Movies Matlab dispone de funciones para generar una pel´ıcula, la que se compone de varias im´agenes, denominadas frames. La funci´on getframe devuelve un vector columna con la informaci´on necesaria para reproducir la imagen que se acaba de representar en la ventana gr´afica activa, el tama˜ no de este vector columna depende del tama˜ no de la ventana,pero no de la complejidad del dibujo.

La funci´on moviein(n) reserva memoria para almacenar n frames. >> M=moviein(30); >> M=moviein(30); >> x=[-2*pi:0.2:2*pi];

1 0.8 0.6

>> for j=1:30 y=sin(x+j*pi/8); plot(x,y);

0.4 0.2 0 −0.2 −0.4

M(:,j)=getframe; end >> movie (M,10,15)

−0.6 −0.8 −1 −8

−6

−4

−2

0

2

4

6

8

Este ejemplo crea una pelicula de 30 imagenes (como la que se muestra), que se almacenan como las columnas de la matriz M. Una ves creada la pelicula, se puede visualizar el n´ umero de veces que se desee con el comando movie, en el ejmplo se va a representar 10 veces pelicula anterior , a 15 im´agenes por segundo (los dos ultimos parametros son opcionales).

Hay que se˜ nalar que en Matlab no es lo mismo un movie que una animaci´on. Una animacion es simplemente una ventana gr´afica que va cambiando como consecuencia de los comandos que se va ejecutando. Un movies es una animacion grabada o almacenada en memoria previamente.

2.

Matlab

80

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

Un ejemplo mas sencillo en curvas es la siguiente animaci´on de la Helice circular recta.(hacer correr un punto en su traza de dicha curva)

2.

Matlab

81

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

>> syms t 5

>> x=cos(t);

4

>> y=sin(t); z

3

>> z=t./(2*pi); >> ezplot3(x,y,z,[0,10*pi],’animate’)

2 1 0 1 0.5

1 0.5

0

0

−0.5

−0.5 −1

y

−1

x

Pl´ atano: Para modelar ´esta figura hemos utilizado el homeomorfismo que existe entre el elipsoide y la figura del pl´atano, es decir, simplemente hemos perturbado en alguna direcci´on a alguna coordenada del elipsoide. En nuestro caso, sean las ecuaciones param´etricas del elipsoide: ϕ(u, v) = (cos(u). cos(v), sen(u). cos(v), 3 sen(v)) Ahora, perturbamos en la direcci´on de la primera coordenada para generar la gr´afica del pl´atano, entonces nuestra nueva ecuaci´on ser´ıa la siguiente: ϕ(u, v) = (cos(u). cos(v) + 2. sen2 (v), sen(u). cos(v), 3 sen(v)) Veamos a continuaci´on 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);

3

2

1

>> X=cos(U).*cos(V)+2*sin(V).^2; >>

Y=sin(U).*cos(V);

0

−1

−2

>> Z=3*sin(V); >> surf(X,Y,Z)

−3 1 0.5 0 −0.5

axis([-1 2 -1 1 -3 3])

−1 −1

−0.5

0

0.5

1

1.5

2

2.

Matlab

2.14.2.

82

Conveniencia de los ficheros m

Como se habr´a podido observar es bastante inc´omodo 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 extensi´on de dicho fichero. En esta secci´on vamos a aprender a editar y ejecutar un fichero m, pero antes vamos a hacer unos comentarios acerca del programa Matlab. Dentro del ordenador, el programa Matlab tiene la siguiente estructura Archivos de programa MATLAB bin

Carpeta fundamental(..\Matlab\bin)

help toolbox .. . work Mt

Por defecto, aqu´ı se guardan nuestros archivos Carpeta de M´etodos(..\MATLAB*\work\Mt)

La carpeta bin es fundamental ya que en ella se encuentra el ejecutable de Matlab. Por defecto, en la carpeta ..\Matlab*\work se guardan todos los archivos que realicemos en nuestras sesiones con Matlab y es la raz´on que justifica que nosotros colguemos de esta carpeta la subcarpeta Mt. En ella tendremos todos los ficheros que son necesarios para ejecutar todos los listados de estas pr´acticas y que se caracterizan por tener en su nombre un gui´on 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 instrucci´on editpath 2. En la venta que nos aparece vamos al men´ u ’Path’ y seleccionamos ’Add to Path’. 3. En la nueva ventanita, seleccionamos la carpeta Mt y salimos dando a ’OK’.

2.

Matlab

83

4. Salimos de la ventana de editor del ’path’, nos preguntar´a si queremos conservar los cambios para futuras sesiones y le decimos que s´ı.

2.

Matlab

84

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

Para ello vamos al men´ u File\New\M-file

editamos

Escribimos el contenido del fichero m. En esta pr´actica, escribimos el listado de la pr´actica anterior

guardamos el fichero m

Vamos al men´ u File\save y damos el nombre 1grafo.m al fichero que hemos editado

ejecutamos work\cbgrafo.m

Vamos a la ventana de comandos y escribimos1grafo

2.

Matlab

85

2.15.

Definici´ on de funciones

2.15.1.

Funciones de MATLAB

Damos la relaci´on de las funciones escalares m´as importantes de Matlab ´ FUNCION

´ DESCRIPCION

sin, asin

seno, arcoseno

cos, acos

coseno, arcocoseno

tan, atan

tangente, arcotangente

sinh, asinh

seno y arcoseno hiperb´olico

cosh, tanh

coseno y tangente hiperb´olico

abs(x), abs(z)

valor absoluto de r ∈ R y m´odulo 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 m´as pr´oximo

2.

Matlab

86

Y ahora damos la relaci´on de las funciones vectoriales m´as importantes de Matlab ´ FUNCION

´ DESCRIPCION

sum(x)

suma de las componentes de x

prod(x)

an´alogo con el producto

[y,i]=max(x)

y es la m´axima componente de x e i el lugar donde ocurre

[y,i]=min(x)

an´alogo al anterior con el m´ınimo

[y,i]=sort(x)

y es la ordenaci´on de las componentes de x de menor a mayor, i es el vector tal que x(i) = y, i.e. la reordenaci´on que hay que hacer

cross(v,w)

producto vectorial de v, w ∈ R2

Matlab cuenta con tres tipos fundamentales de funciones: funciones escalares, a un escalar le asignan otro escalar pero pueden aplicarse tambi´en 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 aplicaci´on sobre cada columna y las funciones matriciales las cuales est´an asignadas sobre matrices y su resultado puede ser un escalar, un polinomio o tambi´en una matriz. Las funciones matriciales m´as importantes ya han sido establecidas en la secci´on anterior. Es importante tener en cuenta que las funciones de Matlab pueden tener dos o m´as argumentos de salida, como ejemplo sirva la funci´on [V,D]=eig(A) que a una matriz cuadrada A le asigna los valores propios D y los vectores propios V , V −1 AV = D.

2.15.2.

Definici´ on funciones propias

En Matlab se puede definir sus propias funciones o subrutinas y asignarle el nombre que quiera con la misma limitaci´on que se tiene para nombrar un fichero. Esto es as´ı porque de hecho definir una funci´on propia consiste sencillamente en la creaci´on de un fichero m que ha de tener por nombre el mismo nombre que el de la funci´ on. Para entenderlo, hacemos la siguiente ejercicio.

2.

Matlab

87

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

obteniendo xmed=3 y cd=55. Ejemplo 2.15.2. Definimos la funcion g(x) = − sen(x)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) obteni´endose que el m´ınimo se produce para x = 1,19028. Si nuestra tolerancia para el error fuera de 10−8 entonces ejecutaremos >> fminbnd(’ddexpn’,1,2,optimset(’TolX’,1e-8,’Display’,’iter’))

2.

Matlab

88

con ello, adem´as, conseguiremos que se nos informe del n´ umero de iteraciones necesario y del car´acter del m´ınimo.

Matlab no cuenta con la operaci´on fmaxbnd an´aloga a la anterior. Si nosotros quisi´eramos hallar el m´aximo de una funci´on 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 funci´on de varias variables, lo cual se hace con la orden → >> fminsearch(’funci´on’,− x ,opciones) 0

que funciona de forma an´aloga 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 funci´on. Ejemplo 2.15.3. Minimizar la funci´on f (x, y) = sen(xy) en un entorno del origen de coordenadas. >> fminsearch(’sin(x(1)*x(2))’,[0,0]) ans= 1.0268 -1.5298

Cap´ıtulo 3

´ INTERFAZ GRAFICA DE USUARIO

3.1.

Conceptos Previos

3.1.1.

Iniciando una Interfaz Gr´ afica GUI

Para ingresar al entorno de la interfaz gr´afica 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 opci´on por defecto, es decir, el formulario en blanco (Haga clic en OK)

3.

Interfaz Gr´ afica de Usuario

90

Aparece una nueva ventana que presenta un ´area gris en modo de rejas. Esta ´area es la denominada layout o formulario de la interfaz gr´afica. es la zona en donde dise˜ naremos la presentaci´on agregando los controles o botones que se seleccionaran desde la paleta del lado izquierdo.

3.1.2.

Tipos de control

Botones simples Botones de selecci´on Botones de opci´on Barras de desplazamiento Cajas de selecci´on desplegable Cajas de texto

3.

Interfaz Gr´ afica de Usuario

Usted puede mostrar los nombres de los controles. Haga clic en File→ Preferences. Active la opci´on: show name in component pallete:

91

3.

Interfaz Gr´ afica de Usuario

92

Entre los principales botones tenemos: a) Push Button: Este b´oton genera una acci´on cuando el usuario hace un clic sobre ´el (por ejemplo, un bot´on OK puede cerrar una caja de di´alogo). Para acceder a las propiedades de cualquier control, hacer clic derecho y seleccionar la opci´on Property Inspector. Las principales propiedades de pusg button son: String: esta propiedad posee la cadena de caracteres que se mostrar´an sobre el bot´on Tag: es el nombre que identifica al contador en la subfunci´on del archivo m o callback. Debe ser un nombre descriptivo (por ejemplo closebutton). Cuando el usuario pulsa el pushbutton, su callback se ejecuta. No devuelve valor ni mantiene alg´ un estado.

b) Slider: Los deslizadores o barras de desplazamiento permiten explorar una larga lista de elementos, acepta la entrada num´erica dentro de un rango especifico, permiti´endole al usuario mover una barra corrediza. El desplazamiento de la barra se efect´ ua presionando el bot´on del mouse y arrastrando la diapositiva, o pulsando el bot´on que posee una flecha. La ubicaci´on de la barra indica un valor num´erico. Existen 4 propiedades que controlan el rango y el tama˜ no de paso del deslizador: Value: contiene el valor actual del deslizador. Max: define el valor 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 tama˜ no de un paso del deslizador con respecto al rango, el valor por defecto es [0,010,10], proporciona un 1 % de cambio para los clics en las flechas y un 10 % de cambio para los clics.

Estos valores pueden ser modificados efectuando los cambios en las propiedades del deslizador.

3.

Interfaz Gr´ afica de Usuario

93

c) Radio button: Este control se utiliza para seleccionar una opci´on de un grupo de opciones (es decir, s´olo un bott´on puede estar seleccionado). Para seleccionar un radiobutton, pulse el bot´on 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 bot´on est´a seleccionado. Value=Min=0, el bot´on no esta seleccionado.

d) Checkbox: Se utilizan para proporcionar al usuario varias opciones de las que se puede elegir una o m´as cuando se pulsa sobre la casilla de verificaci´on. 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 est´a verificada Value=Min=0, la casilla no est´a 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 num´ericos, debe convertir previamente los caracteres a n´ umeros, usando el comando strdouble (convierte la cadena a un tipo double).

3.

Interfaz Gr´ afica de Usuario

94

f) Static Text: Se utiliza para mostrar texto que el usuario no puede modificar. Se utiliza frecuentemente para etiquetar otros controles o indicar valores a un deslizador. Los usuarios no pueden cambiar interactivamente el texto, por eso no hay manera de invocar a la rutina del calback asociado con ´el.

g) Popup menu: Permite visualizar una lista de opciones cuando los usuarios presionan la flecha. Los popmenus son u ´ tiles cuando deseamos proporcionar opciones m´ utuamente exclusivas y no usar mayor cantidad de espacio. String: contiene la lista de cadenas desplegadas en el popmenu. Value: Contiene en el ´ındice del ´ıtem seleccionado de la lista de cadenas. El primer item en la lista tiene el indice 1. Cuando no esta abierto un popmenu, la opci´on 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 m´as. String: Contiene la lista de cadenas visualizadas en el Listbox. Value: contiene el ´ındice del ´ıtem seleccionado de la lista de cadenas. El primer ´ıtem en la lista tiene el ´ındice 1. Si el usuario selecciona m´ ultiples ´ıtems, entonces el value es un vector de ´ındices. Min-Max¿1, se permite la selecci´on m´ ultiple. Min-Max¡=1, no se permite la selecci´on multiple. ListoxTop: es un ´ındice en la serie de cadenas definidas por la propiedad string y debe tener un valor entre 1 y el n´ umero de cadenas. Se necesita agregar otro controlador pushbutton que ejecute una acci´on asociada al seleccionar un item.

3.

Interfaz Gr´ afica de Usuario

95

i) Toggle Button: Genera una acci´on en ´ındicar un estado binario (on u off). Cuando se pulsa el bot´on toggle button aparece oprimido y se ejecuta las ´ordenes programadas dentro de su callback. El bot´on permanece oprimido a´ un cuando se suelta el bot´on del mouse. S´olo cuando se vuelve a hacer clic sobre el bot´on deja de estar oprimido. Value=Max=1, el bot´on est´a oprimido. Value=Min=0, el bot´on no esta oprimido.

j) Axes: Permite visualizar los gr´aficos. El siguiente c´odigo construye los ejes cuya propiedad tag es ejes 1. axes (Handles.ejes 1).

k) Panel: Proporciona agrupamientos identificable para los controles y les da una jerarquia. Si Ud. Agrega un panel luego de agregar otros controladores, necesita traerlos adelante utilizando los comandos bring to front (traer adelante) y send to back (enviar atr´as) en el men´ u del formulario.

l) Button Group: Permite agrupar los radiobutton para que se comporten mutuamente excluyentes.

m) ActiveX Control: La siguiente tabla contiene la lista de las propiedades m´as u ´ tiles para los controles. Para acceder a configurar estas propiedades basta con hacer clic derecho sobre el control y seleccionar la opci´on Property Inspector

3.

Interfaz Gr´ afica de Usuario

3.2.

96

Elaboracion de una Interfaz Grafica

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

2. Elegimos la opcion Create New GUI y seleccionamos Blank GUI(Default) (GUI en Blanco) y presionamos OK

3.

Interfaz Gr´ afica de Usuario

97

3. Si todo esta correcto nos aparecer´a la siguiente ventana

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

3.

Interfaz Gr´ afica de Usuario

98

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

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

3.

Interfaz Gr´ afica de Usuario

99

7. Si todo esta conforme nuestro GUI modificara sus dimensiones, luego del panel izquierdo hacemos clic en la opcion Axes y arrastamos una figura del tama˜ no del fondo de nuestro GUI

8. Del mismo panel elegimos Static Text para colocar un texto de fondo a nuestro GUI

3.

Interfaz Gr´ afica de Usuario

100

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

10. Una vez alli, ingresamos a las Propiedades del Text, ya sea con anticlic y luego clic en Property Inspector ´o dando doble clic en el rectangulo. Una vez alli modificaremos las opciones de FontSize, FontWeigth y String

3.

Interfaz Gr´ afica de Usuario

101

11. Una vez hechas esas modificaciones solo arrastaremos de cualquier esquina de nuestro rectangulo para visualizar nuestro texto completamente.

12. De nuestro Panel hacemos clic en la opcion Panel

3.

Interfaz Gr´ afica de Usuario

102

13. De la misma forma que el texto arrastamos el cursor hasta formar un rectangulo.

14. Creamos un nuevo StaticText como en el paso 8, con las siguientes propiedades.

´ 15. Ahora ingresaremos a las propiedades de nuestro texto ’METODO DE LA BISEC´ y nos ubicamos en la propiedad BackgroundColor hacemos clic en ’+’ y CION’ modificamos las opciones red, green y blue con los valores 0.855, 0.894, 0.941 respectivamente.

3.

Interfaz Gr´ afica de Usuario

103

16. Haciendo anticlic en nuestro texto ’f(x):’ y luego Duplicate comenzamos a crear las opciones ’a:’, ’b:’, ’Tol = 10’, ’-’ si no ven por completo no hay nada de que preocuparse mediante las esquinas pronunciadas puede usted extender o contraer a su gusto. Se recomienda encuadrar el texto a lo m´as peque˜ no posible.

17. De nuestro Panel hacemos clic en la opcion Edit Text y formamos un rectangulo.

3.

Interfaz Gr´ afica de Usuario

104

18. Vayamos a las propiedades de nuestro Panel y modificamos Title, como se puede observar

19. Una vez alli, comenzamos a ordenar los StaticText y los Edit Text dentro de nuestro Panel Datos recuerde que al igual que los StaticText los Edit Text tambien pueden ser duplicados. 20. Aunque al principio nuestros elementos no esten bien alineados Matlab tiene una opcion llamada Align Objects ubicado como se muestra a continuacion

3.

Interfaz Gr´ afica de Usuario

105

21. Hacemos clic alli y nos aparecer´a la ventana siguiente. Para nuestro caso seleccionamos ’f(x):’ y nuestro Edit Text, seleccionando uno luego presionamos la tecla ’CONTROL’ y seleccionamos el otro (sin dejar de presionar CONTROL). Y seleccionamos las opciones del Align Objects como nos muestra la siguiente imagen

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

3.

Interfaz Gr´ afica de Usuario

106

23. Repetimos los pasos hasta alinear nuestros objetos y tener una apariencia similar a la siguiente.

24. Como podemos ver el color de fondo de ’Tol = 10’ sobresale en el Edit Text cercano a ’b:’ para ello la solucion es bastante simple, hacemos anticlic en el Edit Text y presionamos Bring to Front o con las teclas Control + F, asi como en la siguiente imagen.

3.

Interfaz Gr´ afica de Usuario

107

25. Creamos 3 nuevos StaticText y sus respectivos Edit Text y los alineamos como ya explicamos anteriormente .

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

3.

Interfaz Gr´ afica de Usuario

108

27. Ingresamos a las propiedades del Listbox y modificamos la opcion String borrando su contenido.

28. Comenzamos a Alinear nuestro Listbox con los otros objetos que hemos creado.

29. Asi mismo realineamos nuestros objetos.

3.

Interfaz Gr´ afica de Usuario

109

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

3.

Interfaz Gr´ afica de Usuario

110

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

32. Volvemos a nuestro Panel Izquierdo y elegimos la opcion Push Botton y hacemos clic alli.

3.

Interfaz Gr´ afica de Usuario

111

33. Duplicamos nuestro Boton dos veces y creamos un Panel llamado Operaciones. A nuestro primer Boton lo llamaremos Graficar y en sus propiedades modificaremos FontSize, FontWeigth, String.

34. A los otros dos botones los llamaremos Calcular, Salir con las mismas propiedades del anterior. Luego Alinearemos los botones haciendo uso de Align Objects

3.

Interfaz Gr´ afica de Usuario

112

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

36. Le colocamos un nombre en este caso Bisecci´ on y una ubicaci´on, luego hacemos clic en Guardar

3.

Interfaz Gr´ afica de Usuario

113

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

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

3.

Interfaz Gr´ afica de Usuario

114

39. En la ubicacion donde guardamos nuestro proyecto debemos agregar ademas la imagen que sera nuestro fondo en el GUI

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

3.

Interfaz Gr´ afica de Usuario

115

41. Antes de continuar haremos una peque˜ na prueba a nuestro GUI, haciendo clic en Run Biseccion.m o presionando F5

42. Donde tendremos el siguiente resultado

3.

Interfaz Gr´ afica de Usuario

116

43. Como podemos apreciar nuestra imagen no cumple todo el fondo de nuestro GUI por lo tanto aumentaremos las medidas de nuestro fondo ingresando a las propiedades del Axes y modificando lo siguiente: Width, Heigth, Tag como lo explica la imagen.

44. Una vez hecho este cambio, vamos a Biseccion.fig y hacemos clic en Run Figure o´ Control + T

3.

Interfaz Gr´ afica de Usuario

117

45. Una vez alli podemos darnos cuenta que la imagen de fondo cubre todo el proyecto. Pero otro detalle es que los cuadros y Axes estan en una mala posicion. Tanto s´olo ordeneras de un modo que puedan ser apresiadas y no interfiera con el fondo.

46. Despues de ubicar bien nuestros objetos deberiamos tenerlos ubicados aproximadamente asi.

3.

Interfaz Gr´ afica de Usuario

118

47. Ahora comenzaremos la programaci´on de nuestros Botones, en primer lugar trabajaremos con el Boton Graficar, hacemos anticlic luego vamos a View Callbacks y se desplayara un menu del cual escogeremos Callback

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

3.

Interfaz Gr´ afica de Usuario

119

49. Antes de continuar no debemos olvidar y verificar los Tag de cada uno de los objetos de nuestro GUI. Ingresando a sus propiedades.

edit1 grafica

edit4

edit3

edit2

edit5 listbox1 edit6

edit7

pushbotton1

pushbotton2

pushbotton3

50. Una vez verificado volvemos a nuestros codigo e ingresamos a configurar el boton Calcular ya sea haciendo anticlic y eligiendo Callback ´o desde Show Functions y escogiendo pushbotton2 Callback.

3.

Interfaz Gr´ afica de Usuario

51. Configuraremos el Boton Calcular con la siguiente programaci´on

120

3.

Interfaz Gr´ afica de Usuario

121

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

53. Terminada nuestra programaci´on ejecutaremos nuestro GUI, haciendo clic en Save and run Biseccion.m (F5) o presionando la tecla F5

3.

Interfaz Gr´ afica de Usuario

122

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

55. Mejoraremos nuestro GUI con opciones de Zoom y manejo en la grafica. Para ello volveremos a nuestro Biseccion.fig y luego damos clic en Toolbar Editor

3.

Interfaz Gr´ afica de Usuario

123

56. Seleccionamos uno a uno los instrumentos (tools) a utilizar y presionamos Add

57. Seleccionaremos Zoom In, Zoom Out, Pan, Data Cursor y presionamos OK

3.

Interfaz Gr´ afica de Usuario

124

58. Si hemos realizado todo correctamente y ejecutamos nuestra figura, deberemos tener lo siguiente:

59. En los Edit Text comenzamos a colocar los valores en este caso en ’f(x):’ pondremos ′ log(x) − x + 2′ en el intervalo de ’2’ a ’4’ con un error de 10−5 y luego presionamos el boton Graficar

3.

Interfaz Gr´ afica de Usuario

125

60. Una vez graficado, verificamos si nuestra raiz(zero) se encuentra en el intervalo que hemos elegido. Luego hacemos clic en el Boton Calcular

BIBLIOGRAF´IA [1] Buhmann, M. D. (2004). Radial Basis Functions: Theory and Implementations. Cambridge University Press. United Kingdom. ´ [2] Aleman M.; Alvarez L.; S´anchez J. An´ alisis Num´erico[en l´ınea]. [consulta 2012]. [3] Burden R.L; Faires J.D . (2001). Numerical Abalysis. Cengage Learning Latin America. [4] Cobos

J.

Apuntes

de

C´ alculo

Num´erico[en

http://ma1.eii.us.es/Material/Cal_Num_itis_Apuntes.pdf

l´ınea]. [consulta

2012] [5] Comer E.(2009) M´etodos Num´ericos Instituto Tecnologico de Tijuana. [6] Mathews J.; Fink K.(2000) M´etodos Num´ericos con MATLAB. Prentice Hall, Madrid. [7] Mej´ıa C.(2002) Invitaci´on al An´ alisis Num´erico. Universidad Nacional de Colombia, Medell´ın. [8] Mora W.F.(2010) Introducci´on a los M´etodos Num´ericos. Instituto Tecnologico de Costa Rica. [9] M¨ uller H. (1996) Una Introducci´ on al An´ alisi Num´erico. Universidad Mayor de San Sim´on. Cochabamba, Bolivia. [10] Nakamura, S. (1992). Met´odos Numericos Aplicados con Software. Pearson Educaci´on.

BIBLIOGRAF´IA

127

[11] A. Quarteroni, F. Saleri. (2006). C´ alculo Cientifico con MATLAB y Octave. Springer-Verlag, Italia, Milano. [12] Vel´asquez J.(2007) An´alisis Num´erico. Ediciones Uninorte. [13] Won Y. Yang , Wenwu Cao , Tae-Sang Chung , John Morris(2005) Applied Numerical Methods Using MATLAB. John Wiley Sons. [14] V. Dominguez. L. Rapun Matlab en cinco lecciones de Num´erico[en l´ınea]. http://www.unavarra.es/personal/victor dominguez/ [consulta 2012] [15] Carrasco V.(2011) M´etodos Numericos Aplicados a la Ingenier´ıa Problemas en Polymath y Matlab. MACRO [16] Morales M.(2010) Matlab R2010a M´etodos Num´ericos con Visualizaci´ on Gr´afica. MACRO [17] Amancio R., Orbegoso G., Mu˜ noz 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 [consulta 2012] [20] J. Cooper A Matlab Companior for Multivariable Calculus [21] Chavil M. Sistema experto en Maple Para el an´ alisis de Curvas y superficies en R3 [22] Gonz´ales M., S´anchez R. Gr´ aficas de curvas y superficies usando Matlab

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF