Métodos Numéricos para Ecuaciones
Métodos Numéricos para Ecuaciones
MANUAL DE
MÉTODOS NUMÉRICO
SOLUCIÓN DE ECUACIONES DE UNA VARIABLE
VICERRECTOR ACADÉMICO
Dr. Dante Atilio Salas Avila
VICERRECTOR DE INVESTIGACIÓN
Dr. Julio Mayta Quispe
Índice
Actividad 1: Método de Bisección 1
I. Objetivos 1
1. Método de Bisección 1
IV. Procedimiento 3
V. Cuestionario 7
I. Objetivos 9
IV. Procedimiento 12
V. Cuestionario 16
I. Objetivos 18
3. Método de Newton-Raphson 18
IV. Procedimiento 20
Manual de Estudio
ÍNDICE 3
V. Cuestionario 24
I. Objetivos 26
4. Método de la secante 26
IV. Procedimiento 28
V. Cuestionario 32
I. Objetivos 34
IV. Procedimiento 36
V. Cuestionario 41
Bibliografı́a 42
Manual de Estudio
1 MÉTODO DE BISECCIÓN 1
I. Objetivos
Calcular las raı́ces de una ecuación algebraica o trascente con método de Bisección,
usando esta herramienta interfaces gráficas de usuarios en MatLab
1. Método de Bisección
En este trabajo estudiaremos uno de los problemas básicos de la aproximación numéri-
ca: el problema de la búsqueda de raı́ces. consiste en obtener una raı́z x de una ecuación
de la forma f (x) = 0 para una función dada f . (Al número x se le llama también cero de
f .) Este es uno de los problemas de aproximación más antiguos y, sin embargo la investi-
gación correspondiente todavı́a continua.
La primera técnica, que se basa en el teorema del valor intermedio, se conoce con el
nombre de método de bisección o de búsqueda binaria.
Supongamos, que tenemos una función continua f , definida en el intervalo [a, b], con
f (a) y f (b) tal que f (a) · f (b) < 0, o sea de signos contrarios. Entonces, por medio del
teorema del valor medio, existe t, a < t < b, tal que f (t) = 0.
Manual de Estudio
1 MÉTODO DE BISECCIÓN 2
Teorema 1.1 Si f (x) es una función continua definida sobre [a, b] y tal que f (a) · f (b) <
0, entonces la sucesión generada por el método de Bisección {pn }(n>0) converge a un cero
p̄ de f (x) en [a, b]; esto es lı́m pn = p y además
p→∞
b−a
|pn − p| ≤ ∀n≤0
2n
y
f(a)
y=f(x)
p2 p3
a=a1 p p1 b=b1 x
f(b) a1 b1
a2 b2
a3 b3
Paso 1: Elija valores iniciales inferior, a, y superior b, que encierren la raı́z, de forma tal
que la función cambie de signo en el intervalo. Esto se verifica comprobando que
Paso 3: Realice las siguientes evaluaciones para determinar en qué subintervalo esta la
raı́z:
Manual de Estudio
1 MÉTODO DE BISECCIÓN 3
x1 , x2 , . . . , → r
Obsérvese que para iniciar el algoritmo de bisección, hay que encontrar un intervalo [a, b],
de modo que f (a) · f (b) < 0. En cada paso, la longitud del intervalo que se sabe que
contiene un cero de f se reduce en un factor de 2; por lo tanto, conviene escoger un
intervalo inicial [a, b] lo más pequeño posible.
IV. Procedimiento
Creamos una interfaces gráficas de usuarios en MatLab usamos GUIDE, lo podemos
hacer Ejecutando la siguiente instrucción en la ventana de comandos: >> guide
Para empezar creamos una nueva figura y agregamos un Static Text, de bajo de esto
ponemos un Static Text y un Edit Text, debajo de esto ponemos un Static Text y
2 Edit Text, debajo de estos controles ponemos un Static Text, un Edit Text y un
Push button, debajo de estos controles ponemos 5 List box,a un lado ponemos un
Axes, y finalmente agregamos un Static Text, un Edit Text, dos Push button; y lo
guardamos como: biseccionn.
Manual de Estudio
1 MÉTODO DE BISECCIÓN 4
Ahora vamos editar el callback del botón CALCULAR y agregamos el código nece-
sario para calcular la las raı́ces de una ecuación algebraica con método de Bisección,
luego editamos del botón SALIR y agregamos el código necesario para cerrar la
ventana, luego editamos del botón NUEVO, cuya acción es limpiar la caja del texto
de la función y los resultados de cada operación.
Con un click derecho en Push button1 menú, nos ubicamos en view Callbacks >>
Callbacks. Esto nos lleva a la subrutina
function pushbutton1_Callback(hObject, eventdata, handles), donde edita-
remos las siguientes lı́neas de código:
f = get(handles.edit1,’string’);
a = str2double(get(handles.edit2,’string’));
b = str2double(get(handles.edit3,’string’));
n = str2double(get(handles.edit4,’string’));
xmin=a; xmax=b;
x=a; fa=eval(f);
x=b; fb=eval(f);
cadite=’Iter.|====’;
cadini=’ A |====’;
cadfin=’ B |====’;
caderr=’Error|====|0’;
Manual de Estudio
1 MÉTODO DE BISECCIÓN 5
cadrai=’Raı́z |====’;
if fa*fb>0
msgbox(’En el intervalo dado no existen raices ’,’Método de Bisección’)
else
i=1;
while i<=n
r=(a+b)/2;
x=a; fa=eval(f);
x=b; fb=eval(f);
x=r; fr=eval(f);
cadite=strcat(cadite,’|’,num2str(i));
cadrai=strcat(cadrai,’|’,num2str(r));
cadini=strcat(cadini,’|’,num2str(a));
cadfin=strcat(cadfin,’|’,num2str(b));
if fa*fr<0
b=r;
else
a=r;
end
if i>=2
vact=r;
if vact~=vant
error=abs((vact-vant)/vact);
vant=vact;
caderr=strcat(caderr,’|’,num2str(error));
end
else
vant=r;
end
i=i+1;
end
set(handles.listbox1,’string’,cadite);
set(handles.listbox2,’string’,cadini);
set(handles.listbox3,’string’,cadfin);
set(handles.listbox4,’string’,cadrai);
Manual de Estudio
1 MÉTODO DE BISECCIÓN 6
set(handles.listbox5,’visible’,’on’); %%cambio
set(handles.listbox5,’string’,caderr);
set(handles.edit5,’string’,r);
x=xmin:0.1:xmax;
y=eval(f);
plot(x,y)
hold on
plot(r,0,’ro’)
text(r,0.1,’Raı́z’)
xlabel(’X’)
ylabel(’Y’)
title([’Grafica f(x)=’,f]);
grid
hold off
end
Haciendo el mismo procedimiento que el anterior esta vez con el botón Push button2,
donde editamos las siguientes lı́neas de código
set(handles.edit1,’string’,’’)
set(handles.edit2,’string’,’’)
set(handles.edit3,’string’,’’)
set(handles.edit4,’string’,’’)
set(handles.edit5,’string’,’’)
set(handles.listbox1,’string’,’’);
set(handles.listbox2,’string’,’’);
set(handles.listbox3,’string’,’’);
set(handles.listbox4,’string’,’’);
set(handles.listbox5,’string’,’’);
axes(handles.axes1)
plot(0,0)
Haciendo el mismo procedimiento que el anterior esta vez con el botón Push button3,
donde editamos las siguientes lı́neas de código
Manual de Estudio
1 MÉTODO DE BISECCIÓN 7
if strcmp(ans,’No’)
return;
end
clear,clc,close all
V. Cuestionario
√
1. Aplique el método de bisección para obtener p3 para f (x) = x − cos x en [0, 1]
2. Sea f (x) = 3(x + 1)(x − 12 )(x − 1). Aplique el método de bisección a los siguientes
intervalos para encontrar p3 .
3. Encuentre un cero de: x sen x − 0,1 = 0 en el intervalo [0, 1], mediante el método de
bisección, con 15 iteraciones
Manual de Estudio
1 MÉTODO DE BISECCIÓN 8
4. Aplique el método de bisección para encontrar las soluciones exactas dentro de 10−2
para x3 − 7x2 + 14x − 6 = 0 en cada intervalo.
5. Use el método de bisección para encontrar una solución exacta dentro 10−3 para
x = tan x en [4, 4.5]
6. Use el método de bisección para encontrar una solución exacta en 10−3 para 2 +
cos(ex − 2) − ex = 0 en [0.5, 1.5]
√
7. Encuentre una aproximación de 3 correcta con una exactitud de 10−4 usando el
algoritmo de bisección. [SUGERENCIA: considere f (x) = x2 − 3]
√
8. Encuentre una aproximación a 3
25 correcta en 10−4 por medio del algoritmo de
bisección.
9. Este método como se vio es muy simple y manejable además es robusco pues siempre
converge a una solución, ¿Porqué la convergencia es muy lenta?
Manual de Estudio
2 MÉTODO DE PUNTO FIJO 9
I. Objetivos
Calcular las raı́ces de una ecuación algebraica o trascente con método de Punto Fijo,
usando esta herramienta interfaces gráficas de usuarios en MatLab
f (x) = 0 (1)
x = g(x) (2)
Manual de Estudio
2 MÉTODO DE PUNTO FIJO 10
Cada una de estas funciones g(x) recibe el nombre de función de iteración para resolver
la ecuación (1).
Una vez que se escoge una función de iteración se define el algoritmo de Punto fi-
jo,como:
pn+1 = g(pn ), ∀n>0 (3)
donde p0 es una aproximación inicial.
Teorema 2.1 Si g ∈ C[a, b] y g(x) ∈ [a, b] para toda x ∈ [a, b], entonces g tiene un punto
fijo en [a, b]. Si además, g ′ (x) existe en (a, b) y
Teorema 2.2 (Teorema de punto fijo) Sea g ∈ C[a, b] tal que g(x) ∈ [a, b] para toda
x en [a, b]. Además supongamos que existe g ′ en (a, b) y una constante positiva k < 1
cuando
|g ′ (x)| 6 k, para todax ∈ (a, b)
Entonces, para cualquier número p0 en [a, b], la sucesión definida por
pn = g(pn−1 ), n>1
Manual de Estudio
2 MÉTODO DE PUNTO FIJO 11
y y =x
y y =x y = g(x)
t3 = g(t2)
t2 = g(t1) t2 = g(t1)
t3 = g(t2)
t1 = g(t0)
t1 = g(t0)
y = g(x)
t1 t3 t2 t0 x t0 t1 t2 x
Corolario 2.1 Si g satisface las hipótesis del teorema 2.2 las cotas del error que supone
utilizar pn para aproximar p están dadas por
|pn − p| 6 k n máx{p0 − a, b − p0 }
y por
kn
|pn − p| 6 |p1 − p0 |, para toda n > 1
1−k
Paso 3: Hacemos tn = t0
Paso 8: Parar.
Manual de Estudio
2 MÉTODO DE PUNTO FIJO 12
IV. Procedimiento
Creamos una interfaces gráficas de usuarios en MatLab usamos GUIDE, lo podemos
hacer Ejecutando la siguiente instrucción en la ventana de comandos: >> guide
Para empezar creamos una nueva figura y agregamos un Static Text, de bajo de esto
ponemos un Static Text y un Edit Text, debajo de esto ponemos un Static Text y
un Edit Text, debajo de estos controles ponemos un Static Text, un Edit Text y un
Push button, debajo de estos controles ponemos 5 List box,a un lado ponemos un
Axes, y finalmente agregamos un Static Text, un Edit Text, dos Push button; y lo
guardamos como: puntofijo.
Ahora vamos editar el callback del botón CALCULAR y agregamos el código ne-
cesario para calcular la las raı́ces de una ecuación algebraica con método de Punto
Fijo, luego editamos del botón SALIR y agregamos el código necesario para cerrar
la ventana, luego editamos del botón NUEVO, cuya acción es limpiar la caja del
texto de la función y los resultados de cada operación.
Con un click derecho en Push button1 menú, nos ubicamos en view Callbacks >>
Callbacks. Esto nos lleva a la subrutina
function pushbutton1_Callback(hObject, eventdata, handles), donde edita-
remos las siguientes lı́neas de código:
Manual de Estudio
2 MÉTODO DE PUNTO FIJO 13
g = get(handles.edit1,’string’);
a = str2double(get(handles.edit2,’string’));
n = str2double(get(handles.edit3,’string’));
f=strcat(g,’-x’);
xmin=a-2; xmax=a+2;
cadite=’Iter.|====’;
caddgx=’dg(x)|====’;
caderr=’Error|====|0’;
cadrai=’Pto fijo|====’;
i=1;
h=0.0001;
while i<=n
x=a;
r=eval(g);
%aproximación de la derivada de G(x)
x=a+h;
m=eval(g);
x=a-h;
w=eval(g);
dg=(m-w)/2*h;
cadite=strcat(cadite,’|’,num2str(i));
Manual de Estudio
2 MÉTODO DE PUNTO FIJO 14
cadrai=strcat(cadrai,’|’,num2str(r));
caddgx=strcat(caddgx,’|’,num2str(dg));
a=r;
if abs(dg) < 1
if i>=2
vact=r;
error=abs((vact-vant)/vact);
vant=vact;
caderr=strcat(caderr,’|’,num2str(error));
else
vant=r;
end
else
i=n;
msgbox(’Convergencia no garantizada’,’dg(x) > 1’);
end
i=i+1;
end
set(handles.listbox1,’string’,cadite);
set(handles.listbox2,’string’,cadrai);
set(handles.listbox3,’string’,caddgx);
set(handles.listbox4,’string’,caderr);
set(handles.edit4,’string’,r);
x=xmin:0.1:xmax;
y=eval(f);
plot(x,y)
hold on
plot(r,0,’ro’)
text(r,0.2,’Raı́z’)
xlabel(’X’)
ylabel(’Y’)
title([’Grafica Cartesiana f(x)=’,f]);
grid
hold off
Manual de Estudio
2 MÉTODO DE PUNTO FIJO 15
Haciendo el mismo procedimiento que el anterior esta vez con el botón Push button2,
donde editamos las siguientes lı́neas de código
set(handles.edit1,’string’,’’)
set(handles.edit2,’string’,’’)
set(handles.edit3,’string’,’’)
set(handles.edit4,’string’,’’)
set(handles.listbox1,’string’,’’);
set(handles.listbox2,’string’,’’);
set(handles.listbox3,’string’,’’);
set(handles.listbox4,’string’,’’);
set(handles.listbox5,’string’,’’);
axes(handles.axes1)
plot(0,0)
Haciendo el mismo procedimiento que el anterior esta vez con el botón Push button3,
donde editamos las siguientes lı́neas de código
Manual de Estudio
2 MÉTODO DE PUNTO FIJO 16
V. Cuestionario
1. Use el manejo algebraico para demostrar que las siguientes funciones tienen un punto
fijo en p exactamente cuando f (p) = 0, donde f (x) = x4 + 2x2 − x − 3
( )1/2
a) g1 (x) = (3 + x − 2x2 )1/4 x+3
c) g3 (x) =
x2 + 2
( )1/2
x + 3 − x4 3x4 + 2x2 + 3
b) g2 (x) = d ) g4 (x) =
2 4x3 + 4x − 1
2. aplique el método de iteración de punto fijo para determinar una solución con una
exactitud de 10−2 para x4 − 3x2 − 3 = 0 en [1, 2]. Utilice p0 = 1
3. aplique el método de iteración de punto fijo para determinar una solución exacta en
10−2 para x3 − x − 1 = 0 en [1, 2]. Utilice p0 = 1
4. aplique el teorema 2.2 para demostrar que g(x) = π + 0,5 sen(x/2) tiene un punto
fijo único en [0, 2π]. Use la iteración de punto fijo para obtener una aproximación al
punto fijo con una exactitud de 10−2 . Use el corolario 2.1 para estimar la cantidad
de iteraciones necesarias para lograr una exactitud de 10−2 y después compare esta
estimación teórica con la cantidad que realmente se requiere
Manual de Estudio
2 MÉTODO DE PUNTO FIJO 17
5. Aplique el teorema 2.2 para demostrar que g(x) = 2−x tiene un punto fijo único
en [ 13 , 1]. Utilice la iteración de punto fijo para obtener una aproximación del punto
fijo exacta en 10−4 . Use el corolario 2.1 para estimar la cantidad de estimaciones
necesarias para alcanzar una exactitud de 10−4 y después compare esta estimación
teórica con la cantidad que realmente requiere.
√
6. Aplique un método de iteración de punto fijo para obtener una aproximación a 3
con una exactitud de 10−4 . Compare su resultado con el número de iteraciones que
requiere la respuesta obtenida en el ejercicio 7 del método de secante
√
3
7. Use un método de iteración de punto fijo para obtener una aproximación a 25
con una exactitud de 10−4 . Compare su resultado con el número de iteraciones que
requiere la respuesta obtenida en el ejercicio 8 del método de secante
a) 3x2 − ex = 0 b) x − cos x = 0
10. Aplique el método de iteración de punto fijo para determinar una solución con una
exactitud de 10−4 con x = tan x, para x en [4, 5].
11. Aplique el método de iteración de punto fijo para determinar una solución con una
exactitud de 10−2 con 2 sen πx + x = 0, en [1, 2]. Use p0 = 1.
12. Un objeto que cae verticalmente en el aire está sujeto a una resistencia viscosa y
también a la fuerza de gravedad. Suponga que dejamos caer un objeto de masa m
desde una altura y0 y que la altura del objeto después de t segundos es
mg m2 g
y(t) = y0 + t − 2 (1 − e−kt/m )
k k
donde g = −32,17pies/s2 y k representa el coeficiente del aire en lb − s/f t. Suponga
que y0 = 300pies, m = 0,25lb, y que k = 0,1lb − s/f t. Calcule, con una exactitud
de 0,001s, el tiempo que tardara este peso de un cuarto de libra en caer al suelo.
Manual de Estudio
3 MÉTODO DE NEWTON-RAPHSON 18
I. Objetivos
Calcular las raı́ces de una ecuación algebraica o trascente con método de Newton-
Raphson, usando esta herramienta interfaces gráficas de usuarios en MatLab
3. Método de Newton-Raphson
El método de Newton-Raphson (o simplemente método de Newton) es un procedimien-
to general que se puede aplicar en diversas situaciones. Cuando se emplea para localizar
los ceros de una función real de varias variable real. Hay muchas formas de introducirlo.
La más común consiste en considerarlo gráficamente, a continuación introducimos basada
en los polinomios de Taylor.
Supongamos que f ∈ C 2 [a, b]. Sea x ∈ [a, b] una aproximación de p tal que f ′′ (x) ̸= 0
y |x − p| es pequeño. Consideremos el primer polinomio de Taylor para f (x) expandida
alrededor de x
(x − x)2 ′′
f (x) = f (x) + (x − x)f ′ (x) + f (ξ(x))
2
donde ξ(x) está entre x y x. Dado que f (p) = 0 esta ecuación, con x = p, da
(p − x)2 ′′
0 = f (x) + (p − x)f ′ (x) + f (ξ(p))
2
Derivamos el método de Newton suponiendo que, como p − x es tan pequeña, el término
que contiene (p − x)2 es mucho menor y que
Manual de Estudio
3 MÉTODO DE NEWTON-RAPHSON 19
Esto nos prepara para introducir el método de Newton-Raphson, el cual comienza con
una aproximación inicial p0 y genera la sucesión {pn } definida por
f (pn−1 )
pn = pn−1 − , para n > 1 (4)
f ′ (pn−1 )
La figura 5 muestra gráficamente cómo se obtiene las aproximaciones usando tangentes
sucesivas. Comenzamos con la aproximación inicial p0 , la aproximación p1 es la intersección
con el eje x de la lı́nea tangente a la gráfica de f en (p1 , f (p1 )) y ası́ sucesivamente.
y
Pendiente f ( p1)
y = f(x)
( p1 ,f( p1 ))
p0 Pendiente f ( p0)
p p2
p1 x
( p0 ,f( p0 ))
Teorema 3.1 Sea f ∈ C 2 [a, b]. Si p ∈ [a, b] es tal que f (p) = 0 y f ′ (p) ̸= 0, entonces
existe δ > 0 tal que el método de Newton genera una sucesión {pn }∞
n=1 que converge a p
para cualquier aproximación inicial p0 ∈ [p − δ, p + δ].
El teorema 3.1 nos dice que un intervalo apropiado el método de Newton convergerá siem-
pre.
El Método de Newton es una técnica muy poderosa pero muy cara matemáticamente
hablando pues exige conocer la derivada en cada iteración efectuada.
Manual de Estudio
3 MÉTODO DE NEWTON-RAPHSON 20
Paso 4: Hacemos pn = p0
f (pn )
Paso 5: p = pn −
f ′ (pn )
Paso 6: Si |p − pn | < Err entonces ir al paso (8) {Verificamos la tolerancia}
Paso 9: Parar.
IV. Procedimiento
Creamos una interfaces gráficas de usuarios en MatLab usamos GUIDE, lo podemos
hacer Ejecutando la siguiente instrucción en la ventana de comandos: >> guide
Para empezar creamos una nueva figura y agregamos un Static Text, de bajo de esto
ponemos un Static Text y un Edit Text, debajo de esto ponemos un Static Text y
un Edit Text, debajo de estos controles ponemos un Static Text, un Edit Text y un
Push button, debajo de estos controles ponemos 4 List box,a un lado ponemos un
Axes, y finalmente agregamos un Static Text, un Edit Text, dos Push button; y lo
guardamos como: puntofijo.
Manual de Estudio
3 MÉTODO DE NEWTON-RAPHSON 21
Ahora vamos editar el callback del botón CALCULAR y agregamos el código ne-
cesario para calcular la las raı́ces de una ecuación algebraica con método de Punto
Fijo, luego editamos del botón SALIR y agregamos el código necesario para cerrar
la ventana, luego editamos del botón NUEVO, cuya acción es limpiar la caja del
texto de la función y los resultados de cada operación.
Con un click derecho en Push button1 menú, nos ubicamos en view Callbacks >>
Callbacks. Esto nos lleva a la subrutina
function pushbutton1_Callback(hObject, eventdata, handles), donde edita-
remos las siguientes lı́neas de código:
Manual de Estudio
3 MÉTODO DE NEWTON-RAPHSON 22
f = get(handles.edit1,’string’);
a = str2double(get(handles.edit2,’string’));
n = str2double(get(handles.edit3,’string’));
xmin=a-2; xmax=a+2;
cadite=’Iter.|====’;
cadtea=’Pto fijo|====’;
cadder=’Derivada|======’;
caderr=’Error|====|0’;
i=1;
h=0.0001;
while i<=n
%aproximación de la derivada de G(x) corregir la condicion con la 2 derivada
x=a+h;
w=eval(f);
x=a-h;
z=eval(f);
der=(w-z)/(2*h);
x=a;
y0=eval(f);
r=a-y0/der;
cadite=strcat(cadite,’|’,num2str(i));
cadtea=strcat(cadtea,’|’,num2str(a));
cadder=strcat(cadder,’|’,num2str(der));
if i>=2
vact=r;
if vant~=vact
error=abs((vact-vant)/vact);
caderr=strcat(caderr,’|’,num2str(error));
vant=vact;
end
else
vant=r;
end
a=r;
i=i+1;
Manual de Estudio
3 MÉTODO DE NEWTON-RAPHSON 23
end
set(handles.listbox1,’string’,cadite);
set(handles.listbox2,’string’,cadtea);
set(handles.listbox3,’string’,cadder);
set(handles.listbox4,’string’,caderr);
set(handles.edit4,’string’,r);
x=xmin:0.1:xmax;
y=eval(f);
plot(x,y)
hold on
plot(r,0,’ro’)
text(r,0.1,’Raı́z’)
xlabel(’X’)
ylabel(’Y’)
title([’Grafica Cartesiana f(x)=’,f]);
grid
hold off
Haciendo el mismo procedimiento que el anterior esta vez con el botón Push button2,
donde editamos las siguientes lı́neas de código
set(handles.edit1,’string’,’’)
set(handles.edit2,’string’,’’)
set(handles.edit3,’string’,’’)
set(handles.edit4,’string’,’’)
set(handles.listbox1,’string’,’’);
set(handles.listbox2,’string’,’’);
set(handles.listbox3,’string’,’’);
set(handles.listbox4,’string’,’’);
axes(handles.axes1)
plot(0,0)
Haciendo el mismo procedimiento que el anterior esta vez con el botón Push button3,
donde editamos las siguientes lı́neas de código
Manual de Estudio
3 MÉTODO DE NEWTON-RAPHSON 24
if strcmp(ans,’No’)
return;
end
clear,clc,close all
V. Cuestionario
1. Sean f (x) = x2 − 6 y p0 = 1. Aplique el método de Newton-Raphson para encontrar
p2
2. Sean f (x) = −x3 − cos x y p0 = −1. Aplique el método de Newton para encontrar
p2 ¿Podrı́amos utilizar p0 = 0?
3. Aplique el método de Newton para obtener soluciones con una exactitud de 10−4
para los siguientes problemas.
Manual de Estudio
3 MÉTODO DE NEWTON-RAPHSON 25
4. Aplique el método de Newton para obtener soluciones con una exactitud de 10−5
para los siguientes problemas.
a) p0 = −100 c) p0 = −25 e) p0 = 50
b) p0 = −50 d ) p0 = 25 f ) p0 = 100
Manual de Estudio
5 MÉTODO DE LAS CUERDAS 26
I. Objetivos
Calcular las raı́ces de una ecuación algebraica o trascente con método de la secante
y de las cuerdas, usando esta herramienta interfaces gráficas de usuarios en MatLab
4. Método de la secante
El método de secante necesita sólo una evaluación de f (x) por paso y una raı́z simple,
es casi tan veloz como el método de Newton.
El método de la secante consiste en aproximar la derivada f ′ (pn−1 ) por el cociente
f (pn−2 ) − f (pn−1 )
pn−2 − pn−1
luego la formula de iteración es
La técnica que utiliza esta fórmula recibe el nombre de método de la secante (véase Fig
8(a)). Comenzando con las dos aproximaciones iniciales p0 y p1 , la aproximación p2 es la
intersección de x de la lı́nea que une (p0 , f (p0 )) y (p1 , f (p1 )). La aproximación p3 es la
intersección de la lı́nea que une (p1 , f (p1 )) y (p2 , f (p2 )).
Manual de Estudio
5 MÉTODO DE LAS CUERDAS 27
método que recomendamos, ilustra la forma en que puede incorporarse la inclusión entre
paréntesis.
Primero elegimos las aproximaciones iniciales p0 y p1 con f (p0 ) · f (p1 ) < 0. La apro-
ximación p2 se escoge de la misma manera que en el método de la secante: como la
intersección en x de la lı́nea que une (p0 , f (p0 )) y (p1 , f (p1 )). Para decidir con cuál se-
cante calcularemos p3 verificamos f (p2 ) · f (p1 ). Si este valor es negativo, entonces p1 , p2
encierra una raı́z, y elegiremos p3 como la intersección con x de la recta que une (p1 , f (p1 ))
y (p2 , f (p2 )). Si no, elegimos p3 como la intersección con x de la recta que une (p0 , f (p0 ))
y (p2 , f (p2 )) y después intercambiamos los indices de p0 y p1 . En forma análoga, una
vez encontrada p3 el signo de f (p3 ) · f (p2 ) determina si usaremos p2 y p3 o p3 y p1 para
calcular p4 . En el segundo caso se reetiqueta p2 y p1 . Con ellos nos describe en la figura
8(b) muestra cómo las iteraciones pueden diferir de las del método de secante. En este
ejemplo, las tres primeras aproximaciones son iguales, pero la cuarta es diferente.
y
y
y = f(x)
y = f(x)
p0 p2 p3 p0 p2 p3
p4 p1 x p4 p1 x
Figura 8:
Manual de Estudio
5 MÉTODO DE LAS CUERDAS 28
Paso 7: Tome p1 = p; q1 = q
Paso 9: Parar.
IV. Procedimiento
Creamos una interfaces gráficas de usuarios en MatLab usamos GUIDE, lo podemos
hacer Ejecutando la siguiente instrucción en la ventana de comandos: >> guide
Para empezar creamos una nueva figura y agregamos un Static Text, de bajo de esto
ponemos un Static Text y un Edit Text, debajo de esto ponemos un Static Text y
dos Edit Text, debajo de estos controles ponemos un Static Text, un Edit Text y un
Push button, debajo de estos controles ponemos 4 List box,a un lado ponemos un
Axes, y finalmente agregamos un Static Text, un Edit Text, dos Push button; y lo
guardamos como: reglafalsa.
Manual de Estudio
5 MÉTODO DE LAS CUERDAS 29
Ahora vamos editar el callback del botón CALCULAR y agregamos el código ne-
cesario para calcular la las raı́ces de una ecuación algebraica con método de Punto
Fijo, luego editamos del botón SALIR y agregamos el código necesario para cerrar
la ventana, luego editamos del botón NUEVO, cuya acción es limpiar la caja del
texto de la función y los resultados de cada operación.
Con un click derecho en Push button1 menú, nos ubicamos en view Callbacks >>
Callbacks. Esto nos lleva a la subrutina
function pushbutton1_Callback(hObject, eventdata, handles), donde edita-
remos las siguientes lı́neas de código:
f = get(handles.edit1,’string’);
a = str2double(get(handles.edit2,’string’));
b = str2double(get(handles.edit3,’string’));
n = str2double(get(handles.edit4,’string’));
xmin=a; xmax=b;
x=a; fa=eval(f);
x=b; fb=eval(f);
cadite=’Iter.|====’;
cadini=’ A |====’;
cadfin=’ B |====’;
caderr=’Error|====|0’;
Manual de Estudio
5 MÉTODO DE LAS CUERDAS 30
cadrai=’Raı́z |====’;
if fa*fb>0
msgbox(’En el intervalo dado no existen raices ’,’Método de la Regla falsa’)
else
i=1;
while i<=n
x=a; fa=eval(f);
x=b; fb=eval(f);
r=a-(fa*(b-a)/(fb-fa));
x=r; fr=eval(f);
cadite=strcat(cadite,’|’,num2str(i));
cadrai=strcat(cadrai,’|’,num2str(r));
cadini=strcat(cadini,’|’,num2str(a));
cadfin=strcat(cadfin,’|’,num2str(b));
if fa*fr<0
b=r;
else
a=r;
end
if i>=2
vact=r;
if vact~=vant
error=abs((vact-vant)/vact);
vant=vact;
caderr=strcat(caderr,’|’,num2str(error));
end
else
vant=r;
end
i=i+1;
end
set(handles.listbox1,’string’,cadite);
set(handles.listbox2,’string’,cadini);
set(handles.listbox3,’string’,cadfin);
set(handles.listbox4,’string’,cadrai);
Manual de Estudio
5 MÉTODO DE LAS CUERDAS 31
set(handles.listbox5,’visible’,’on’); %%cambio
set(handles.listbox5,’string’,caderr);
set(handles.edit5,’string’,r);
x=xmin:0.1:xmax;
y=eval(f);
plot(x,y)
hold on
plot(r,0,’ro’)
text(r,0.1,’Raı́z’)
xlabel(’X’)
ylabel(’Y’)
title([’Grafica f(x)=’,f]);
grid
hold off
end
Haciendo el mismo procedimiento que el anterior esta vez con el botón Push button2,
donde editamos las siguientes lı́neas de código
set(handles.edit1,’string’,’’)
set(handles.edit2,’string’,’’)
set(handles.edit3,’string’,’’)
set(handles.edit4,’string’,’’)
set(handles.listbox1,’string’,’’);
set(handles.listbox2,’string’,’’);
set(handles.listbox3,’string’,’’);
set(handles.listbox4,’string’,’’);
axes(handles.axes1)
plot(0,0)
Haciendo el mismo procedimiento que el anterior esta vez con el botón Push button3,
donde editamos las siguientes lı́neas de código
Manual de Estudio
5 MÉTODO DE LAS CUERDAS 32
end
clear,clc,close all
V. Cuestionario
1. Sea f (x) = x2 − 6. Con p0 = 3 y p1 = 0 obtenga p3 .
Manual de Estudio
5 MÉTODO DE LAS CUERDAS 33
tiene dos ceros reales, uno en [−1, 0] y el otro en [0, 1]. Trate de aproximar estos
ceros con una exactitud de 10−6 por medio de
Manual de Estudio
6 MÉTODO DEL MÜLLER 34
I. Objetivos
Calcular las raı́ces de una ecuación algebraica o trascente con método del Muller y
de las cuerdas, usando esta herramienta interfaces gráficas de usuarios en MatLab
(x0,f(x0))
(x1,f(x1))
(x2,f(x2))
h0
h1
x0 x1 x2 X
t=h0 t=h1 t=0
Manual de Estudio
6 MÉTODO DEL MÜLLER 35
t = x − x2 (5)
h0 = x0 − x2
(6)
h1 = x1 − x2
consideremos el polinomio cuadrático en la variable t:
y = at2 + bt + c (7)
e0 h1 − e1 h0
entonces a =
h1 h20 − h0 h21
e1 h20 − e0 h21
b =
h1 h20 − h0 h21
Manual de Estudio
6 MÉTODO DEL MÜLLER 36
Paso 1: Tome
h1 = x1 − x0
h2 = x2 − x1
δ1 = (f (x1 ) − f (x0 ))/h1 ;
δ2 = (f (x2 ) − f (x1 ))/h2 ;
d = (δ2 − δ1 )/(h2 + h1 );
i = 3
Paso 2: b = δ2 + h2 d;
D = (b2 − 4f (x2 )d)1/2 . (Nota: se puede necesitar aritmética compleja)
Paso 6: Tome
x0 = x1 ;
x1 = x2 ;
x2 = p;
h1 = x1 − x0
h2 = x2 − x1
δ1 = (f (x1 ) − f (x0 ))/h1
δ2 = (f (x2 ) − f (x1 ))/h2
d = (δ2 − δ1 )/(h2 + h1 )
i = i+1
Paso 8: Parar.
IV. Procedimiento
Creamos una interfaces gráficas de usuarios en MatLab usamos GUIDE, lo podemos
hacer Ejecutando la siguiente instrucción en la ventana de comandos: >> guide
Manual de Estudio
6 MÉTODO DEL MÜLLER 37
Para empezar creamos una nueva figura y agregamos un Static Text, de bajo de
esto ponemos un Static Text y un Edit Text, debajo de esto ponemos un Static
Text y tres Edit Text, debajo de estos controles ponemos un Static Text y un Push
button, debajo de estos controles ponemos 5 List box,a un lado ponemos un Axes, y
finalmente agregamos un Static Text, un Edit Text; Static Text, un Edit Text; Static
Text, un Edit Text dos Push button; y lo guardamos como: muller.
Manual de Estudio
6 MÉTODO DEL MÜLLER 38
Ahora vamos editar el callback del botón CALCULAR y agregamos el código ne-
cesario para calcular la las raı́ces de una ecuación algebraica con método de Punto
Fijo, luego editamos del botón SALIR y agregamos el código necesario para cerrar
la ventana, luego editamos del botón NUEVO, cuya acción es limpiar la caja del
texto de la función y los resultados de cada operación.
Con un click derecho en Push button1 menú, nos ubicamos en view Callbacks >>
Callbacks. Esto nos lleva a la subrutina
function pushbutton1_Callback(hObject, eventdata, handles), donde edita-
remos las siguientes lı́neas de código:
f = get(handles.edit1,’string’);
x0 = str2double(get(handles.edit2,’string’));
x1 = str2double(get(handles.edit3,’string’));
x2 = str2double(get(handles.edit4,’string’));
x=[x0 x1 x2];
y=eval(f);
x0=x(1);x1=x(2);x2=x(3);
% Cálculo de los coeficientes de P(x)
p=polyfit(x,y,2);
A=p(1);B=p(2);C=p(3);
% Cálculo de las raices de P(x)
r=roots(p);
r1=r(1);r2=r(2);
%it=1;
xmin=x0-1; xmax=x2+1;
cadini=’ X0 |====’;
cadmed=’ X1 |====’;
cadfin=’ X2 |====’;
cadrai1=’Aprox1 |====’;
cadrai2=’Aprox2 |====’;
% Agregando valores a la lista
cadini=strcat(cadini,’|’,num2str(x0));
cadmed=strcat(cadmed,’|’,num2str(x1));
cadfin=strcat(cadfin,’|’,num2str(x2));
cadrai1=strcat(cadrai1,’|’,num2str(r1));
Manual de Estudio
6 MÉTODO DEL MÜLLER 39
cadrai2=strcat(cadrai2,’|’,num2str(r2));
% Visualización de valores
set(handles.listbox1,’string’,cadini);
set(handles.listbox2,’string’,cadmed);
set(handles.listbox3,’string’,cadfin);
set(handles.listbox4,’string’,cadrai1);
set(handles.listbox5,’visible’,’on’); %%cambio
set(handles.listbox5,’string’,cadrai2);
set(handles.edit5,’string’,A);
set(handles.edit6,’string’,B);
set(handles.edit7,’string’,C);
x=xmin:0.1:xmax;
ya=eval(f);
plot(x,ya)
hold on
xlabel(’X’)
ylabel(’Y’)
title([’Grafica f(x)=’,f]);
grid
hold off
Haciendo el mismo procedimiento que el anterior esta vez con el botón Push button2,
donde editamos las siguientes lı́neas de código
set(handles.edit1,’string’,’’)
set(handles.edit2,’string’,’’)
set(handles.edit3,’string’,’’)
set(handles.edit4,’string’,’’)
set(handles.edit5,’string’,’’)
set(handles.edit6,’string’,’’)
set(handles.edit7,’string’,’’)
set(handles.listbox1,’string’,’’);
set(handles.listbox2,’string’,’’);
set(handles.listbox3,’string’,’’);
set(handles.listbox4,’string’,’’);
set(handles.listbox5,’string’,’’);
Manual de Estudio
6 MÉTODO DEL MÜLLER 40
axes(handles.axes1)
plot(0,0)
Haciendo el mismo procedimiento que el anterior esta vez con el botón Push button3,
donde editamos las siguientes lı́neas de código
Para Hallar la raı́z activamos nuestra aplicación, ejecutamos nuestro programa y tendre-
mos una salida como en la figura 12
Manual de Estudio
6 MÉTODO DEL MÜLLER 41
V. Cuestionario
1. Hallar la raı́z de la ecuación ln(x) − x + 2 por el método de Müller
4. Obtenga las aproximaciones, con una exactitud de 10−4 a todo los ceros reales del
siguiente polinomio aplicando el método de Müller
a) p(x) = x3 − 2x2 − 5
b) p(x) = x3 + 3x2 − 1
c) p(x) = x3 − x − 1
d ) p(x) = x4 + 2x2 − x − 3
e) p(x) = x3 + 4,001x2 + 4,002x + 1,101
f ) p(x) = x5 − x4 + 2x3 − 3x2 + x − 4
5. Aplique los métodos siguientes para obtener una solución con una exactitud de 10−4
para el problema
Manual de Estudio
REFERENCIAS 42
Referencias
[1] David Kincaid y Ward Cheney. Análisis Numérico. Addison-Wesley Iberoamericana,
S.A., Estados Unidos, Primera Edición 1994
[2] Herón Morales Marchena. Matlab 7 para ciencias e ingenierı́a Megabyte, S.A., Perú,
Primera Edición 2005
Manual de Estudio