You are on page 1of 74

2014

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

Presentado por:
Mera Carrasco, Junior Lino

Malhaber Montenegro, Miguel Angel

Asesor:
Dr. Collantes Santisteban, Luis Jaime

UNPRG

UNIVERSIDAD NACIONAL
PEDRO RUIZ GALLO

FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS

ESCUELA PROFESIONAL DE MATEMATICA

M
etodos Num
ericos para el C
alculo
Cientfico con Matlab
TOMO 1
ECUACIONES NO LINEALES

Presentado por:

Mera Carrasco Junior Lino


Malhaber Montenegro Miguel Angel

Asesor:

Dr. Collantes Santisteban Luis Jaime

LAMBAYEQUE PERU
2014

Introducci
on
La presentacion de estos tomos tiene su origen en los Seminarios denominados FUN
DAMENTOS DE ECUACIONES NO LINEALES, INTERPOLACION,
DIFEREN E INTEGRACION
NUMERICA

CIACION
PARA EL CALCULO
CIENTIFICO y

CALCULO
CIENTIFICO DE ECUACIONES NO LINEALES, INTERPOLACION,
E INTEGRACION
NUMERICA

DIFERENCIACION
CON MATLAB desarrollados
en Diciembre del 2012 como investigacion de los cursos de Seminario de Matematica
Pura y Aplicada de la carrera profesional de Matematicas de la Universidad Nacional
Pedro Ruiz Gallo con el asesoramiento del Dr. Luis Jaime Collantes Santisteban, dichos
trabajos enfocaban la parte teorica y practica de algunos temas del Calculo Cientfico.

Estos tomos no son documentos comerciales, por el contrario decidimos trabajar para
que se encuentre al alcance de todos, es bien sabido la dificultad que tienen estudiantes
y profesionales de ingeniera, ciencias medicas, ciencias economicas entre otras para idealizar sus problemas y desarrollar un modelo matematico adecuado en algunos casos es
difcil porque la aplicacion resulta excesivamente compleja o los metodos analiticos no se
adecuan muy bien a sus resultados por ello es conveniente el uso de metodos numericos
los cuales conducen a soluciones aproximadas pero mas manejables y se puede dar uso
a un ordenador provisto de un software adecuado, para nuestro caso Matlab.

Metodos Numericos para el Calculo Cientfico con Matlab esta divido en 7 tomos:

TOMO 0 Conceptos Previos


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

Metodos Numericos para el Calculo Cientfico con Matlab, explicara de manera sencilla
y con ejemplos el uso y la programacion de Interfaces Graficas de Usuario (GUI) as como el clasico uso de los archivos .m y por supuesto la solucion manual.

Este TOMO denominado Ecuaciones No Lineales esta dividido en tres captulos:

En el primero revisaremos la parte teorica sobre las solucion de Ecuaciones No Lineales


en la busqueda de las raices para encontrar soluciones aproximadas para una funcion
matematica dada.

En el segundo captulo solucionaremos problemas mediante el uso de nuestras Interfaces


Graficas con los distintos metodos de solucion y verificaremos cual es el mas efectivo
para distintos problemas.

Dejaremos para el final los codigo fuente utilizados en la creacion de las interfaces graficas.

Por favor, soy Rodney McKay, difcil tarda unos segundos. Imposible, un par de minutos. Dr. Rodney McKay - Stargate Atlantis

INDICE GENERAL

1. Ecuaciones no Lineales

1.1. Metodo de Biseccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2. Metodo de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

1.2.1. Como terminar las iteraciones de Newton . . . . . . . . . . . . . .

16

1.2.2. Metodo de Newton de segundo orden . . . . . . . . . . . . . . . .

17

1.3. Metodo de la Secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

1.4. Iteracion de Punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

1.4.1. Como terminar las iteraciones de punto fijo . . . . . . . . . . . . .

21

1.5. Aceleracion utilizando el metodo de Aitken . . . . . . . . . . . . . . . . .

23

1.6. Polinomios algebraicos . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

1.6.1. Algoritmo de Horner . . . . . . . . . . . . . . . . . . . . . . . . .

27

1.6.2. Metodo de Newton-Horner . . . . . . . . . . . . . . . . . . . . . .

28

2. Aplicaci
on mediante GUIs

30

2.1. Metodo de la Biseccion . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

2.2. Metodo de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

2.3. Metodo de la Secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

2.4. Metodo del Punto Fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

2.5. Metodo de la Regla Falsa . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

2.6. Metodo de Aitken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

2.7. Metodo de Newton-Horner . . . . . . . . . . . . . . . . . . . . . . . . . .

43

2.8. Comparacion de Metodos Iteractivos . . . . . . . . . . . . . . . . . . . .

45

2.8.1. Analizando una funcion polinomica . . . . . . . . . . . . . . . . .

45

2.8.2. Analizando una funcion trascendental . . . . . . . . . . . . . . . .

52

3. Codigo Fuente de los GUIS

58

3.1. Metodo de la Biseccion . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

3.2. Metodo de Newton Horner . . . . . . . . . . . . . . . . . . . . . . . . . .

61

3.3. Metodo de Newton Raphson . . . . . . . . . . . . . . . . . . . . . . . . .

63

3.4. Metodo del Punto Fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

3.5. Metodo de la Regla Falsa . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

3.6. Metodo de la Secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

3.7. Metodo de la Aceleracion de Atiken . . . . . . . . . . . . . . . . . . . . .

71

Captulo 1

ECUACIONES NO LINEALES
En este captulo estudiaremos el problema de la b
usqueda de raices o ceros de una
ecuacion no lineal. La razon principal para resolver ecuaciones no lineales por medio
de metodos n
umericos es que esas ecuaciones carecen de solucion exacta con metodos
algebraicos , excepto para muy pocos problemas. La solucion analitica de las ecuaciones
polinomiales existe solo hasta el orden cuatro pero no existen soluciones en forma exacta
para ordenes superiores. Por lo tanto, las raices de esas ecuaciones no lineales se obtienen
mediante metodos numericos basados en procedimientos iterativos.
Los metodos numericos dise
nados para encontrar las raices son poderosos, aunque cada
uno tiene sus propias limitaciones y defectos. El metodo de biseccion consiste en encontrar una raz si se conoce un intervalo que contenga a la raz. Por lo tanto este metodo
necesita un esfuerzo preliminar para estimar un intervalo adecuado que contenga a la
raz deseada. El metodo de Newton necesita una estimacion inicial, pero no es necesaria
la estimacion de un intervalo. Interacion de punto fijo necesita un punto x0 capaz de
producir una sucesion que converja confiable y rapidamente a la b
usqueda de la raz con
cierto n
umero de interaciones. El metodo de Aitken permite acelerar la convergencia de
una sucesion, va interaciones de punto fijo. El metodo de Horner es un metodo muy
rapido y muy sencillo por que no requiere iteraciones y permite evaluar a aun polinomio
(y su derivada) en un punto x0 .

1.

Ecuaciones no Lineales

Definici
on 1.0.1. (M
etodo Iterativo) Es aquel metodo numerico en el que partiendo
de un valor x0 arbitrario, se calcula una sucesion x0 , x1 , x2 , . . . de forma recurrente,
mediante una relacion de la forma
xn+1 = g(xn ),

n = 0, 1, 2, . . .

donde, xi R y g : R R.
Los metodos iterativos tambien se utilizan en otros problemas numericos y, en general,
son muy poco vulnerables al crecimiento del error por redondeo.
Iteraci
on: Los pasos que se dan, en un algoritmo, para calcular un iterado, xn+1 , a
partir del iterado anterior, xn .

Definici
on 1.0.2. (Orden de Convergencia)Si la sucesion {xn }
n=0 converge a y
en = xn n 0, entonces existe una constante A > 0 y R > 0 tales que
|en+1 |
=A
n |en |R
lm

en este caso, se dice que la sucesion converge a con orden de convergencia R, y A es


la constante asintotica del error.

En particular, la convergencia con orden R = 2 se le llama cuadratica y la con orden


R = 3 c
ubica.
En general los metodos que generen sucesiones con alto orden de convergencia se aproximan mas rapidamente a la solucion que aquellos que generen sucesiones con bajo orden.

1.

Ecuaciones no Lineales

1.1.

M
etodo de Bisecci
on

Este metodo es el mas simple, aunque tambien el mas seguro y solido para encontrar
una raz en un intervalo, dado donde se sabe que existe dicha raz. Su u
nica ventaja es
que funciona a
un para funciones no analticas (ver definicion ??).
Sea f una funcion continua en el intervalo entre x = a y x = b (I (0) = [a(0) , b(0) ]).
El metodo de biseccion se basa en el hecho de que, para que un intervalo [a, b] tenga una
raz, basta que los signos de y(x) en los dos extremos sean opuestos, o bien que f (a) o
f (b) se anulen; es decir, f (a)f (b) 0 supongamos que es u
nico, y llamemosle .
El primer paso para utilizar este metodo es bisectar el intervalo [a, b] en dos mitades; a
saber, [a, c] y [c, b], donde c = (a + b)/2. Al verificar los signos de f (a)f (c) y f (c)f (b),
se localiza la mitad del intervalo que contiene la raz. Asi, si f (a)f (c) 0, el intervalo
[a, c] que incluye a x = a y x = c contiene a la raz en caso contrario, el intervalo
[c, b] = I (1) = [a(1) , b(1) ] tiene la raz. El nuevo intervalo que contiene a la raz se bisecta
de nuevo.

