métodos numéricos para el calculo científico con matlab - tomo 1
DESCRIPTION
Métodos Numéricos para el Calculo Científico con Matlab - TOMO 1TRANSCRIPT
Presentado por:
Mera Carrasco, Junior Lino
Malhaber Montenegro, Miguel Angel
Asesor:Dr. Collantes Santisteban, Luis Jaime
UNPRG
2014
Metodos Numericos para el
Calculo Cientıfico con Matlab
TOMO 1
UNIVERSIDAD NACIONAL
“PEDRO RUIZ GALLO”
FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS
ESCUELA PROFESIONAL DE MATEMATICA
“Metodos Numericos para el CalculoCientıfico 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
Introduccion
La presentacion de estos tomos tiene su origen en los Seminarios denominados FUN-
DAMENTOS DE ECUACIONES NO LINEALES, INTERPOLACION, DIFEREN-
CIACION E INTEGRACION NUMERICA PARA EL CALCULO CIENTIFICO y
CALCULO CIENTIFICO DE ECUACIONES NO LINEALES, INTERPOLACION,
DIFERENCIACION E INTEGRACION NUMERICA CON MATLAB desarrollados
en Diciembre del 2012 como investigacion de los cursos de Seminario de Matematica
Pura y Aplicada de la carrera profesional de Matematicas de la Universidad Nacional
Pedro Ruiz Gallo con el asesoramiento del Dr. Luis Jaime Collantes Santisteban, dichos
trabajos enfocaban la parte teorica y practica de algunos temas del Calculo Cientıfico.
Estos tomos no son documentos comerciales, por el contrario decidimos trabajar para
que se encuentre al alcance de todos, es bien sabido la dificultad que tienen estudiantes
y profesionales de ingenierıa, ciencias medicas, ciencias economicas entre otras para ide-
alizar sus problemas y desarrollar un modelo matematico adecuado en algunos casos es
difıcil porque la aplicacion resulta excesivamente compleja o los metodos analiticos no se
adecuan muy bien a sus resultados por ello es conveniente el uso de metodos numericos
los cuales conducen a soluciones aproximadas pero mas manejables y se puede dar uso
a un ordenador provisto de un software adecuado, para nuestro caso Matlab.
Metodos Numericos para el Calculo Cientıfico con Matlab esta divido en 7 tomos:
TOMO 0 Conceptos Previos
TOMO 1 Ecuaciones No Lineales
TOMO 2 Interpolacion
TOMO 3 Diferenciacion e Integracion Numerica
TOMO 4 Ecuaciones Lineales
TOMO 5 Ecuaciones Diferenciales Ordinarias
TOMO 6 Ecuaciones Diferenciales Parciales
Metodos Numericos para el Calculo Cientıfico con Matlab, explicara de manera sencilla
y con ejemplos el uso y la programacion de Interfaces Graficas de Usuario (GUI) ası co-
mo el clasico uso de los archivos “.m” y por supuesto la solucion “manual”.
Este TOMO denominado Ecuaciones No Lineales esta dividido en tres capıtulos:
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 capıtulo 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 grafi-
cas.
”Por favor, soy Rodney McKay, difıcil tarda unos segundos. Imposible, un par de min-
utos. ”Dr. Rodney McKay - Stargate Atlantis
INDICE GENERAL
1. Ecuaciones no Lineales 7
1.1. Metodo de Biseccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
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. Aplicacion 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
5
6
3. Codigo Fuente de los GUI’S 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
Capıtulo 1
ECUACIONES NO LINEALES
En este capıtulo estudiaremos el problema de la busqueda de raices o ceros de una
ecuacion no lineal. La razon principal para resolver ecuaciones no lineales por medio
de metodos numericos 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 disenados para encontrar las raices son poderosos, aunque cada
uno tiene sus propias limitaciones y defectos. El metodo de biseccion consiste en encon-
trar una raız si se conoce un intervalo que contenga a la raız. Por lo tanto este metodo
necesita un esfuerzo preliminar para estimar un intervalo adecuado que contenga a la
raız 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 busqueda de la raız con
cierto numero de interaciones. El metodo de Aitken permite acelerar la convergencia de
una sucesion, vıa 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 8
Definicion 1.0.1. (Metodo 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.
Iteracion: Los pasos que se dan, en un algoritmo, para calcular un iterado, xn+1, a
partir del iterado anterior, xn.
Definicion 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
lımn→∂
|en+1||en|R
= A
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 cubica.
En general los metodos que generen sucesiones con alto orden de convergencia se aproxi-
man mas rapidamente a la solucion que aquellos que generen sucesiones con bajo orden.
1. Ecuaciones no Lineales 9
1.1. Metodo de Biseccion
Este metodo es el mas simple, aunque tambien el mas seguro y solido para encontrar
una raız en un intervalo, dado donde se sabe que existe dicha raız. Su unica ventaja es
que funciona aun para funciones no analıticas (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
raız, 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 unico, 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 raız. Asi, si f(a)f(c) ≤ 0, el intervalo
[a, c] que incluye a x = a y x = c contiene a la raız en caso contrario, el intervalo
[c, b] = I(1) = [a(1), b(1)] tiene la raız. El nuevo intervalo que contiene a la raız se bisecta
de nuevo.
C
y=f(x)
a= a C C b= b
a C b
a C b a C b
0 0 0
000
1
111
2
222
Figura 1.1: Interpretacion geometrica del metodo de biseccion.
1. Ecuaciones no Lineales 10
Al repetir este proceso, el tamano del intervalo (I(k)) con la raız se vuelve cada vez
mas pequeno. 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 tamano del intervalo despues de k pasos de la
iteracion es
I(k) =(b− a)
2k
donde el numerador es el tamano del intervalo inicial. Esto tambien representa el maximo
error posible cuando la raız se aproxima mediante el k-esimo punto medio. Por lo tanto,
si la tolerancia del error esta dada por ε, el numero de pasos de iteracion necesarios es
el mınimo entero que satisface(b− a)
2k< ε
o, en forma equivalente
k > log2b− a
ε
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) − α| < b− a
2k, k ≥ 1
Demostracion. para n ≥ 1, tenemos
b(k) − a(k) =1
2k−1(b− a) y α ∈ (a(k), b(k))
Y como x(k) = 12(a(k) + b(k)) para toda k ≥ 1, se deduce que
|x(k) − α| ≤ 1
2(b(k) − a(k)) =
b− a
2k
1. Ecuaciones no Lineales 11
Ejemplo 1.1.1. Encuentre la raız positiva de f(x) = ln x−x+2 con una tolerancia de
10−4 para variable x.
[a, b] [f(a), f(b)] c f(c)
[2,4] [0.6931,-0.6137] 3 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.9861×10−4
[3.14453125,3.146484375] [0.00113,-1.9861×10−4] 3.145507813 4.6753×10−4
[3.1445507813,3.146484375] [4.6753×10−4,-1.9891×10−4] 3.1459960494 1.34469×10−4
[3.145996094,3.146484375] [1.34469×10−4,-1.9861×10−4] 3.146240235 -3.2070×10−5
[3.145996094,3.146240235] [1.34469×10−4,-3.2070×10−5] 3.146118165 5.119966×10−5
[3.146118165,3.146240235] [5.119932×10−5,-3.2070×10−5] 3.1461792 9.5642×10−6
[3.1461792,3.146240235] [9.5642×10−5,-3.2070×10−5] 3.146240235 9.5642×10−6
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,1461792−3,146240235| =6,1035 × 10−5 < 1 × 10−4, 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 12
1.2. Metodo de Newton
El signo de la funcion dada f en los extremos del intervalo es la unica informacion
explotada por el metodo de biseccion. Se puede construir un metodo mas eficiente ex-
plotando 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)), k ≥ 0 (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 ).
y=f(x)
x
x
(x , f(x ))
xPendiente f'(x )
(x , f(x ))
Pendiente f'(x )
00
0 0
1
1
1 1
2a
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 comun consiste en consider-
arlo 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
).
lımk→∞
x(k+1) − α
(x(k) − α)2=
f ′′(α)
2f ′(α)(1.3)
Si f ′(α) 6= 0 el metodo de Newton se dice que converge cuadraticamente (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 podrıa recuperar el orden 2
modificando el metodo original (1.1) como sigue:
x(k+1) = x(k) −mf(x(k))
f ′(x(k)), k ≥ 0 (1.4)
con f ′(x(k) 6= 0). Obviamente, este metodo de Newton modificado requiere el conocimien-
to a priori de m.
1. Ecuaciones no Lineales 14
Teorema 1.2.1. Sea f ∈ C2[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 sucesion x(k), k = 1, . . . ,∞ que
converge a α para cualquier aproximacion inicial x(0) ∈ [α− δ, α + δ].
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 numero 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 ∈ C2[a, b], tendremos g ∈ C1[α − δ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 numero ξ 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)}, k =
1, . . . ,∞ definida por
x(k) = g(x(k−1)) = x(k−1) − f(x(k−1))
f ′(x(k−1))
converge a α para cualquier x(0) ∈ [α− δ, α + δ].
Veamos un ejemplo del metodo de Newton(1.3) y su version modificada(1.4).
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)−α|
0 1.5 0.5 0.4
1 1.8 0.2 0.47
2 1.905882359 0.0941 0.49
3 1.954132539 0.04587 0.494
4 1.9773386164 0.02266 0.497
5 1.988734610 0.011266 0.498
6 1.994383304 0.0056167 0.499
7 1.997195612 0.0028044 0.499
8 1.998598791 0.00140121 0.499
9 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
k x(k) |f(xk)|
0 x(0) = 1,5 0.375
1 x(1) = 1,8 0.07234018
2 x(2) = 1,9058 0.01691
3 x(3) = 1,95409083 0.00411869
4 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)|
0 x(0) = 1,5 0.375
1 x(1) = 1,89473684210526 0.02099431403
2 x(2) = 1,99691833590139 0.00001896406
3 x(3) = 1,99999761850615 0.000000000001
4 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. Como terminar las iteraciones de Newton
Las interaciones para encontrar α despues de un numero 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 podrıa 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. Metodo 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
2f ′′(x(k))
igualando a cero f(x(k+1)) y sustituyendo δ(k) por − f(x(k))
f ′(x(k)), obtenemos:
f(x(k)) + δ(k)[
f ′(x(k))− 1
2
f(x(k))
f ′(x(k))f ′′(x(k))
]
= 0
Despejnado δ(k) se obtiene:
δ(k) = − f(x(k))
f ′(x(k))− f(x(k))
2f ′(x(k))f ′′(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))
2f ′(x(k))f ′′(x(k))
(1.7)
este metodo considera un mayor numero de terminos de la serie por lo tanto converge
mas rapidamente que el metodo de Newton (1.1)
1.3. Metodo 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(k)) =f(x)− f(x(k))
x− x(k)(1.8)
1. Ecuaciones no Lineales 18
y en (1.8) tomamos x = x(k−1) para ontener:
f ′(x(k)) =f(x(k−1))− f(x(k))
x(k−1) − x(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(k−1)−f(x(k))
x(k−1)−x(k)
= x(k) − f(x(k))(x(k−1) − x(k))
f(x(k−1))− f(x(k))(1.10)
La expresion (1.10) es llamado Metodo de la secante, la cual necesita dos aproxi-
maciones 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(k−1), f(x(k−1))) y (x(k), f(x(k))), de ahı el nombre de metodo de la Secante.
Esto se ilustra en la Figura 1.3
a
y=f(x)
x x xX
Y
k+1k-1 k
Figura 1.3: Interpretacion geometrica del metodo de la secante
Ejemplo 1.3.1. Encuentre la raız positiva aplicando el metodo de la secante en la
ecuacion f(x) = ln x−x+2 = 0, asumiendo como valores iniciales a x(0) = 3, x(1) = 3, 15
con una tolerancia de 10−4.
Se concluye el proceso iterativo, siendo la raız buscada igual a α = 3,146193209, luego
de tres iteraciones.
1. Ecuaciones no Lineales 19
k x(k+1)
0 x(1) = 3, 15
1 x(2) = 3,146150255
2 x(3) = 3,146193209
Cuadro 1.5: Metodo de la secante para ln x− x+ 2
1.4. Iteracion 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.
Definicion 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= x - 2
y = x
2
X
Y
y=x
X
Y y= ex
Figura 1.4: La funcion φ(x) = x2 − 2 tiene dos puntos fijos (izquierda), mientras que la
funcion φ(x) = ex no tiene ninguno (derecha)
Definicion 1.4.2. Decimo que α es un punto fijo de orden m de φ si φ(x) esta dada
por φ(x) = α+ (x− α)mq(x) con q(x) 6= 0.
1. Ecuaciones no Lineales 20
Observe que si x = α, la definicion coincide con la anterior.
Definicion 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 lımite es un punto fijo de φ. En la siguiente proposicion precisaremos
este resultado.
Proposicion 1.4.1. Supongamos que la funcion de iteracion en la definicion (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 unico punto fijo α ∈ [a, b] y la sucesion definida en la definicion
(1.4.3) converge a α, cualquiera que sea la eleccion del dato inicial x(0) en [a, b]. Ademas
lımk→∞
x(k+1) − α
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,
lımk→∞
x(k+1) − α
x(α) − α= φ′(α)
1. Ecuaciones no Lineales 21
De (1.11) se deduce que la convergencia es lineal.
El metodo de Newton no es el unico procedimiento iterativo que posee convergencia
cuadratica. En efecto, se tiene la siguiente propiedad general.
Proposicion 1.4.2. Supongamos que se satisfacen todas las hipotesis 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 definicion (1.4.3) convergen con orden 2 y
lımk→∞
x(k+1) − α
(x(k) − α)2=
1
2φ′′(x) (1.12)
Su demostracion es similar a la proposicion anterior.
1.4.1. Como 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
1− φ′(ξ(k))(x(k+1) − x(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 raız real positiva de f(x) = ln x−x+2, usando el metodo
de punto fijo, con una tolerancia de 10−4 para la variable x.
Tomando en consideracion que la raız 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) = lnx + 2 , φ′(x) = 1x, aplicando la hipotesis de
la proposicion 1.4.1 tenemos. |φ′(3)| = 13= 0, 333 < 1, por lo tanto es convergente.
Aplicaremos el algoritmo de la definicion 1.4.3
k x(k+1) Error=|x(k+1) − x(k)|
0 x(1) = 3,0986
1 x(2) = 3,1309
2 x(3) = 3,141337866
3 x(4) = 3,144648781
4 x(5) = 3,145702209
5 x(6) = 3,146037143 3,34934× 10−4
6 x(7) = 3,146143611
7 x(8) = 3,146177452 3,384135× 10−5
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 raız
buscada es x = 3,146177452
1. Ecuaciones no Lineales 23
Observacion 1.4.1. 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 proced-
imiento 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. Aceleracion utilizando el metodo 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 24
Sea x(k) = φ(x(k−1)), 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)
1− λ=
φ(x(k))− λx(k) + x(k) − x(k)
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 lımk→∞
λ(k) = φ′(λ).
Gracias al Lema 1.5.1 podemos concluir, para un k dado, que λ(k) puede consider-
arse 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), k ≥ 0 (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 raız simple α = 1 de la funcion f(x) = ex(x− 1), con una
tolerancia de 10−10, aplicando el metodo de Aitken.
Solucion. Primero encontraremos la funcion de iteracion.
ex(x−1) = 0, desarrolando y sumando a cada miembro x−1 tenemos: exx−ex+x−1 =
x−1, al factorizar obtenemos: (ex+1)(x−1) = x−1 y despejando x del primer miembro
resulta: x = 1 +x− 1
ex + 1=
ex + x
ex + 1= φ(x).
La funcion de iteracion encontrada cumple la condicion de convergencia del punto fijo :
φ(x)′ =1− x
ex + 1tal que |φ(1)′| = 0 < 1.
Para mayor comodidad supongamos que y(k+1) = φ∆(xk+1) = x(k+1)
k = 0
MPF: y(0) = x(0)0 = 2, x
(0)1 = φ(2) = 1,1192029, x
(0)2 = φ(x
(0)1 ) = 1,02934289154
Aitken: y(1) =x(0)0 φ(φ(x
(0)0 ))−[φ(x
(0)0 )]2
φ(φ(x(0)0 ))−2φ(x
(0)0 )+x
(0)0
= 1,01913370346
k = 1
MPF: y(1) = x(1)0 , x
(1)1 = φ(y(1)) = 1,005074185, x
(1)2 = φ(x
(1)1 ) = 1,0013596022
Aitken: y(2) =x(1)0 φ(φ(x
(1)0 ))−[φ(x
(1)0 )]2
φ(φ(x(1)0 ))−2φ(x
(1)0 )+x
(1)0
= 1,0000257973
k = 2
MPF: y(2) = x(2)0 , x
(2)1 = φ(y(2)) = 1,0000069378, x
(2)2 = φ(x
(2)1 ) = 1,000001865866
Aitken: y(3) =x(2)0 φ(φ(x
(2)0 ))−[φ(x
(2)0 )]2
φ(φ(x(2)0 ))−2φ(x
(2)0 )+x
(2)0
= 1,000000000048314
k = 3
MPF: y(3) = x(3)0 , x
(3)1 = φ(y(3)) = 1,000000000012994, x
(3)2 = (x
(3)1 ) = 1,000000000003495
Aitken: y(4) =x(3)0 φ(φ(x
(3)0 ))−[φ(x
(3)0 )]2
φ(φ(x(3)0 ))−2φ(x
(3)0 )+x
(3)0
= 1
Luego de 4 iteraciones obtenemos la raız antes mencionada.
1. Ecuaciones no Lineales 26
1.6. 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 sımbolo Pn. Cuando n ≥ 2 y todos los
coeficientes ak son reales, si α ∈ C es una raız compleja de pn ∈ Pn, entonces α (el
conjugado de α) tambien es raız 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 raız. 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 numero de cambios de signo de los coeficientes {aj} y por k el
numero de raıces 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 raız real positiva (k = 1). En efecto, el
numero 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 cırculo
Γ del plano complejo
Γ = {z ∈ C : |z| ≤ 1 + η}, donde η = max|ak/an|, 0 ≤ k ≤ n− 1 (1.18)
1. Ecuaciones no Lineales 27
1.6.1. Algoritmo de Horner
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(an−a + anx) . . .)) (1.19)
La expresion (1.19), tambien conocida como el algoritmo del producto anidado. El meto-
do de Horner evalua al polinomio pn rn un punto (z) usando el siguiente algoritmo de
division sintetica:
bn = an,
bk = ak + bk+1z, k = n− 1, n− 2, . . . , 0(1.20)
el siguiente polinomio con coeficientes que dependen del parametro z se llama polinomio
asociado a pn:
qn−1(x; z) = b1 + b2x+ . . .+ bnxn−1 =
n∑
k=1
bkxk−1 (1.21)
La relacion entre pn y qn−1 esta dada por pn(x) = (x − z)qn−1(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 an−1 an−2 . . . a1 a0
bnz bn−1z . . . b2z b1z
bn = bn−1 = bn−2 = . . . b1 = b0 =
an an−1 + bnz an−2 + bn−1z . . . a1 + b2z a0 + b1z
Si z es una raız de pn, entonces tenemos b0 = pn(z) = 0 y por consiguiente pn(x) =
(x − z)qn−1(x, z). En este caso la ecuacion algebraica qn−1(x, z) = 0 proporciona las
n− 1 raıces restantes de pn(x).Esta observacion sugiere adoptar el siguiente criterio de
deflacion para calcular todas las raıces de pn:
para m = n, n− 1, . . . , 1
1. Hallar una raız rm de pm con un metodo de aproximacion apropiado;
2. Calcular qm−1(x; rm) utilizando (1.20)-(1.21)(habiendo definido z = rm);
1. Ecuaciones no Lineales 28
3. Poner pm−1 = qm−1.
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+8x−8
y z = −1 tenemos que p6(x) = (x+ 1)(x5 − 3x4 + 8x3 − 14x2 + 16x− 8) + 0 y p(1) = 0
1.6.2. Metodo de Newton-Horner
Como su nombre sugiere, el metodo de Newton-Horner implementa el procedimiento
de deflacion utilizando el metodo de Newton para calcular las raıces rm. El metodo de
Newton explota convenientemente el algoritmo de Horner (1.20).
Sea qn−1 el polinomio asociado (1.21) a pn. Tenemos:
p′n(x) = qn−1(x, z) + (x− z)q′n−1(x, z)
si x = z se tiene p′n(z) = qn−1(z, z).
Gracias a esta identidad, el metodo de Newton- Horner para la aproximacion de una
raız rj de pn toma la siguiente forma : dada una estimacion inicial r(0)j de la raız
r(k+1)j = r
(k)j −
pn(r(k)j )
p′n(r(k)j )
= r(k)j −
pn(r(k)j )
qn−1(r(k)j , r
(k)j )
(1.22)
Ahora utilizamos la tecnica de deflacion, explotando el hecho de que pn(x) = (x −rj)pn−1(x) Entonces procedemos a la aproximacion de un cero de pn−1 y ası sucesiva-
mente hasta que sean procesadas todas las raıces de pn.
1. Ecuaciones no Lineales 29
Ejemplo 1.6.3. Determine una raız del polinomio: p(x) = 3x5 − 2x4 + x2 − 7x− 4
Solucion. Analizando el polinomio, existe una raız cercana a x = 2, consideremos
r(0) = 1,5 como la primera aproximacion. Efectuando la division se obtiene:
3 -2 0 1 -7 -4
1.5 4.5 3.75 5.625 9.9938 4.407
3 2.5 3.75 6.625 2.938 0.407
1.5 4.5 10.5 21.37 41.98
3 7 14.25 27.99 44.91
De donde r(1) = 1,5− 0,40744,91
= 1,491
r(2) = 1,4908
Capıtulo 2
APLICACION MEDIANTE GUIS
En analisis numerico un algoritmo de busqueda de raıces es un metodo numerico o algo-
ritmo 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
raız o cero de la funcion.
Este Capitulo trata sobre como encontrar raıces reales o complejas, aproximadas por
numeros 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 raız de la ecuacion. Estos metodos van calculando las
sucesivas aproximaciones en base a los anteriores, a partir de una o varias aproxima-
ciones iniciales.
No abordaremos la teorıa de cada metodo, dado que esta se encuentra en el Capitulo I,
aqui compararemos los resultados con la implementacion de GUI’s.
2. Aplicacion mediante GUIs 31
2.1. Metodo de la Biseccion
1. Ejecutamos nuestro GUI. Biseccion, y escribimos la funcion ′log(x)−x+2′ eval-
uada en el intervalo [1; 4] con una tolerancia 10−5 y presionamos GRAFICAR.
2. Como podemos observar tenemos una raiz entre 1 y 4. Por ello continuaremos y
haremos clic en CALCULAR
2. Aplicacion 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. Aplicacion mediante GUIs 33
2.2. Metodo 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. Aplicacion 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. Aplicacion mediante GUIs 35
2.3. Metodo de la Secante
1. Ejecutamos nuestro GUI. SECANTE, y escribimos la funcion ′log(x)−x+2′ eval-
uada en el intervalo [1; 4] con una tolerancia 10−5 y presionamos GRAFICAR.
2. Como podemos observar tenemos una raiz entre 1 y 4. Por ello continuaremos y
haremos clic en CALCULAR
2. Aplicacion 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. Aplicacion mediante GUIs 37
2.4. Metodo 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 10−5 y presionamosGRAFICAR.
2. Como podemos observar tenemos una raiz entre 1 y 4. Por ello continuaremos y
haremos clic en CALCULAR
2. Aplicacion 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. Aplicacion mediante GUIs 39
2.5. Metodo 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 10−5 y presionamosGRAFICAR.
2. Como podemos observar tenemos una raiz entre 1 y 4. Por ello continuaremos y
haremos clic en CALCULAR
2. Aplicacion 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. Aplicacion mediante GUIs 41
2.6. Metodo 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. Aplicacion mediante GUIs 42
Si revisamos el Listado Aproximaciones tendremos los siguientes resultados de
cada Iteracion:
1.119202922
1.029342892
1.007723387
1.002065432
1.000554642
1.000149106
1.000040096
1.000010783
Cuya raiz aproximada es 1.000010783
2. Aplicacion mediante GUIs 43
2.7. Metodo 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 10−4 y presionamos GRAFICAR.
2. Posteriormente continuaremos y haremos clic en CALCULAR
2. Aplicacion mediante GUIs 44
Si revisamos los ListadosRaices e Iteraciones tendremos los siguientes resultados
de cada Iteracion:
Raices
1.000000000
2.000000000
3.000000000
Iteraciones
6.000000000
6.000000000
2.000000000
2. Aplicacion mediante GUIs 45
2.8. Comparacion de Metodos Iteractivos
2.8.1. Analizando una funcion 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 ano un banco deposita v euros en un fondo de inversion
y retira un capital de M euros al final del n − esimo ano. 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∑
k=1
(1 + r)k = v · 1 + r
r· [(1 + r)n − 1],
Deducimos que r es raiz de la ecuacion algebrica.
f(r) = 0, donde f(r) = M − vn
∑
k=1
(1 + r)k = v · 1 + r
r· [(1 + r)n − 1].
Solucion. Datos Iniciales: M=6000 euros , v=1000 euros , n=5 anos , r=x ,
Replanteando nuestra ecuacion tendremos:
f(x) = 6000− 1000 · (1 + x) · ((1 + x)5 − 1)
x
2. Aplicacion mediante GUIs 46
Solucion 1. Utilizando el Metodo de la Biseccion.
2. Aplicacion mediante GUIs 47
Solucion 2. Utilizando el Metodo de Newton.
2. Aplicacion mediante GUIs 48
Solucion 3. Utilizando el Metodo del Punto Fijo.
2. Aplicacion mediante GUIs 49
Solucion 4. Utilizando el Metodo de la Regla Falsa.
2. Aplicacion mediante GUIs 50
Solucion 5. Utilizando el Metodo de Newton-Horner.
2. Aplicacion mediante GUIs 51
Solucion 6. Utilizando el Metodo de la Secante.
2. Aplicacion mediante GUIs 52
2.8.2. Analizando una funcion 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
x2∗ sen(10
x) evaluada entre [1; 1,2]
Solucion. Al tratarse de una funcion trascendental solo podremos hacer uso de los
metodos de Biseccion, Regla Falsa, Newton, Secante y Punto fijo.
2. Aplicacion mediante GUIs 53
Solucion 7. Utilizando el Metodo de la Biseccion.
2. Aplicacion mediante GUIs 54
Solucion 8. Utilizando el Metodo de Newton.
2. Aplicacion mediante GUIs 55
Solucion 9. Utilizando el Metodo del Punto Fijo.
2. Aplicacion mediante GUIs 56
Solucion 10. Utilizando el Metodo de la Regla Falsa.
2. Aplicacion mediante GUIs 57
Solucion 11. Utilizando el Metodo de la Secante.
Capıtulo 3
CODIGO FUENTE DE LOS GUI’S
3.1. Metodo de la Biseccion
Listing 3.1: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
f=get ( handles . edit1 , ' s t r i n g ' ) ;
f=inline ( f ) ;
axes ( handles . grafica )
h2=ezplot (f ) ;
s e t ( h2 , ' Color ' , '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 , ' enable ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' enable ' , 'on ' )
3. Codigo Fuente de los GUI’S 59
Listing 3.2: Boton Calcular
f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )
c l c
f=get ( handles . edit1 , ' s t r i n g ' ) ;
fun=inline (f ) ;
a=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
b=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
n=str2double ( get ( handles . edit4 , ' s t r i n g ' ) ) ;
listado= ' Aproximaciones ' ;
h2=ezplot (f , [ a−0.5 b+0.5 ] ) ;
s e t ( h2 , ' Color ' , 'b ' , 'LineWidth ' , 2 )
hold 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 ] ;
axes ( handles . grafica )
d3=pl o t (u , v , ' co l o r ' , ' r ' ) ;
c=−1;
i f fa∗fb< 0
whi le abs (b−a ) >= 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=pl o t (r , 0 , 'om ' ) ;
listado=strvcat ( listado , num2str (r , ' %20.15 f ' ) ) ;
x=r ;
fr=eva l ( f ) ;
i f fa∗fr<0
b=r ;
e l s e
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 GUI’S 60
end
s e t ( handles . pushbutton1 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
e l s e
msgbox ( 'NO EXISTE RAIZ EN ESE INTERVALO ' , 'AVISO ' , 'warn ' ) ;
s e t ( handles . pushbutton1 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
end
hold off
Listing 3.3: Boton Salir
opc=questdlg ( ' ¿Desea s a l i r de l programa? ' , 'SALIR ' , ' Si ' , 'No ' , 'No ' ) ;
i f strcmp ( opc , 'No ' )
r e turn ;
e l s e
msgbox ({ ' Gracias por usar nues t ro Sof tware ' , . . .
' Desar ro l l ado por : Miguel Angel Malhaber Montenegro ' , . . .
' Junior Lino Mera Carrasco ' , . . .
'Facebook : Matematicas . net ' } , 'Acerca de ' ) ;
end
c l e a r , c l c , c l o s e ( gcbf )
3. Codigo Fuente de los GUI’S 61
3.2. Metodo de Newton Horner
Listing 3.4: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
g l oba l PX
f=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
axes ( handles . grafica )
PX=vpa ( poly2sym (f ) , 7 ) ;
h2=ezplot ( PX ) ;
s e t ( h2 , ' Color ' , 'b ' , 'LineWidth ' , 2 )
g r i d on
hold 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 , ' enable ' , 'on ' )
Listing 3.5: Boton Calcular
c l c
g l oba l PX
a=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
x0=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
m=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
listado1= ' Raices ' ;
listado2= ' I t e r a c i o n e s ' ;
tol = 10ˆ(−m ) ; nmax = 1000;
n=length ( a )−1; r oo t s = ze r o s ( n , 1 ) ; iter = zer o s (n , 1 ) ;
f o r 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 ;
whi le 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 ) ;
r oo t s ( k ) = x ;
iter (k ) = niter ;
3. Codigo Fuente de los GUI’S 62
d4=pl o t (x , 0 , 'om ' ) ;
hold 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
axes ( handles . grafica )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
a=min( V ) ;
b=max( V ) ;
h2=ezplot (PX , [ a−0.5 b+0.5 ] ) ;
s e t ( h2 , ' Color ' , ' r ' , 'LineWidth ' , 2 )
hold on
g r i d on
r e turn
Listing 3.6: Funcion Horner
f unc t i on [ y , b ] = horner (a , z )
%HORNER Algoritmo de Horner
%Y=HORNER(A, Z) c a l c u l a
%Y = A(1) ∗ZˆN + A(2) ∗Zˆ(N −1) + . . . + A(N) ∗Z + A(N+1)
% usando e l a l gor i tmo de Horner de l a
% d i v i s i o n s i n t e t i c a .
n = length (a )−1;
b = zer 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) ;
r e turn
3. Codigo Fuente de los GUI’S 63
3.3. Metodo de Newton Raphson
Listing 3.7: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
f=get ( handles . edit1 , ' s t r i n g ' ) ;
xo=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
axes ( handles . grafica )
f=inline ( f ) ;
h2=ezplot (f ) ;
s e t ( h2 , ' Color ' , 'b ' , 'LineWidth ' , 2 )
g r i d on
hold 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 , ' enable ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' enable ' , 'on ' )
Listing 3.8: Boton Calcular
f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )
c l c
f=get ( handles . edit1 , ' s t r i n g ' ) ;
xo=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
n=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
listado= ' Aproximaciones ' ;
f ;
df=d i f f (f ) ;
fun=inline (f ) ;
dfun=inline ( df ) ;
c l c
h2=ezplot (f , [ xo−1 xo+1]) ;
s e t ( h2 , ' Color ' , 'b ' , 'LineWidth ' , 2 )
hold on
g r i d on
x1=xo−fun ( xo ) /dfun ( xo ) ;
listado=strvcat ( listado , num2str ( xo , ' %20.12 f ' ) ) ;
listado=strvcat ( listado , num2str ( x1 , ' %20.12 f ' ) ) ;
c=2;
whi le abs ( x1−xo ) >= 10ˆ(−n )
3. Codigo Fuente de los GUI’S 64
xo=x1 ;
x1=xo−fun ( xo ) /dfun ( xo ) ;
listado=strvcat ( listado , num2str ( x1 , ' %20.12 f ' ) ) ;
drawnow
d4=pl 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 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
hold off
3. Codigo Fuente de los GUI’S 65
3.4. Metodo del Punto Fijo
Listing 3.9: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
c l c
f=get ( handles . edit1 , ' s t r i n g ' ) ;
f=inline ( f ) ;
axes ( handles . grafica )
h2=ezplot (f ) ;
s e t ( h2 , ' Color ' , 'b ' , 'LineWidth ' , 2 )
g r i d on
hold 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 , ' enable ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' enable ' , 'on ' )
Listing 3.10: Boton Calcular
f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )
g=get ( handles . edit1 , ' s t r i n g ' ) ;
xo=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
n=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
listado= ' Aproximaciones ' ;
h2=ezplot (g , [ xo−1 xo+1]) ;
s e t ( h2 , ' Color ' , 'b ' , 'LineWidth ' , 2 )
hold on
g r i d on
x=xo ;
gxo=eva l ( g ) ;
d3=pl o t (xo , 0 , 'om ' ) ;
h=gxo ;
c=−1;
whi l e ( abs (h ) >= 10ˆ(−n ) & c<1001)
x=xo ;
gxo=eva l ( g ) ;
h=gxo ;
xo=x+gxo ;
3. Codigo Fuente de los GUI’S 66
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=pl 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 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
i f c>1000
s e t ( handles . edit7 , ' s t r i n g ' , 'Mayor a 1000 ' )
e l s e
s e t ( handles . edit7 , ' s t r i n g ' , c )
end
hold off
3. Codigo Fuente de los GUI’S 67
3.5. Metodo de la Regla Falsa
Listing 3.11: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
f=get ( handles . edit1 , ' s t r i n g ' ) ;
f=inline ( f ) ;
axes ( handles . grafica )
h2=ezplot (f ) ;
s e t ( h2 , ' Color ' , 'b ' , 'LineWidth ' , 2 )
g r i d on
hold 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 , ' enable ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' enable ' , 'on ' )
Listing 3.12: Boton Calcular
f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )
f=get ( handles . edit1 , ' s t r i n g ' ) ;
fun=inline (f ) ;
a=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
b=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
n=str2double ( get ( handles . edit4 , ' s t r i n g ' ) ) ;
listado= ' Aproximaciones ' ;
h2=ezplot (f , [ a−0.5 b+0.5 ] ) ;
s e t ( h2 , ' Color ' , 'b ' , 'LineWidth ' , 2 )
hold on
g r i d on
fa=fun (a ) ;
fb=fun (b ) ;
u=[a b ] ; v=[fa fb ] ;
d3=pl o t (u , v , ' co l o r ' , ' r ' ) ;
x=a−fa ∗(b−a ) /(fb−fa ) ;
g=eva l ( f ) ;
c=0;
whi le ( abs (g ) >= 10ˆ(−n ) & c<1001)
3. Codigo Fuente de los GUI’S 68
x=a ;
fa=eva l ( f ) ;
x=b ;
fb=eva l ( f ) ;
r=a−fa ∗(b−a ) /( fb−fa ) ;
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=pl o t (r , 0 , 'om ' ) ;
d3=pl o t (u , v , ' co l o r ' , ' r ' ) ;
drawnow
listado=strvcat ( listado , num2str (r , ' %20.15 f ' ) ) ;
x=r ;
fr=eva l ( f ) ;
i f fa∗fr<0
b=r ;
e l s e
a=r ;
end
g=eva 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 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
i f c>1000
s e t ( handles . edit8 , ' s t r i n g ' , 'Mayor a 1000 ' )
e l s e
s e t ( handles . edit8 , ' s t r i n g ' , c )
end
hold off
3. Codigo Fuente de los GUI’S 69
3.6. Metodo de la Secante
Listing 3.13: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
f=get ( handles . edit1 , ' s t r i n g ' ) ;
f=inline ( f ) ;
axes ( handles . grafica )
p l o t ( 0 , 0 )
h2=ezplot (f ) ;
s e t ( h2 , ' Color ' , 'b ' , 'LineWidth ' , 2 )
g r i d on
hold 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 , ' enable ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' enable ' , 'on ' )
Listing 3.14: Boton Calcular
f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )
f=get ( handles . edit1 , ' s t r i n g ' ) ;
fun=inline (f ) ;
a=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
b=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
n=str2double ( get ( handles . edit4 , ' s t r i n g ' ) ) ;
listado= ' Aproximaciones ' ;
axes ( handles . grafica )
h2=ezplot (f , [ a−0.5 b+0.5 ] ) ;
s e t ( h2 , ' Color ' , 'b ' , 'LineWidth ' , 2 )
hold on
g r i d on
g=fun ( a ) ;
gg=fun (b ) ;
u=[a b ] ; v=[g gg ] ;
d3=pl o t (u , v , ' co l o r ' , ' r ' ) ;
c=0;
whi le abs (a−b ) >= 10ˆ(−n )
x=a ;
g=eva l (f ) ;
x=b ;
3. Codigo Fuente de los GUI’S 70
gg=eva l ( f ) ;
xi=b−((gg ∗(a−b ) ) /(g−gg ) ) ;
a=b ;
b=xi ;
c=c+1;
h=eva l ( f ) ;
r3=num2str (xi , ' %20.12 f ' ) ;
s e t ( handles . edit7 , ' s t r i n g ' , r3 )
d4=pl o t ( xi , 0 , 'om ' ) ;
x=a ;
g=eva l (f ) ;
x=b ;
gg=eva l ( f ) ;
u=[a b ] ; v=[g gg ] ;
axes ( handles . grafica )
d3=pl o t (u , v , ' co 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 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
hold off
3. Codigo Fuente de los GUI’S 71
3.7. Metodo de la Aceleracion de Atiken
Listing 3.15: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
% hObject handle to pushbutton1 ( s ee GCBO)
% eventdata r es erved − to be de f ined in a f u tu r e ve r s i on o f MATLAB
% handles s t r u c tu r e with handles and user data ( s ee GUIDATA)
f=get ( handles . edit1 , ' s t r i n g ' ) ;
xo=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
xmin=xo−1; xmax=xo+1;
x=xmin : 0 . 0 0 1 : xmax ;
y=eva l ( f ) ;
yc=min( y ) ; yd=max(y ) ;
axes ( handles . grafica )
p l o t (x , y , ' l i new idth ' , 2 )
ax i s ( [ xmin−0.5 xmax+0.5 yc−1 yd+1])
g r i d on
hold 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 , ' enable ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' enable ' , 'on ' )
Listing 3.16: Boton Calcular
f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )
phi=get ( handles . edit1 , ' s t r i n g ' ) ;
x0=str2double ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
n=str2double ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
listado= ' Aproximaciones ' ;
tol = 10ˆ(−n ) ; nmax = 1000;
x = x0 ; d i f f = tol + 1 ; niter = 0 ;
whi le niter <= nmax & d i f f >= tol
gx = eva l ( phi , x ) ;
ggx = eva l ( phi , gx ) ;
xnew = (x∗ggx −gx ˆ2) /( ggx −2∗gx+x ) ;
d i f f = abs (x−xnew ) ;
x = xnew ;
3. Codigo Fuente de los GUI’S 72
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 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' 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 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
s e t ( handles . edit7 , ' s t r i n g ' , ' Indeterminado ' )
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
hold off
BIBLIOGRAFIA
[1] Buhmann, M. D. (2004). Radial Basis Functions: Theory and Implementations.
Cambridge University Press. United Kingdom.
[2] Aleman M.; Alvarez L.; Sanchez J. Analisis Numerico[en lınea]. [consulta 2012].
[3] Burden R.L; Faires J.D . (2001). Numerical Abalysis. Cengage Learning Latin
America.
[4] Cobos J. Apuntes de Calculo Numerico[en lınea].
http://ma1.eii.us.es/Material/Cal_Num_itis_Apuntes.pdf [consulta
2012]
[5] Comer E.(2009) Metodos Numericos Instituto Tecnologico de Tijuana.
[6] Mathews J.; Fink K.(2000) Metodos Numericos con MATLAB. Prentice Hall,
Madrid.
[7] Mejıa C.(2002) Invitacion al Analisis Numerico. Universidad Nacional de Colom-
bia, Medellın.
[8] Mora W.F.(2010) Introduccion a los Metodos Numericos. Instituto Tecnologico de
Costa Rica.
[9] Muller H. (1996) Una Introduccion al Analisi Numerico. Universidad Mayor de
San Simon. Cochabamba, Bolivia.
[10] Nakamura, S. (1992). Metodos Numericos Aplicados con Software. Pearson Edu-
cacion.
BIBLIOGRAFIA 74
[11] A. Quarteroni, F. Saleri. (2006). Calculo Cientifico con MATLAB y Octave.
Springer-Verlag, Italia, Milano.
[12] Velasquez J.(2007) Analisis Numerico. Ediciones Uninorte.
[13] Won Y. Yang , Wenwu Cao , Tae-Sang Chung , John Morris(2005) Applied Nu-
merical Methods Using MATLAB. John Wiley Sons.
[14] V. Dominguez. L. Rapun Matlab en cinco lecciones de Numerico[en lınea].
http://www.unavarra.es/personal/victor dominguez/ [consulta 2012]
[15] Carrasco V.(2011) Metodos Numericos Aplicados a la Ingenierıa Problemas en
Polymath y Matlab. MACRO
[16] Morales M.(2010) Matlab R2010a Metodos Numericos con Visualizacion Grafica.
MACRO
[17] Amancio R., Orbegoso G., Munoz G., Villalta R. (2010) Matlab 2010 - Software
para ciencia e ingenierıa. MACRO
[18] Moler, C. (2004) Numerical computing with Matlab. SIAM
[19] Pineiro G. APUNTES DE MATLAB [en lınea].
http://www.uhu.es/candido.pineiro/docencia/apuntesmatlab.pdf [consul-
ta 2012]
[20] J. Cooper A Matlab Companior for Multivariable Calculus
[21] Chavil M. Sistema experto en Maple Para el analisis de Curvas y superficies en
R3
[22] Gonzales M., Sanchez R. Graficas de curvas y superficies usando Matlab