y=f(x)

C
a= a

a0
a1

b= b0

0
b

C
C

2
a

1
b
C

2
b

Figura 1.1: Interpretacion geometrica del metodo de biseccion.

1.

Ecuaciones no Lineales

10

Al repetir este proceso, el tama


no del intervalo (I (k) ) con la raz se vuelve cada vez
mas peque
no. Es decir: se toma el punto medio del intervalo formando una sucesion
{x(k) },tendera inevitablemente a puesto que la longitud de los intervalos I (k) tiende
a cero cuando k tiende a infinito. La iteracion se detiene cuando la mitad del intervalo
esta dentro de una tolerancia dada . El tama
no del intervalo despues de k pasos de la
iteracion es
I (k) =

(b a)
2k

donde el numerador es el tama


no del intervalo inicial. Esto tambien representa el maximo
error posible cuando la raz se aproxima mediante el k-esimo punto medio. Por lo tanto,
si la tolerancia del error esta dada por , el n
umero de pasos de iteracion necesarios es
el mnimo entero que satisface
(b a)
<
2k
o, en forma equivalente
k > log2

ba

Teorema 1.1.1. Supongamos que f C[a, b] y f (a).f (b) < 0. El metodo de biseccion
generan una sucesion {x(k) } que aproxima a un cero () de f , tal que
|x(k) | <

ba
,
2k

k1

Demostracion. para n 1, tenemos


b(k) a(k) =

1
2k1

(b a)

y (a(k) , b(k) )

Y como x(k) = 12 (a(k) + b(k) ) para toda k 1, se deduce que


1
ba
|x(k) | (b(k) a(k) ) = k
2
2

1.

Ecuaciones no Lineales

11

Ejemplo 1.1.1. Encuentre la raz positiva de f (x) = ln x x + 2 con una tolerancia de


104 para variable x.

[a, b]

[f (a), f (b)]

f (c)

[2,4]

[0.6931,-0.6137]

0.0986

[3,4]

[0.0986,-0.6137]

3.5

-0.2472

[3,3.5]

[0.0986,-0.2472]

3.25

-0.0713

[3,3.25]

[0.0986,-0.0713]

3.125

0.0144

[3.125,3.25]

[0.0144,-0.0713]

3.1875

-0.0282

[3.125,3.1875]

[0.0144,-0.0282]

3.15625

-0.00686

[3.125,3.15625]

[0.0144,-0.0686]

3.140625

0.003879

[3.140625,3.15625]

[0.00379,-0.0686]

3.1484375

-0.00153

[3.140625,3.1484375]

[0.00379,-0.00153]

3.14453125

0.00113

[3.14453125,3.1484375]

[0.00113,-0.000153]

3.146484375

-1.9861104

[3.14453125,3.146484375]

[0.00113,-1.9861104]

3.145507813

4.6753104

3.1459960494

1.34469104

[3.1445507813,3.146484375] [4.6753104,-1.9891104]
[3.145996094,3.146484375]

[1.34469104,-1.9861104]

3.146240235

-3.2070105

[3.145996094,3.146240235]

[1.34469104,-3.2070105]

3.146118165

5.119966105

[3.146118165,3.146240235]

[5.119932105,-3.2070105]

3.1461792

9.5642106

[3.1461792,3.146240235]

[9.5642105,-3.2070105]

3.146240235

9.5642106

Cuadro 1.1: Metodo de biseccion para ln x x + 2 con [2, 4].


Observamos en el cuadro cuadro 2.1 notamos que el error=Abs|3,14617923,146240235| =
6,1035 105 < 1 104 , es decir, que se ha cumplido con el criterio de convergencia
dada por la ecuacion (??) por lo tanto, el valor buscado es x = 3,1561792; luego de 14
iteraciones.

1.

Ecuaciones no Lineales

1.2.

12

M
etodo de Newton

El signo de la funcion dada f en los extremos del intervalo es la u


nica informacion
explotada por el metodo de biseccion. Se puede construir un metodo mas eficiente explotando los valores alcanzados por f y su derivada (en caso de que f sea diferenciable).
En ese caso,
y(x) = f (x(k) ) + f (x(k) )(x x(k) )
proporciona la ecuacion de la tangente a la curva (x, f (x)) en el punto x(k) .
Si pretendemos que x(k+1) sea tal que y(x(k+1) ) = 0, obtenemos:
x(k+1) = x(k)

f (x(k) )
,
f (x(k) )

k0

(1.1)

con tal de que f (x(k)) 6= 0. Esta formula nos permite calcular una sucesion de valores
x(k), el cual comienza con una aproximacion inicial x(0) . Este metodo se conoce como

metodo de Newton y corresponde a calcular el cero de f reemplazando localmente f por


su recta tangente (vease en la figura siguiente ).

Pendiente f'(x1 )

y=f(x)

(x1 , f(x 1 ))

x0

Pendiente f'(x 0 )

x2
x1

(x 0, f(x 0 ))

Figura 1.2: Interpretacion geometrica del metodo de Newton.

1.

Ecuaciones no Lineales

13

Hay muchas formas de aplicar el metodo de Newton, la mas com


un consiste en considerarlo graficamente. Otra posibilidad consiste en derivarlo como una tecnica que permite
lograr una convergencia mas rapida que la que ofrecen otros tipos de iteracion funcional.
Una tercera forma se basa en los polinomios de Taylor.
Desarrollando f en serie de Taylor en un entorno de un punto generico x(k) hallamos
f (x(k+1) ) = f (x(k) ) + (k) f (x(k) ) + O(( (k) )2 )

(1.2)

donde (k) = x(k+1) x(k) . Forzando a f (x(k+1) ) a ser cero y despreciando el termino
O(( (k) )2 ), podemos obtener x(k+1) en funcion de x(k) , como se establece en (1.1). A este
respecto (1.1) puede considerarse como una aproximacion de (1.2).
En general, el metodo de Newton no converge para todas las posibles elecciones de x(0) ,
sino solo para aquellos valores que estan suficientemente cerca de .
En la practica, se puede obtener un posible valor inicial x(0) recurriendo a una cuantas
iteraciones del metodo de biseccion o, alternativamente, a traves de una investigacion
de la grafica de f .
Si x(0) se escoge apropiadamente y es un cero simple (esto es, f () 6= 0) entonces el
metodo de Newton converge. En el caso en que f sea continuamente diferenciable hasta
su segunda derivada, se tiene el siguiente resultado de convergencia (ver definicion 1.0.2
).
x(k+1)
f ()
=
k (x(k) )2
2f ()
lm

(1.3)

Si f () 6= 0 el metodo de Newton se dice que converge cuadr


aticamente (o de orden
2). En el caso de ceros con multiplicidad m mayor que 1, el orden de convergencia
del metodo de Newton se degrada a 1. En tal caso uno podra recuperar el orden 2
modificando el metodo original (1.1) como sigue:
x(k+1) = x(k) m

f (x(k) )
,
f (x(k) )

k0

(1.4)

con f (x(k) 6= 0). Obviamente, este metodo de Newton modificado requiere el conocimiento a priori de m.

1.

Ecuaciones no Lineales

14

Teorema 1.2.1. Sea f C 2 [a, b], si [a, b] es tal que f () = 0 y f () 6= 0, entonces


existe > 0 tal que el metodo de Newton genera una sucesi
on x(k) ,

converge a para cualquier aproximaci


on inicial x(0) [ , + ].

k = 1, . . . , que

Demostracion. La demostracion se basa en analizar el metodo de Newton como un


esquema de iteracion x(k) = g(x(k) ), para k 1, con g(x) = x

f (x)
.
f (x)

Sea m un n
umero cualquiera en (0, 1). primero debemos encontrar un intervalo [
, + ] que g mapea en si mismo y que |g (x)| m para toda x ( , + ).

Como f () 6= 0 y f es continua, existe 1 > 0 tal que f (x) 6= 0 para x [1 , +1 ]


[a, b]. por tanto, g esta definida y es continua en [ 1 , + 1 ]. Tambien,
g (x) =

f (x)f (x)
,
[f (x)]2

para x [ 1 , + 1 ] y como f C 2 [a, b], tendremos g C 1 [ 1 , + 1 ]. por


consiguiente, f () = 0, asi que g () = 0.

Como g es continua y como 0 < m < 1, implica que existe , con 0 < < 1 , y
|g (x)| m, para todo x [ , + ].
Por el teorema del valor medio tenemos que para algun n
umero entre x y , |g(x)
g()| = |g ()||x |. por lo tanto,

|g(x) | = |g(x) g()| = |g ()||x | m|x | < |x p|.


Puesto que x [ , + ], se deduce que |x | < y que |g(x) | < . Todas
las hipotesis la proposicion 1.4.1 se satisfacen, de modo que la sucesion {x(k) },
1, . . . , definida por
x(k) = g(x(k1) ) = x(k1)

f (x(k1) )
f (x(k1) )

converge a para cualquier x(0) [ , + ].


Veamos un ejemplo del metodo de Newton(1.3) y su version modificada(1.4).

k =

1.

Ecuaciones no Lineales

15

Ejemplo 1.2.1. Aplicar el metodo de Newton, Newton modificado y calcular su orden


de convergencia a la funcion f (x) = x3 4x2 + 4x, partiendo de x(0) = 1,5.
Realizando operaciones elemntales tenemos f (x) = x(x 2)2 lo cual indica que = 2 es
un cero de multiplicidad 2 y partiendo de x(0) = 1,5 obtenemos los siguientes resultados.

Como podemos observar en el cuadro cuadro 2.2 , el metodo de Newton en en este caso
k

x(k)

|x(k) |

|x(k+1) |
|x(k) |

1.5

0.5

0.4

1.8

0.2

0.47

1.905882359

0.0941

0.49

1.954132539

0.04587

0.494

1.9773386164

0.02266

0.497

1.988734610

0.011266

0.498

1.994383304

0.0056167

0.499

1.997195612

0.0028044

0.499

1.998598791

0.00140121

0.499

1.999299641

0.00070036

0.4999

10

1.999649882

0.00035012

0.4999

11

1.999824956

0.00017504

0.4999

12

1.999912482

0.00008752

0.5

13

1.999956242

0.0000438

0.5

14

1.999978121

0.000021879

0.499

15

1.999989061

0.000010939

0.4999

16

1.999994530

0.00000547

0.5

17

1.999997265

0.000002735

0.5

Cuadro 1.2: Convergencia lineal de x3 4x2 + 4x en x(0) = 1,5


tiene un comportamiento lineal. Si comparamos los resultados obtenidos en el cuadro
2.3 y 2.4 , observamos que la rapidez de convergencia del metodo de Newton modificado
es mayor al metodo de Newton original.

1.

Ecuaciones no Lineales

16

x(k)

|f (xk )|

x(0) = 1,5

0.375

x(1) = 1,8

0.07234018

x(2) = 1,9058

0.01691

x(3) = 1,95409083

0.00411869

x(4) = 1,977318

0.001017276

Cuadro 1.3: Metodo de Newton para x3 4x2 + 4x en x(0) = 1,5


k

x(k)

|f (xk )|

x(0) = 1,5

0.375

x(1) = 1,89473684210526

0.02099431403

x(2) = 1,99691833590139

0.00001896406

x(3) = 1,99999761850615

0.000000000001

x(4) = 1,9999999999256

0.000000000001

Cuadro 1.4: Metodo de Newton modificado para x3 4x2 + 4x en x(0) = 1,5

1.2.1.

C
omo terminar las iteraciones de Newton

Las interaciones para encontrar despues de un n


umero infinito de estas y una tolerancia
, pueden terminarse para un menor valor de kmin para el cual se verifica las siguiente
desigualdad
|e(kmin ) | = | x(kmin ) | <

Este
es un test sobre el error. Puesto que el error es desconocido, necesitamos adoptar en
su lugar un estimador del error apropiado, el cual podamos estimar el verdadero error.
Para el metodo de Newton el estimador del error apropiado viene proporcionado por la
diferencia entre dos iterantes consecutivas. Esto significa que uno termina las iteraciones
en la etapa Kmin tan pronto como
|x(kmin ) x(kmin 1) | <

(1.5)

Este
es un test sobre el incremento.
El test sobre el incremento es satisfactorio cuando es un cero simple de f . Alternati-

1.

Ecuaciones no Lineales

17

vamente, uno podra usar un test sobre el residuo en la etapa k, r (k) = f (x(k) ).
Concretamente, podriamos parar las interaciones para el primer kmin para el cual
|r (kmin ) | = |f (x(kmin ) )| <

(1.6)

El test sobre el residuo es satisfactorio solamente cuando |f (x)| 1 en un entorno I


del cero .

1.2.2.

M
etodo de Newton de segundo orden

Si en lugar de considerar los dos primeros termino de la serie de Taylor se consideran


los tres primeros terminos, se representa con (k) a la diferencia entre xk+1 y x(k)
f (x(k+1) ) = f (x(k) ) + (k) f (x(k) ) +

( (k) )2 (k)
f (x )
2
(k)

)
igualando a cero f (x(k+1) ) y sustituyendo (k) por ff(x
, obtenemos:
(x(k) )
(k)

f (x ) +

(k)


1 f (x(k) ) (k)
f (x )
f (x ) = 0
2 f (x(k) )

(k)

Despejnado (k) se obtiene:


(k) =

f (x(k) )
f (x(k) )

f (x(k) ) (k)
f (x )
2f (x(k) )

De la ecuacion anterior se puede despejar el valor de x(k+1) :


x(k+1) = x(k)

f (x(k) )
f (x(k) )

f (x(k) ) (k)
f (x )
2f (x(k) )

(1.7)

este metodo considera un mayor n


umero de terminos de la serie por lo tanto converge
mas rapidamente que el metodo de Newton (1.1)

1.3.

M
etodo de la Secante

Una gran desventaja del metodo de Newton es el conocer f la cual es con frecuencia
dificil de hallar, luego, para evitarlo consideremos:
f (x) f (x(k) )
f (x ) =
x x(k)

(k)

(1.8)

1.

Ecuaciones no Lineales

18

y en (1.8) tomamos x = x(k1) para ontener:


f (x(k1) ) f (x(k) )
f (x ) =
x(k1) x(k)

(k)

(1.9)

y al reemplazar la aproximacion para f (x(k) ) dado en la formula de Newton se obtiene:


x(k+1) = x(k)

f (x(k) )
x(k1) f (x(k) )
x(k1) x(k)

= x(k)

f (x(k) )(x(k1) x(k) )


f (x(k1) ) f (x(k) )

(1.10)

La expresion (1.10) es llamado M


etodo de la secante, la cual necesita dos aproximaciones iniciales x(0) y x(1) , el punto obtenido x(2) es la interseccion del eje X y la
recta tangente que une (x(0) , f (x(0) )) y (x(1) , f (x(1) )) y se sigue asi sucesivamente. Este
metodo tiene la ventaja de conocer la derivada sin necesidad de derivar, sin embargo, la
convergencia no suele ser tan rapida.
El metodo de la Secante tiene una interpretacion geometrica analoga a la del metodo de
Newton. El valor x(k+1) representa la interseccion con el eje x de la recta que pasa por
los puntos (x(k1) , f (x(k1) )) y (x(k) , f (x(k) )), de ah el nombre de metodo de la Secante.
Esto se ilustra en la Figura 1.3
Y

k-1
x

xk

X
xk+1

y=f(x)

Figura 1.3: Interpretacion geometrica del metodo de la secante

Ejemplo 1.3.1. Encuentre la raz positiva aplicando el metodo de la secante en la


ecuacion f (x) = ln xx+2 = 0, asumiendo como valores iniciales a x(0) = 3, x(1) = 3, 15
con una tolerancia de 104.
Se concluye el proceso iterativo, siendo la raz buscada igual a = 3,146193209, luego
de tres iteraciones.

1.

Ecuaciones no Lineales

19

x(k+1)

x(1) = 3, 15

x(2) = 3,146150255

x(3) = 3,146193209

Cuadro 1.5: Metodo de la secante para ln x x + 2

1.4.

Iteraci
on de Punto fijo

Definamos ahora el concepto de punto fijo y mostremos resultados que nos permitan
decidir cuando este existe y si la iteracion de punto fijo converge o no.
Definici
on 1.4.1. Sea [a, b] y una funcion (x) : [a, b] R. es un punto fijo de
(x) si = ().
Ejemplo 1.4.1. Para la funcion f (x) = x cos(x), tiene un punto fijo = cos(), pero
ademas es un cero de la funcion.
Ejemplo 1.4.2. La funcion f (x) = x2 2, para x [2, 3], tiene puntos fijos en
x = 1 y en x = 2. (ver figura 1.4). Por otra parte, no toda funcion tiene puntos fijos.
Por ejemplo la funcion f (x) = ex . (ver figura 1.4 )

Y
y= x

y= e

-2
y=x
y=x

Figura 1.4: La funcion (x) = x2 2 tiene dos puntos fijos (izquierda), mientras que la
funcion (x) = ex no tiene ninguno (derecha)

Definici
on 1.4.2. Decimo que es un punto fijo de orden m de si (x) esta dada
por (x) = + (x )m q(x) con q(x) 6= 0.

1.

Ecuaciones no Lineales

20

Observe que si x = , la definicion coincide con la anterior.


Definici
on 1.4.3. La iteracion x(k+1) = (x(k) ),

k 0, se define como la iteracion

de punto fijo.
Ejemplo 1.4.3. El metodo de Newton (1.1) puede considerarse como un algoritmo
de punto fijo cuya funcion de iteracion es (x) = x

f (x)
.
f (x)

En adelante esta funcion

sera denotada por N (donde N quiere decir Newton).


Se puede conjeturar que si es una funcion continua y el limite de la sucesion {x(k) }
existe, entonces tal lmite es un punto fijo de . En la siguiente proposicion precisaremos
este resultado.
Proposici
on 1.4.1. Supongamos que la funci
on de iteraci
on en la definici
on (1.4.3)
satisface las siguientes propiedades:
1. (x) [a, b] para todo x [a, b];
2. es diferenciable en [a, b];
3. K < 1 tal que | (x)| K para todo x [a, b].
Entonces tiene un u
nico punto fijo [a, b] y la sucesi
on definida en la definicion
(1.4.3) converge a , cualquiera que sea la elecci
on del dato inicial x(0) en [a, b]. Ademas
x(k+1)
lm
= ()
k x(k)

(1.11)

Demostracion. Supongamos que (x) = + (x )q(x), entonces () = 0 y () 6= 0,


por el desarrollo de Taylor de (x(k) ) alrededor de , tenemos que.
(x(k) ) = + (x(k) ) () + O(( (k) )2 )
ahora por la definicion (1.4.3),
x(k+1) = + (x(k) ) () + O(( (k) )2 )
o sea que
x(k+1) = (x(k) ) () + O(( (k) )2 )
por lo tanto,
x(k+1)
= ()
k x()
lm

1.

Ecuaciones no Lineales

21

De (1.11) se deduce que la convergencia es lineal.


El metodo de Newton no es el u
nico procedimiento iterativo que posee convergencia
cuadratica. En efecto, se tiene la siguiente propiedad general.
Proposici
on 1.4.2. Supongamos que se satisfacen todas las hip
otesis de la Proposicion
1.4.1. Supongamos ademas que es dos veces diferenciable y que () = 0,

() 6= 0.

Entonces las iteraciones de punto fijo en la definici


on (1.4.3) convergen con orden 2 y
1
x(k+1)
= (x)
(k)
2
k (x
)
2
lm

(1.12)

Su demostracion es similar a la proposicion anterior.

1.4.1.

C
omo terminar las iteraciones de punto fijo

En general, las iteraciones de punto fijo se terminan cuando el valor absoluto de la


diferencia entre dos iterantes consecutivos es menor que una tolerancia prescrita .
Puesto que = () y x(k+1) = (x(k) ), usando el teorema del valor medio (ver Teorema
??) hallamos x(k+1) = () (x(k) ) = ( (k) )( x(k) ) con (k) I,x(k) , siendo
I,x(k) el intervalo con extremos y x(k) . Usando la identidad

x(k) = ( x(k+1) ) + (x(k+1) x(k) )


se sigue que
x(k) =

1
(x(k+1) x(k) )
1 ( (k) )

(1.13)

En consecuencia, si (x) 0 en un entorno de , la diferencia entre dos iterantes


consecutivos proporciona un estimador del error satisfactorio. Este es el caso para los
metodos de orden 2, incluyendo el metodo de Newton. Esta estimacion se hace menos
satisfactoria a medida que se aproxima a 1.

Ejemplo 1.4.4. Encuentre la raz real positiva de f (x) = ln xx+ 2, usando el metodo
de punto fijo, con una tolerancia de 104 para la variable x.
Tomando en consideracion que la raz real positiva se encuentra entre 2 y 4, tal como se
ha analizado en el ejemplo 1.1.1, tomemos como valor inicial x(0) = 3.

1.

Ecuaciones no Lineales

22

hacemos : x = ln x + 2, luego (x) = ln x + 2 , (x) =


la proposicion 1.4.1 tenemos. | (3)| =

1
3

1
,
x

aplicando la hipotesis de

= 0, 333 < 1, por lo tanto es convergente.

Aplicaremos el algoritmo de la definicion 1.4.3


k

x(k+1)

x(1) = 3,0986

x(2) = 3,1309

x(3) = 3,141337866

x(4) = 3,144648781

x(5) = 3,145702209

x(6) = 3,146037143

x(7) = 3,146143611

x(8) = 3,146177452

Error=|x(k+1) x(k) |

3,34934 104
3,384135 105

Cuadro 1.6: Metodo de iteracion de punto fijo para ln x x + 2 en x(0) = 3


Por tanto, en la iteracion 7 se cumple el criterio de convergencia, en consecuencia la raz
buscada es x = 3,146177452

1.

Ecuaciones no Lineales

Observaci
on 1.4.1.

23

1. Al despejas una funcion , hay que tener mucho cuidado,

puede que no cumpla la hipotesis de la proposicion 1.4.1. Si se continua el procedimiento iterativo, no se llega a obtener la solucion.
2. La funcion (x) = x2 1 tiene dos puntos fijos = (1

5)/2, sin embargo no

satisface las hipotesis para ninguno porque | ()| = |1 5| > 1.

1.5.

Aceleraci
on utilizando el m
etodo de Aitken

Hemos dicho que el metodo de punto fijo tiene convergencia lineal, pero hay un metodo
que se puede utilizar y converger cuadraticamente .

Alexander Aitken (1895-1967) descubrio un metodo para acelerar la convergencia de


otro metodo numerico. Basicamente consiste en generar una secuencia (x(k) ) a partir
de otra (x(k) ) que converge linealmente.

Supongamos que la secuencia (x(k) ) fue obtenida por el metodo del punto fijo y ahora
encontraremos como se define (x(k) ) .

1.

Ecuaciones no Lineales

Sea x(k) = (x(k1) ),

24

k 1. Si la sucesion {x(k) } converge linealmente a un punto fijo

de , de (1.11), deducimos que, para una k dada debe existir un valor (a determinar)
tal que
(x(k) ) = (x(k) )

(1.14)

de (1.14) tenemos que:


=

(x(k) ) x(k)
(x(k) ) x(k) + x(k) x(k)
=
1
1

o
= x(k) + ((x(k) ) x(k) )/(1 )

(1.15)

Ahora debemos calcular . Para ello, introducimos la sucesion

(k)

((x(k) )) (x(k) )
=
(x(k) ) x(k)

(1.16)

que cumple la siguiente propiedad:


Lema 1.5.1. Si la sucesion de elementos x(k+1) = (x(k) ) converge a ,
entonces lm (k) = ().
k

Gracias al Lema 1.5.1 podemos concluir, para un k dado, que (k) puede considerarse como una aproximacion del valor desconocido introducido anteriormente. De este
modo, utilizamos (1.16) en (1.15) y definimos un nuevo x(k+1) como sigue:
x(k+1) = x(k)

((x(k+1) ) x(k) )2
,
((x(k) )) 2(x(k) ) + x(k)

k0

(1.17)

Esta expresion se conoce como formula de extrapolacion de Aitken y, gracias a (1.17),


puede considerarse como una nueva iteracion de punto fijo para la funcion de iteracion
(x) =

x((x)) [(x)]2
((x)) 2(x) + x

1.

Ecuaciones no Lineales

25

Ejemplo 1.5.1. Calcular la raz simple = 1 de la funcion f (x) = ex (x 1), con una

tolerancia de 1010 , aplicando el metodo de Aitken.

Soluci
on. Primero encontraremos la funcion de iteracion.
ex (x1) = 0, desarrolando y sumando a cada miembro x1 tenemos: ex xex + x1 =
x1, al factorizar obtenemos: (ex +1)(x1) = x1 y despejando x del primer miembro
x1
ex + x
resulta: x = 1 + x
= x
= (x).
e +1
e +1
La funcion de iteracion encontrada cumple la condicion de convergencia del punto fijo :
1x
(x) = x
tal que |(1)| = 0 < 1.
e +1
Para mayor comodidad supongamos que y (k+1) = (xk+1 ) = x(k+1)
k=0
(0)

(0)

MPF: y (0) = x0 = 2,
Aitken: y (1) =

(0)

x1 = (2) = 1,1192029,
(0)

(0)

x0 ((x0 ))[(x0 )]2

(0)
(0)
(0)
((x0 ))2(x0 )+x0

(0)

(0)

x2 = (x1 ) = 1,02934289154

= 1,01913370346

k=1
(1)

MPF: y (1) = x0 ,
Aitken: y (2) =

(1)

(1)

x1 = (y (1) ) = 1,005074185,
(1)

(1)

(1)

x2 = (x1 ) = 1,0013596022

(1)

x0 ((x0 ))[(x0 )]2

(1)
(1)
(1)
((x0 ))2(x0 )+x0

= 1,0000257973

k=2
(2)

MPF: y (2) = x0 ,
Aitken: y (3) =

(2)

(2)

x1 = (y (2) ) = 1,0000069378,
(2)

(2)

x0 ((x0 ))[(x0 )]2

(2)
(2)
(2)
((x0 ))2(x0 )+x0

(2)

(2)

x2 = (x1 ) = 1,000001865866

= 1,000000000048314

k=3
(3)

MPF: y (3) = x0 ,
Aitken: y (4) =

(3)

(3)

x1 = (y (3) ) = 1,000000000012994,
(3)

(3)

x0 ((x0 ))[(x0 )]2


(3)
(3)
(3)
((x0 ))2(x0 )+x0

=1

Luego de 4 iteraciones obtenemos la raz antes mencionada.

(3)

(3)

x2 = (x1 ) = 1,000000000003495

1.

Ecuaciones no Lineales

1.6.

26

Polinomios algebraicos

Consideremos a un polinomio (f ) de grado n 0 de la forma (??), ademas el espacio


de todos estos polinomios (??) se denota por el smbolo Pn . Cuando n 2 y todos los
coeficientes ak son reales, si C es una raz compleja de pn Pn , entonces (el
conjugado de ) tambien es raz de pn . El teorema (??) motiva el empleo de metodos
numericos para calcular las raices de pn .
Para los metodos anteriormente vistos era importante un dato inicial o un intervalo
conveniente para la busqueda de la raz. En el caso de los polinomios, esto suele ser
posible sobre la base de los siguientes resultados.

Teorema 1.6.1. (Regla de los signos de Descartes) Denotemos


por V el n
umero de cambios de signo de los coeficientes {aj } y por k el
n
umero de races reales positivas de pn , cada una contada tantas veces
como indica su multiplicidad. Entonces k V y V k es par.

Ejemplo 1.6.1. El polinomio p6 (x) = x6 2x5 + 5x4 6x3 + 2x2 + 8x 8 tiene los
ceros {1, 2i, 1 i} y de este modo posee una raz real positiva (k = 1). En efecto, el
n
umero de cambios de signo V de sus coeficientes es 5 y por tanto k V y V k = 4
es par.
.
Teorema 1.6.2. (Cauchy) Todos los ceros de pn se incluyen en el crculo
del plano complejo
= {z C : |z| 1 + }, donde = max|ak /an |,

0 k n 1 (1.18)

1.

Ecuaciones no Lineales

1.6.1.

27

Algoritmo de H
orner

Este algoritmo permite calcular el polinomio y su derivada en un punto (z) de forma


muy sencilla. Realiza un procedimento llamdo metodo de deflacion. La ecuacion (??) es
equivalente a
pn (x) = a0 + x(a1 + x(a2 + . . . + x(ana + an x) . . .))

(1.19)

La expresion (1.19), tambien conocida como el algoritmo del producto anidado. El metodo de Horner evalua al polinomio pn rn un punto (z) usando el siguiente algoritmo de
division sintetica:
bn = an ,

(1.20)

bk = ak + bk+1 z,

k = n 1, n 2, . . . , 0

el siguiente polinomio con coeficientes que dependen del parametro z se llama polinomio
asociado a pn :
n1

qn1 (x; z) = b1 + b2 x + . . . + bn x

n
X

bk xk1

(1.21)

k=1

La relacion entre pn y qn1 esta dada por pn (x) = (x z)qn1 (x, z) + b0 , ver teorema
(??), donde se tiene : b0 = pn (z).
El algoritmo anterior (1.20) se puede realizar mediante una tabla de la siguiente manera
z

an

an1

an2

...

a1

a0

bn z

bn1 z

...

b2 z

b1 z

bn =

bn1 =

bn2 =

...

b1 =

b0 =

an

an1 + bn z

an2 + bn1 z

. . . a1 + b2 z

a0 + b1 z

Si z es una raz de pn , entonces tenemos b0 = pn (z) = 0 y por consiguiente pn (x) =


(x z)qn1 (x, z). En este caso la ecuacion algebraica qn1 (x, z) = 0 proporciona las
n 1 races restantes de pn (x).Esta observacion sugiere adoptar el siguiente criterio de
deflacion para calcular todas las races de pn :
para m = n, n 1, . . . , 1
1. Hallar una raz rm de pm con un metodo de aproximacion apropiado;
2. Calcular qm1 (x; rm ) utilizando (1.20)-(1.21)(habiendo definido z = rm );

1.

Ecuaciones no Lineales

28

3. Poner pm1 = qm1 .


En el siguiente parrafo proponemos un metodo que utiliza el metodo de Newton para la
aproximacion de las raices.

Ejemplo 1.6.2. Tomando el ejemplo 1.6.1, si p6 (x) = x6 2x5 + 5x4 6x3 + 2x2 + 8x8

y z = 1 tenemos que p6 (x) = (x + 1)(x5 3x4 + 8x3 14x2 + 16x 8) + 0 y p(1) = 0

1.6.2.

M
etodo de Newton-H
orner

Como su nombre sugiere, el metodo de Newton-Horner implementa el procedimiento


de deflacion utilizando el metodo de Newton para calcular las races rm . El metodo de
Newton explota convenientemente el algoritmo de Horner (1.20).
Sea qn1 el polinomio asociado (1.21) a pn . Tenemos:

pn(x) = qn1 (x, z) + (x z)qn1


(x, z)

si x = z se tiene pn (z) = qn1 (z, z).


Gracias a esta identidad, el metodo de Newton- Horner para la aproximacion de una
(0)

raz rj de pn toma la siguiente forma : dada una estimacion inicial rj


(k)

(k+1)
rj

(k)
rj

pn (rj )
(k)

pn (rj )

de la raz

(k)

(k)
rj

pn (rj )
(k)

(k)

qn1 (rj , rj )

(1.22)

Ahora utilizamos la tecnica de deflacion, explotando el hecho de que pn (x) = (x


rj )pn1 (x) Entonces procedemos a la aproximacion de un cero de pn1 y as sucesivamente hasta que sean procesadas todas las races de pn .

1.

Ecuaciones no Lineales

29

Ejemplo 1.6.3. Determine una raz del polinomio: p(x) = 3x5 2x4 + x2 7x 4
Soluci
on. Analizando el polinomio, existe una raz cercana a x = 2, consideremos
r (0) = 1,5 como la primera aproximacion. Efectuando la division se obtiene:
3

-2

4.5

3.75

5.625 9.9938 4.407

3 2.5

3.75

6.625

2.938

4.5

10.5

21.37

41.98

14.25 27.99

44.91

1.5

1.5
3

De donde

r (1) = 1,5

-7

0,407
44,91

r (2) = 1,4908

-4

0.407

= 1,491

Captulo 2

MEDIANTE GUIS
APLICACION
En analisis numerico un algoritmo de b
usqueda de races es un metodo numerico o algoritmo para encontrar las soluciones aproximadas de una ecuacion dada por la expresion
f (x) = 0 para una funcion matematica f dada. A la solucion x de la ecuacion se le llama
raz o cero de la funcion.

Este Capitulo trata sobre como encontrar races reales o complejas, aproximadas por
n
umeros de punto flotante, mediante la implementacion de Interfaces Graficas de Usuario
(GUI) en Matlab. Los metodos numericos de resolucion de ecuaciones no lineales suelen
ser metodos iterativos que producen una sucesion de valores aproximados de la solucion,
que se espera, que converja a la raz de la ecuacion. Estos metodos van calculando las
sucesivas aproximaciones en base a los anteriores, a partir de una o varias aproximaciones iniciales.

No abordaremos la teora de cada metodo, dado que esta se encuentra en el Capitulo I,


aqui compararemos los resultados con la implementacion de GUIs.

2.

Aplicaci
on mediante GUIs

2.1.

31

M
etodo de la Biseccion

1. Ejecutamos nuestro GUI. Biseccion, y escribimos la funcion log(x) x + 2 evaluada en el intervalo [1; 4] con una tolerancia 105 y presionamos GRAFICAR.

2. Como podemos observar tenemos una raiz entre 1 y 4. Por ello continuaremos y
haremos clic en CALCULAR

2.

Aplicaci
on mediante GUIs

32

Si revisamos el Listado Aproximaciones tendremos los siguientes resultados de


cada Iteracion:
2.500000000000000
3.250000000000000
2.875000000000000
3.062500000000000
3.156250000000000
3.109375000000000
3.132812500000000
3.144531250000000
3.150390625000000
3.147460937500000
3.145996093750000
3.146728515625000
3.146362304687500
3.146179199218750
3.146270751953125
3.146224975585938
3.146202087402344
3.146190643310547
3.146196365356445

Cuya raiz aproximada es 3.146196365356445

2.

Aplicaci
on mediante GUIs

2.2.

33

M
etodo de Newton

1. Ejecutamos nuestro GUI. NEWTON RAP, y escribimos la funcion x3 4 x2 +


4 x evaluada con el punto inicial x0 = 1,5 y presionamos GRAFICAR.

2. Como podemos observar tenemos una raiz entre 1 y 3. Por ello continuaremos y
haremos clic en CALCULAR

2.

Aplicaci
on mediante GUIs

34

Si revisamos el Listado Aproximaciones tendremos los siguientes resultados de


cada Iteracion:

1.500000000000
1.800000000000
1.905882352941
1.954132539092
1.977338616437
1.988734610385
1.994383303992
1.997195612087
1.998598791190
1.999299641276
1.999649881983
1.999824956318
1.999912481989

Cuya raiz aproximada es 1.999912481989

2.

Aplicaci
on mediante GUIs

2.3.

35

M
etodo de la Secante

1. Ejecutamos nuestro GUI. SECANTE, y escribimos la funcion log(x)x+2 evaluada en el intervalo [1; 4] con una tolerancia 105 y presionamos GRAFICAR.

2. Como podemos observar tenemos una raiz entre 1 y 4. Por ello continuaremos y
haremos clic en CALCULAR

2.

Aplicaci
on mediante GUIs

36

Si revisamos el Listado Aproximaciones tendremos los siguientes resultados de


cada Iteracion:

Aproximaciones
1.500000000000
1.714285714286
1.733333333333
1.732044198895
1.732050805123

Cuya raiz aproximada es 1.732050805123

2.

Aplicaci
on mediante GUIs

2.4.

37

M
etodo del Punto Fijo

1. Ejecutamos nuestro GUI. PUNTO FIJO, y escribimos la funcion log(x) x + 2

evaluada en el intervalo [1; 4] con una tolerancia 105 y presionamos GRAFICAR.

2. Como podemos observar tenemos una raiz entre 1 y 4. Por ello continuaremos y
haremos clic en CALCULAR

2.

Aplicaci
on mediante GUIs

38

Si revisamos el Listado Aproximaciones tendremos los siguientes resultados de


cada Iteracion:

3.098612288668
3.130954362450
3.141337866208
3.144648781218
3.145702208628
3.146037143013
3.146143610991
3.146177452352
3.146188208752
3.146191627625

Cuya raiz aproximada es 3.146191627625

2.

Aplicaci
on mediante GUIs

2.5.

39

M
etodo de la Regla Falsa

1. Ejecutamos nuestro GUI. REGLA FALSA, y escribimos la funcion log(x)x+2


evaluada en el intervalo [1; 4] con una tolerancia 105 y presionamos GRAFICAR.

2. Como podemos observar tenemos una raiz entre 1 y 4. Por ello continuaremos y
haremos clic en CALCULAR

2.

Aplicaci
on mediante GUIs

40

Si revisamos el Listado Aproximaciones tendremos los siguientes resultados de


cada Iteracion:

2.859075117368965
3.130335278557477
3.145381601692326
3.146151848695849
3.146191112138918

Cuya raiz aproximada es 3.146191112138918

2.

Aplicaci
on mediante GUIs

2.6.

41

M
etodo de Aitken

1. Ejecutamos nuestro GUI. AITKEN GUI, y escribimos la funcion (exp(x) +


x)/(exp(x) + 1) evaluada en el punto inicial 2 y presionamos GRAFICAR.

2. Continuaremos y haremos clic en CALCULAR

2.

Aplicaci
on mediante GUIs

42

Si revisamos el Listado Aproximaciones tendremos los siguientes resultados de


cada Iteracion:

1.119202 92 2
1.029342 89 2
1.007723 38 7
1.002065 43 2
1.000554 64 2
1.000149 10 6
1.000040 09 6
1.000010 78 3

Cuya raiz aproximada es 1.000010783

2.

Aplicaci
on mediante GUIs

2.7.

43

M
etodo de Newton-Horner

1. Ejecutamos nuestro GUI. NEWTON HORNER, y escribimos el polinomio x3


6x2 + 11x 6 representado como 1

6 11

6 evaluada en el punto inicial

x0 = 0 con una tolerancia 104 y presionamos GRAFICAR.

2. Posteriormente continuaremos y haremos clic en CALCULAR

2.

Aplicaci
on mediante GUIs

44

Si revisamos los Listados Raices e Iteraciones tendremos los siguientes resultados


de cada Iteracion:

Raices
1.000000 00 0
2.000000 00 0
3.000000 00 0

Iteracio ne s
6.000000 00 0
6.000000 00 0
2.000000 00 0

2.

Aplicaci
on mediante GUIs

45

2.8.

Comparaci
on de M
etodos Iteractivos

2.8.1.

Analizando una funci


on polinomica

En esta seccion analizaremos la solucion del problema propuesto en la pag. 41 del Libro
Calculo Cientifico con Matlab y Octave cuyo enunciado es el siguiente:

Problema. Al principio de cada a


no un banco deposita v euros en un fondo de inversion
y retira un capital de M euros al final del n esimo a
no. Queremos calcular el tipo
medio de interes anual r de esta inversion. Puesto que M esta relacionado con r con la
igualdad:

M =v

n
X
k=1

(1 + r)k = v

1+r
[(1 + r)n 1],
r

Deducimos que r es raiz de la ecuacion algebrica.


f (r) = 0,

donde f (r) = M v

n
X
k=1

(1 + r)k = v

1+r
[(1 + r)n 1].
r

Soluci
on. Datos Iniciales: M=6000 euros , v=1000 euros , n=5 a
nos , r=x ,
Replanteando nuestra ecuacion tendremos:

f (x) = 6000 1000 (1 + x)

((1 + x)5 1)
x

2.

Aplicaci
on mediante GUIs

Soluci
on 1. Utilizando el Metodo de la Biseccion.

46

2.

Aplicaci
on mediante GUIs

Soluci
on 2. Utilizando el Metodo de Newton.

47

2.

Aplicaci
on mediante GUIs

Soluci
on 3. Utilizando el Metodo del Punto Fijo.

48

2.

Aplicaci
on mediante GUIs

Soluci
on 4. Utilizando el Metodo de la Regla Falsa.

49

2.

Aplicaci
on mediante GUIs

Soluci
on 5. Utilizando el Metodo de Newton-Horner.

50

2.

Aplicaci
on mediante GUIs

Soluci
on 6. Utilizando el Metodo de la Secante.

51

2.

Aplicaci
on mediante GUIs

2.8.2.

52

Analizando una funci


on trascendental

En esta seccion analizaremos la solucion de una funcion trascendental, la cual posea


muchos ceros a lo largo de su grafica pero nos enfocaremos a encontrar su raiz entre los
puntos [1; 1,2].
Problema. Sea
f (x) =

100
10
sen( )
2
x
x

evaluada entre [1; 1,2]

Soluci
on. Al tratarse de una funcion trascendental solo podremos hacer uso de los
metodos de Biseccion, Regla Falsa, Newton, Secante y Punto fijo.

2.

Aplicaci
on mediante GUIs

Soluci
on 7. Utilizando el Metodo de la Biseccion.

53

2.

Aplicaci
on mediante GUIs

Soluci
on 8. Utilizando el Metodo de Newton.

54

2.

Aplicaci
on mediante GUIs

Soluci
on 9. Utilizando el Metodo del Punto Fijo.

55

2.

Aplicaci
on mediante GUIs

Soluci
on 10. Utilizando el Metodo de la Regla Falsa.

56

2.

Aplicaci
on mediante GUIs

Soluci
on 11. Utilizando el Metodo de la Secante.

57

Captulo 3

CODIGO FUENTE DE LOS GUIS

3.1.

Metodo de la Biseccion

Listing 3.1: Boton Graficar


f u n c t i o n p u s h b u t t o n 1 _ C a l l b a c k ( hObject , eventdata , handles )
f=g e t ( handles . edit1 , ' s t r i n g ' ) ;
f=inline ( f ) ;
a x e s ( handles . grafica )
h2=ezplot ( f ) ;
s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
g r i d on
s e t ( handles . edit5 , ' s t r i n g ' , ' ' )
s e t ( handles . edit6 , ' s t r i n g ' , ' ' )
s e t ( handles . edit7 , ' s t r i n g ' , ' ' )
s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' on ' )

3.

Codigo Fuente de los GUIS

59

Listing 3.2: Boton Calcular


f u n c t i o n p u s h b u t t o n 2 _ C a l l b a c k ( hObject , eventdata , handles )
clc
f=g e t ( handles . edit1 , ' s t r i n g ' ) ;
fun=inline ( f ) ;
a=str2doubl e ( g e t ( handles . edit2 , ' s t r i n g ' ) ) ;
b=str2doubl e ( g e t ( handles . edit3 , ' s t r i n g ' ) ) ;
n=str2doubl e ( g e t ( handles . edit4 , ' s t r i n g ' ) ) ;
listado= ' A p r o x i m a c i o n e s ' ;
h2=ezplot ( f , [ a 0.5 b + 0 . 5 ] ) ;
s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
h o l d on
g r i d on
r=(a+b ) / 2 ;
fa=fun ( a ) ;
fb=fun ( b ) ;
fr=fun ( r ) ;

u =[ r r ] ; v =[0 fr ] ;
a x e s ( handles . grafica )
d3=p l o t ( u , v , ' c o l o r ' , ' r ' ) ;
c=1;

i f fa fb< 0
w h i l e abs ( ba ) >= 10( n )
r=(a+b ) / 2 ;
fr=fun ( r ) ;
r1=num2str ( fr , ' %12.9 f ' ) ;
r2=num2str ( r , ' %12.9 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , r1 )
s e t ( handles . edit6 , ' s t r i n g ' , r2 )
d4=p l o t ( r , 0 , 'om ' ) ;
listado=strvcat ( listado , num2str ( r , ' %20.15 f ' ) ) ;
x=r ;
fr=e v a l ( f ) ;

i f fa fr<0
b=r ;
else
a=r ;
end
s e t ( d3 , ' XData ' , u , ' YData ' , v )
drawnow
s e t ( handles . listbox1 ,

' Value ' , 1 ) ;

s e t ( handles . listbox1 , ' s t r i n g ' , listado )


s e t ( handles . edit7 , ' s t r i n g ' , c )
c=c +1;

3.

Codigo Fuente de los GUIS

60

end
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' on ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' o f f ' )
else
msgbox ( 'NO EXISTE RAIZ EN ESE INTERVALO ' , 'AVISO ' , ' warn ' ) ;
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' on ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' o f f ' )
end
h o l d off

Listing 3.3: Boton Salir


opc=questdlg ( ' Desea s a l i r d e l programa ? ' , ' SALIR ' , ' S i ' , 'No ' , 'No ' ) ;
i f strcmp ( opc , 'No ' )
return ;
else
msgbox ({ ' G r a c i a s por u s a r n u e s t r o S o f t w a r e ' , . . .
' D e s a r r o l l a d o por : Miguel Angel Malhaber Montenegro ' , . . .
'
' Facebook : Matematicas . n e t
end
c l e a r , c l c , c l o s e ( gcbf )

J u n i o r Lino Mera C a r r a s c o ' , . . .


' } , ' Acerca de ' ) ;

3.

Codigo Fuente de los GUIS

3.2.

61

Metodo de Newton Horner

Listing 3.4: Boton Graficar


f u n c t i o n p u s h b u t t o n 1 _ C a l l b a c k ( hObject , eventdata , handles )
g l o b a l PX
f=str2num ( g e t ( handles . edit1 , ' s t r i n g ' ) ) ;
a x e s ( handles . grafica )
PX=vpa ( poly2sym ( f ) , 7 ) ;
h2=ezplot ( PX ) ;
s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
g r i d on
h o l d off
s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )
s e t ( handles . listbox2 , ' s t r i n g ' , ' ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' on ' )

Listing 3.5: Boton Calcular


clc
g l o b a l PX
a=str2num ( g e t ( handles . edit1 , ' s t r i n g ' ) ) ;
x0=str2double ( g e t ( handles . edit2 , ' s t r i n g ' ) ) ;
m=str2doubl e ( g e t ( handles . edit3 , ' s t r i n g ' ) ) ;
listado1= ' R a i c e s ' ;
listado2= ' I t e r a c i o n e s ' ;
tol = 10( m ) ; nmax = 1 0 0 0 ;

n=l e n g t h ( a ) 1; r o o t s = z e r o s ( n , 1 ) ; iter = z e r o s ( n , 1 ) ;
for k = 1: n
% I t e r a c i o n e s de Newton
niter = 0 ; x = x0 ;

d i f f = tol + 1 ;

w h i l e niter <= nmax & d i f f >= tol


[ pz , b ] = horner ( a , x ) ;
[ dpz , b ] = horner ( b , x ) ;
xnew = x pz / dpz ;

d i f f = abs ( xnew x ) ;

niter = niter + 1 ;
x = xnew ;
V ( k )=x ;
end

[ pz , a ] = horner ( a , x ) ;
roots (k) = x ;
iter ( k ) = niter ;

3.

Codigo Fuente de los GUIS

d4=p l o t ( x , 0 , 'om ' ) ;


h o l d on
listado1=strvcat ( listado1 , num2str ( x , ' %12.9 f ' ) ) ;
s e t ( handles . listbox1 ,

' Value ' , 1 ) ;

s e t ( handles . listbox1 , ' s t r i n g ' , listado1 )


listado2=strvcat ( listado2 , num2str ( niter , ' %12.9 f ' ) ) ;
s e t ( handles . listbox2 ,

' Value ' , 1 ) ;

s e t ( handles . listbox2 , ' s t r i n g ' , listado2 )


end
a x e s ( handles . grafica )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' o f f ' )
a=min ( V ) ;
b=max( V ) ;
h2=ezplot ( PX , [ a 0.5 b + 0 . 5 ] ) ;
s e t ( h2 , ' C o l o r ' , ' r ' , ' LineWidth ' , 2 )
h o l d on
g r i d on
return

Listing 3.6: Funcion Horner


f u n c t i o n [ y , b ] = horner ( a , z )
%
HORNER A l g o r i tm o de Horner
% Y=HORNER(A, Z) c a l c u l a
% Y = A( 1 ) ZN + A( 2 ) Z (N 1) + . . . + A(N) Z + A(N+1)
% usando e l a l g o r i t m o de Horner de l a
% division sintetica .
n = l e n g t h ( a ) 1;
b = z e r o s ( n+1 , 1 ) ;
b (1) = a (1) ;
f o r j =2: n+1
b ( j ) = a ( j )+b ( j 1) z ;
end
y = b ( n+1) ;
b = b ( 1 : end 1) ;
return

62

3.

Codigo Fuente de los GUIS

3.3.

63

Metodo de Newton Raphson

Listing 3.7: Boton Graficar


f u n c t i o n p u s h b u t t o n 1 _ C a l l b a c k ( hObject , eventdata , handles )
f=g e t ( handles . edit1 , ' s t r i n g ' ) ;
xo=str2double ( g e t ( handles . edit2 , ' s t r i n g ' ) ) ;
a x e s ( handles . grafica )
f=inline ( f ) ;
h2=ezplot ( f ) ;
s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
g r i d on
h o l d off
s e t ( handles . edit5 , ' s t r i n g ' , ' ' )
s e t ( handles . edit6 , ' s t r i n g ' , ' ' )
s e t ( handles . edit8 , ' s t r i n g ' , ' ' )
s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' on ' )

Listing 3.8: Boton Calcular


f u n c t i o n p u s h b u t t o n 2 _ C a l l b a c k ( hObject , eventdata , handles )
clc
f=g e t ( handles . edit1 , ' s t r i n g ' ) ;
xo=str2double ( g e t ( handles . edit2 , ' s t r i n g ' ) ) ;
n=str2doubl e ( g e t ( handles . edit3 , ' s t r i n g ' ) ) ;
listado= ' A p r o x i m a c i o n e s ' ;
f;
df= d i f f ( f ) ;
fun=inline ( f ) ;
dfun=inline ( df ) ;
clc

h2=ezplot ( f , [ xo1 xo +1]) ;


s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
h o l d on
g r i d on

x1=xofun ( xo ) / dfun ( xo ) ;
listado=strvcat ( listado , num2str ( xo , ' %20.12 f ' ) ) ;
listado=strvcat ( listado , num2str ( x1 , ' %20.12 f ' ) ) ;
c =2;
w h i l e abs ( x1xo ) >= 10( n )

3.

Codigo Fuente de los GUIS

xo=x1 ;
x1=xofun ( xo ) / dfun ( xo ) ;
listado=strvcat ( listado , num2str ( x1 , ' %20.12 f ' ) ) ;
drawnow
d4=p l o t ( x1 , 0 , 'om ' ) ;
s e t ( handles . listbox1 ,

' Value ' , 1 ) ;

s e t ( handles . listbox1 , ' s t r i n g ' , listado )


s e t ( handles . edit8 , ' s t r i n g ' , c )
fr=num2str ( fun ( x1 ) , ' %20.12 f ' ) ;
r=num2str ( x1 , ' %20.12 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , fr ) ;
s e t ( handles . edit6 , ' s t r i n g ' , r ) ;
c=c +1;
end
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' on ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' o f f ' )
h o l d off

64

3.

Codigo Fuente de los GUIS

3.4.

65

Metodo del Punto Fijo

Listing 3.9: Boton Graficar


f u n c t i o n p u s h b u t t o n 1 _ C a l l b a c k ( hObject , eventdata , handles )
clc
f=g e t ( handles . edit1 , ' s t r i n g ' ) ;
f=inline ( f ) ;
a x e s ( handles . grafica )
h2=ezplot ( f ) ;
s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
g r i d on
h o l d off
s e t ( handles . edit5 , ' s t r i n g ' , ' ' )
s e t ( handles . edit6 , ' s t r i n g ' , ' ' )
s e t ( handles . edit7 , ' s t r i n g ' , ' ' )
s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' on ' )

Listing 3.10: Boton Calcular


f u n c t i o n p u s h b u t t o n 2 _ C a l l b a c k ( hObject , eventdata , handles )
g=g e t ( handles . edit1 , ' s t r i n g ' ) ;
xo=str2double ( g e t ( handles . edit2 , ' s t r i n g ' ) ) ;
n=str2doubl e ( g e t ( handles . edit3 , ' s t r i n g ' ) ) ;
listado= ' A p r o x i m a c i o n e s ' ;
h2=ezplot ( g , [ xo1 xo +1]) ;
s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
h o l d on
g r i d on
x=xo ;
gxo=e v a l ( g ) ;
d3=p l o t ( xo , 0 , 'om ' ) ;
h=gxo ;
c=1;

w h i l e ( abs ( h ) >= 10( n )


x=xo ;
gxo=e v a l ( g ) ;
h=gxo ;
xo=x+gxo ;

& c <1001)

3.

Codigo Fuente de los GUIS

fr=num2str ( gxo , ' %20.15 f ' ) ;


r=num2str ( xo , ' %20.15 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , fr )
s e t ( handles . edit6 , ' s t r i n g ' , r )
listado=strvcat ( listado , num2str ( xo , ' %20.15 f ' ) ) ;
d4=p l o t ( xo , 0 , 'om ' ) ;
drawnow
s e t ( handles . listbox1 ,

' Value ' , 1 ) ;

s e t ( handles . listbox1 , ' s t r i n g ' , listado )


s e t ( handles . edit7 , ' s t r i n g ' , c )
c=c +1;
end

s e t ( handles . pushbutton1 , ' e n a b l e ' , ' on ' )


s e t ( handles . pushbutton2 , ' e n a b l e ' , ' o f f ' )
i f c >1000
s e t ( handles . edit7 , ' s t r i n g ' , ' Mayor a 1000 ' )
else
s e t ( handles . edit7 , ' s t r i n g ' , c )
end

h o l d off

66

3.

Codigo Fuente de los GUIS

3.5.

Metodo de la Regla Falsa

Listing 3.11: Boton Graficar


f u n c t i o n p u s h b u t t o n 1 _ C a l l b a c k ( hObject , eventdata , handles )
f=g e t ( handles . edit1 , ' s t r i n g ' ) ;
f=inline ( f ) ;
a x e s ( handles . grafica )
h2=ezplot ( f ) ;
s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
g r i d on
h o l d off
s e t ( handles . edit5 , ' s t r i n g ' , ' ' )
s e t ( handles . edit6 , ' s t r i n g ' , ' ' )
s e t ( handles . edit7 , ' s t r i n g ' , ' ' )
s e t ( handles . edit8 , ' s t r i n g ' , ' ' )
s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' on ' )

Listing 3.12: Boton Calcular


f u n c t i o n p u s h b u t t o n 2 _ C a l l b a c k ( hObject , eventdata , handles )
f=g e t ( handles . edit1 , ' s t r i n g ' ) ;
fun=inline ( f ) ;
a=str2doubl e ( g e t ( handles . edit2 , ' s t r i n g ' ) ) ;
b=str2doubl e ( g e t ( handles . edit3 , ' s t r i n g ' ) ) ;
n=str2doubl e ( g e t ( handles . edit4 , ' s t r i n g ' ) ) ;
listado= ' A p r o x i m a c i o n e s ' ;
h2=ezplot ( f , [ a 0.5 b + 0 . 5 ] ) ;
s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
h o l d on
g r i d on

fa=fun ( a ) ;
fb=fun ( b ) ;
u =[ a b ] ; v =[ fa fb ] ;
d3=p l o t ( u , v , ' c o l o r ' , ' r ' ) ;
x=afa ( ba ) / ( fbfa ) ;
g=e v a l ( f ) ;
c =0;

w h i l e ( abs ( g ) >= 10( n ) & c <1001)

67

3.

Codigo Fuente de los GUIS

x=a ;
fa=e v a l ( f ) ;
x=b ;
fb=e v a l ( f ) ;
r=afa ( ba ) / ( fbfa ) ;
r1=num2str ( fa , ' %20.15 f ' ) ;
r2=num2str ( fb , ' %20.15 f ' ) ;
r3=num2str ( r , ' %20.15 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , r1 )
s e t ( handles . edit6 , ' s t r i n g ' , r2 )
s e t ( handles . edit7 , ' s t r i n g ' , r3 )
u =[ a b ] ; v =[ fa fb ] ;
d4=p l o t ( r , 0 , 'om ' ) ;
d3=p l o t ( u , v , ' c o l o r ' , ' r ' ) ;
drawnow
listado=strvcat ( listado , num2str ( r , ' %20.15 f ' ) ) ;
x=r ;
fr=e v a l ( f ) ;
i f fa fr<0
b=r ;
else
a=r ;
end
g=e v a l ( f ) ;

s e t ( handles . listbox1 ,

' Value ' , 1 ) ;

s e t ( handles . listbox1 , ' s t r i n g ' , listado )


s e t ( handles . edit8 , ' s t r i n g ' , c )
c=c +1;
end

s e t ( handles . pushbutton1 , ' e n a b l e ' , ' on ' )


s e t ( handles . pushbutton2 , ' e n a b l e ' , ' o f f ' )
i f c >1000
s e t ( handles . edit8 , ' s t r i n g ' , ' Mayor a 1000 ' )
else
s e t ( handles . edit8 , ' s t r i n g ' , c )
end

h o l d off

68

3.

Codigo Fuente de los GUIS

3.6.

Metodo de la Secante

Listing 3.13: Boton Graficar


f u n c t i o n p u s h b u t t o n 1 _ C a l l b a c k ( hObject , eventdata , handles )
f=g e t ( handles . edit1 , ' s t r i n g ' ) ;
f=inline ( f ) ;
a x e s ( handles . grafica )
plot (0 ,0)
h2=ezplot ( f ) ;
s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
g r i d on
h o l d off
s e t ( handles . edit7 , ' s t r i n g ' , ' ' )
s e t ( handles . edit8 , ' s t r i n g ' , ' ' )
s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' on ' )

Listing 3.14: Boton Calcular


f u n c t i o n p u s h b u t t o n 2 _ C a l l b a c k ( hObject , eventdata , handles )
f=g e t ( handles . edit1 , ' s t r i n g ' ) ;
fun=inline ( f ) ;
a=str2doubl e ( g e t ( handles . edit2 , ' s t r i n g ' ) ) ;
b=str2doubl e ( g e t ( handles . edit3 , ' s t r i n g ' ) ) ;
n=str2doubl e ( g e t ( handles . edit4 , ' s t r i n g ' ) ) ;
listado= ' A p r o x i m a c i o n e s ' ;
a x e s ( handles . grafica )

h2=ezplot ( f , [ a 0.5 b + 0 . 5 ] ) ;
s e t ( h2 , ' C o l o r ' , ' b ' , ' LineWidth ' , 2 )
h o l d on
g r i d on

g=fun ( a ) ;
gg=fun ( b ) ;
u =[ a b ] ; v =[ g gg ] ;
d3=p l o t ( u , v , ' c o l o r ' , ' r ' ) ;
c =0;
w h i l e abs ( ab ) >= 10( n )
x=a ;
g=e v a l ( f ) ;
x=b ;

69

3.

Codigo Fuente de los GUIS

gg=e v a l ( f ) ;
xi=b (( gg ( ab ) ) / ( ggg ) ) ;
a=b ;
b=xi ;
c=c +1;

h=e v a l ( f ) ;
r3=num2str ( xi , '

%20.12 f ' ) ;

s e t ( handles . edit7 , ' s t r i n g ' , r3 )


d4=p l o t ( xi , 0 , 'om ' ) ;
x=a ;
g=e v a l ( f ) ;
x=b ;
gg=e v a l ( f ) ;
u =[ a b ] ; v =[ g gg ] ;
a x e s ( handles . grafica )
d3=p l o t ( u , v , ' c o l o r ' , ' r ' ) ;
drawnow
listado=strvcat ( listado , num2str ( r3 , ' %20.12 f ' ) ) ;
s e t ( handles . listbox1 ,

' Value ' , 1 ) ;

s e t ( handles . edit8 , ' s t r i n g ' , c )


s e t ( handles . listbox1 , ' s t r i n g ' , listado )
end
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' on ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' o f f ' )
h o l d off

70

3.

Codigo Fuente de los GUIS

3.7.

Metodo de la Aceleracion de Atiken

Listing 3.15: Boton Graficar


f u n c t i o n p u s h b u t t o n 1 _ C a l l b a c k ( hObject , eventdata , handles )
% hObject

h a n d l e to pushbutton 1 ( s e e GCBO)

% eventdata

r e s e r v e d to be d e f i n e d i n a f u t u r e v e r s i o n o f MATLAB

% handles

s t r u c t u r e with h a n d l e s and u s e r data ( s e e GUIDATA)

f=g e t ( handles . edit1 , ' s t r i n g ' ) ;


xo=str2double ( g e t ( handles . edit2 , ' s t r i n g ' ) ) ;
xmin=xo 1; xmax=xo +1;
x=xmin : 0 . 0 0 1 : xmax ;
y=e v a l ( f ) ;
yc=min ( y ) ; yd=max( y ) ;
a x e s ( handles . grafica )
plot (x , y , ' linewidth ' ,2)
a x i s ( [ xmin 0.5 xmax +0.5 yc1 yd +1])
g r i d on
h o l d on
p l o t ( xmin , 0 , ' b ' , xmax , 0 , ' b ' ) ;
s e t ( handles . edit7 , ' s t r i n g ' , ' ' )
s e t ( handles . edit8 , ' s t r i n g ' , ' ' )
s e t ( handles . listbox1 , ' s t r i n g ' , ' ' )
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' on ' )

Listing 3.16: Boton Calcular


f u n c t i o n p u s h b u t t o n 2 _ C a l l b a c k ( hObject , eventdata , handles )
phi=g e t ( handles . edit1 , ' s t r i n g ' ) ;
x0=str2double ( g e t ( handles . edit2 , ' s t r i n g ' ) ) ;
n=str2doubl e ( g e t ( handles . edit3 , ' s t r i n g ' ) ) ;
listado= ' A p r o x i m a c i o n e s ' ;
tol = 10( n ) ; nmax = 1 0 0 0 ;
x = x0 ; d i f f = tol + 1 ; niter = 0 ;

w h i l e niter <= nmax & d i f f >= tol


gx = e v a l ( phi , x ) ;
ggx = e v a l ( phi , gx ) ;
xnew = ( x ggx gx 2 ) / ( ggx 2gx+x ) ;
d i f f = abs ( xxnew ) ;
x = xnew ;

71

3.

Codigo Fuente de los GUIS

niter = niter + 1 ;
listado=strvcat ( listado , num2str ( xnew , ' %12.9 f ' ) ) ;
s e t ( handles . listbox1 ,

' Value ' , 1 ) ;

s e t ( handles . listbox1 , ' s t r i n g ' , listado )


end

s e t ( handles . pushbutton1 , ' e n a b l e ' , ' on ' )


s e t ( handles . pushbutton2 , ' e n a b l e ' , ' o f f ' )
s e t ( handles . edit7 , ' s t r i n g ' , xnew )
s e t ( handles . edit8 , ' s t r i n g ' , niter )
i f niter >= nmax
s e t ( handles . pushbutton1 , ' e n a b l e ' , ' on ' )
s e t ( handles . pushbutton2 , ' e n a b l e ' , ' o f f ' )
s e t ( handles . edit7 , ' s t r i n g ' , ' In d e te r m i n a d o ' )
s e t ( handles . edit8 , ' s t r i n g ' , ' I t e r a c i o n e s Mayores a 1000 ' )
end
return
h o l d off

72

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

[2] Aleman M.; Alvarez


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

J.

Apuntes

de

C
alculo

Numerico[en

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

lnea].
[consulta

2012]
[5] Comer E.(2009) Metodos Numericos Instituto Tecnologico de Tijuana.
[6] Mathews J.; Fink K.(2000) Metodos Numericos con MATLAB. Prentice Hall,
Madrid.
[7] Meja C.(2002) Invitacion al An
alisis Numerico. Universidad Nacional de Colombia, Medelln.
[8] Mora W.F.(2010) Introduccion a los Metodos Numericos. Instituto Tecnologico de
Costa Rica.
[9] M
uller H. (1996) Una Introducci
on al An
alisi Numerico. Universidad Mayor de
San Simon. Cochabamba, Bolivia.
[10] Nakamura, S. (1992). Metodos Numericos Aplicados con Software. Pearson Educacion.

BIBLIOGRAFIA

74

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


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

G.

APUNTES

DE

MATLAB [en

lnea].

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


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

You might also like