1 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
MÉTODOS NUMÉRICOS CON SOFTWARE MATLAB
ECUACIONES NO LINEALES
MÉTODOS ITERATIVOS: MÉTODO GRÁFICO Y MÉTODO DE BISECCIÓN
RAÍCES DE ECUACIONES NO LINEALES
Las soluciones de una ecuación f(x)=0, se llaman ceros o raíces de f(x). En esta sesión
estudiaremos el método gráfico y el método de Bisección para obtener las raíces reales de
ecuaciones no lineales.
El problema general es que dada una función real IRIRf : , encontrar los valores de x para
los cuales f(x)=0. Es decir solucionar ecuaciones trascendentales como por ejemplo:
1) 012)(
3
xexf x
2) 0)tan(1)( 2
xxxg 3) )()ln()( 2
xsenxxx = 0
Definición.- (Cero de una función)
Supongamos que f(x) es una función continua. Cualquier número r tal que f(r)=0 se llama raíz
de la ecuación f(x)=0; también se dice que r es un cero de la función f(x).
MÉTODO GRÁFICO
Este método nos permite estimar los valores de las raíces.
PRIMERA FORMA
Consiste en trazar las gráfica de la función asociada f donde puedan reconocerse si existen
valores IRr tal que 0)(rf
Ejemplo: Hallar los ceros de la función real: 22)( 2
senxexxxf x
Resolución
Del gráfico se observa que hay tres cortes del eje X con la función f. Esto significa que la
ecuación f(x)=0 tiene tres raíces.
Si tomamos la función f(x)=0, es decir 022)( 2
senxexxxf x
y la graficamos,
obtendremos las tres aproximaciones.
i) Si f(x)=0, entonces 0222
senxexx x
%Ploteo de f con MATLAB
x=-3:0.05:4;
y=x.^2-2*x+exp(x).*sin(x)-2;
plot(x,y)
xlabel('EJE X')
ylabel('EJE Y')
title('f(x)=x.^2-2*x+exp(x).*sin(x)-2')
grid on
gtext('raiz 1')
gtext('raiz 2')
gtext('raiz 3')
Las raíces se localizan en los intervalos: ]0;1[1I ; ]2;1[2I ; ]4;3[1I
Raíces aproximadas de la ecuación f(x)=0 son:
Para el intervalo ]0;1[1I la aproximación es Raiz1=-0.8224
Para el intervalo ]2;1[2I la aproximación es Raiz2=1.1707
Para el intervalo ]4;3[1I la aproximación es Raiz3=3.218
2 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
SEGUNDA FORMA
Consiste en la transformar la función asociada f en la forma )()( 21 xfxf , luego f1 y f2 se
grafican en el mismo sistema de coordenadas donde las raíces de f son las intersecciones de
las gráficas.
Ejemplo: Estimar los valores de las raíces de 022)( 2
senxexxxf x
Resolución
i) Descomponemos la función en dos funciones f1 y f2 haciendo 0222
senxexx x
,
entonces
2
22)(. xxxsenx , donde por ejemplo obtenemos )(.1 xsenef x
; 2
2 22 xxf .
ii) Graficamos las funciones f1 y f2 observando del gráfico la intersección de f1 y f2 la cual nos
dará
las soluciones aproximadas de las tres raíces.
%gráfica con MATLAB
x=-2:0.05:4;
f1=exp(x).*sin(x);
f2=2+2*x-x.^2;
plot(x,f1,'b',x,f2,'r')
xlabel('EJE X')
ylabel('EJE Y')
title('MÈTODO GRÀFICO')
grid on
gtext('raiz 1')
gtext('raiz 2')
gtext('raiz 3')
gtext('f1=exp(x).*sin(x)')
gtext('f2=2+2*x-x.^2')
Raíces aproximadas de la ecuación f(x)=0
Raiz1=-0.8224
Raiz2=1.1707
Raiz3=3.218
TERCERA FORMA
MÉTODO DE BISECCIÓN
Es un método de localización que consiste en hallar ceros de funciones continuas. Debemos
empezar con un intervalo de partida [a ; b] en el que f(a) y f(b) tengan distinto signo. El proceso
consiste en tomar el punto medio del intervalo
2
ba
c y luego analizar las tres posibilidades
que pueden darse:
1) Si f(a) y f(c) tienen signos opuestos entonces hay un cero en [a ; c]
2) Si f(c) y f(b) tienen signos opuestos entonces hay un cero en [c ; b]
3) Si f(c)=0 entonces c es un cero
PROPOSICIÓN (Existencia)
Sea IRIRf : , una función continua en [a ; b], si 0)().( bfaf , entonces f posee al menos
una raíz en [a ; b]. Es decir 0)(],[ rfquetalbar
3 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
LOCALIZACIÓN
Problema. Determinar la solución a la ecuación baxxf ;;0)( …… (1)
Consideremos la hipótesis 1H :
“La función f es continua en ];[ 00 ba y 0)()( 00 bfaf ”
La hipótesis 1H verificada, el método considera como aproximación de la solución el punto
medio del intervalo de localización
2
00 ba
c , luego se toma la siguiente decisión:
1.- Si 0)()( 0 cfaf , el nuevo intervalo de localización es ];[ 0 ca en caso contrario será el
intervalo ];[ 0bc , efectuando este razonamiento en forma reiterada se obtiene la sucesión }{ ix
que converge a *
x solución de la ecuación (1) de la forma:
ITERACIONES
;2;1;0;];[*
ibax ii
2
ii
i
ba
x ( punto medio )
ii
ii
ii
xb
aa
tienesexfaf
1
1
;0)().(
ii
ii
ii
bb
xa
tienesexfaf
1
1
;0)().(
Gráficamente el método de Bisección significa:
El tamaño del intervalo después de n pasos de iteración es n
ab
2
00
, donde 0a y 0b son los
valores iniciales de a y b, de modo que el numerador es el tamaño del intervalo inicial.
Si la tolerancia del error es , el número de pasos de iteración necesarios es el entero n más
pequeño que satisface n
ab
2
00
, o en forma equivalente
)2(
00
Log
ab
Log
n
donde es la tolerancia.
x
-10
20
10
-20
30
f(x)
a c
b23
raízx*
f(a)
f(b)
f(c)
1 7 65 49 8
4 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
ALGORITMO DE LA BISECCIÓN
Input a , b , M , ,
)(afu
)(bfv
abc
Output vuba ,,,
If signo (u) = signo (v) then stop
for k=1,2,3,… M do
2/ee
eac
)(cfw
output k, c , w , e
if e or w then stop
if signo(w) signo(u) then
cb
wv
else
ca
wu
end if
end
%PROGRAMA BISECCIÓN
function Biseccion
fprintf ('n');
nombre_f=input(' Ingrese la función asociada f(x)=','s');
a=input(' ingrese el límite inferior : ');
b=input(' ingrese el límite superior : ');
fprintf ('n');
fprintf (' it a b aprox error n');
i=1; e=1; r=0;
while e>=3E-6 & i<=15
va=r;
r=(a+b)/2;
x=a ; fa=eval(nombre_f);
x=b ; fb=eval(nombre_f);
x=r ; fr=eval(nombre_f);
fprintf ('%3.0f %10.6f %10.6f %10.6f',i,a,b,r);
if fa*fr<=0
b=r; e=abs((r-va)/r);
fprintf('%10.6fn',e);
else
a=r; e=abs((r-va)/r);
fprintf('%10.6fn',e);
end
i=i+1;
end
fprintf('n');
fprintf('La raíz es :%10.9fn',r);
5 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
COMPILACIÓN DEL PROGRAMA
>> Biseccion
Ingrese la función asociada f(x)=x.^2-2*x+exp(x).*sin(x)-2
ingrese el límite inferior : 1
ingrese el límite superior : 2
it a b aprox error
1 1.000000 2.000000 1.500000 1.000000
2 1.000000 1.500000 1.250000 0.200000
3 1.000000 1.250000 1.125000 0.111111
4 1.125000 1.250000 1.187500 0.052632
5 1.125000 1.187500 1.156250 0.027027
6 1.156250 1.187500 1.171875 0.013333
7 1.156250 1.171875 1.164063 0.006711
8 1.164063 1.171875 1.167969 0.003344
9 1.167969 1.171875 1.169922 0.001669
10 1.169922 1.171875 1.170898 0.000834
11 1.170898 1.171875 1.171387 0.000417
12 1.170898 1.171387 1.171143 0.000208
13 1.170898 1.171143 1.171021 0.000104
14 1.170898 1.171021 1.170959 0.000052
La raíz es :1.170959473
En forma análoga la raíz 2 tenemos:
>> Biseccion
Ingrese la función asociada f(x)=x.^2-2*x+exp(x).*sin(x)-2
ingrese el límite inferior : -1
ingrese el límite superior : 0
it a b aprox error
1 -1.000000 0.000000 -0.500000 1.000000
2 -1.000000 -0.500000 -0.750000 0.333333
3 -1.000000 -0.750000 -0.875000 0.142857
4 -0.875000 -0.750000 -0.812500 0.076923
5 -0.875000 -0.812500 -0.843750 0.037037
6 -0.843750 -0.812500 -0.828125 0.018868
7 -0.828125 -0.812500 -0.820313 0.009524
8 -0.828125 -0.820313 -0.824219 0.004739
9 -0.824219 -0.820313 -0.822266 0.002375
10 -0.824219 -0.822266 -0.823242 0.001186
11 -0.823242 -0.822266 -0.822754 0.000593
12 -0.822754 -0.822266 -0.822510 0.000297
13 -0.822754 -0.822510 -0.822632 0.000148
14 -0.822632 -0.822510 -0.822571 0.000074
La raíz es: -0.822570801
6 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
En forma análoga la raíz3 tenemos:
Biseccion
Ingrese la función asociada f(x)=x.^2-2*x+exp(x).*sin(x)-2
ingrese el límite inferior : 3
ingrese el límite superior : 4
it a b aprox error
1 3.000000 4.000000 3.500000 1.000000
2 3.000000 3.500000 3.250000 0.076923
3 3.000000 3.250000 3.125000 0.040000
4 3.125000 3.250000 3.187500 0.019608
5 3.187500 3.250000 3.218750 0.009709
6 3.187500 3.218750 3.203125 0.004878
7 3.203125 3.218750 3.210938 0.002433
8 3.210938 3.218750 3.214844 0.001215
9 3.214844 3.218750 3.216797 0.000607
10 3.216797 3.218750 3.217773 0.000303
11 3.217773 3.218750 3.218262 0.000152
12 3.218262 3.218750 3.218506 0.000076
13 3.218506 3.218750 3.218628 0.000038
14 3.218506 3.218628 3.218567 0.000019
La raíz es: 3.218566895
Práctica dirigida con MATLAB
I. Utilice el método gráfico para hallar las raíces de las funciones:
1.- 0)( 2 x
exxf 2.- 0)cos()( xxxf
3.- 0)cos(2)()( xxsenxf 4.- 0)1()cos()( 12
xxxf
5.- 0)ln()2()( 2
xxxf 6.- 0)2()(4)( 22
senxxxsenxxf
7.- 012.0)log()( 2
xxxf 8.- 06cos22)( xexf xx
II. Utilice el programa Bisección para hallar los ceros de las siguientes funciones:
1) 5)( 3
xexf x
2) Lnxexsenxxf x
cos)(
3) 5)( 33
xexsenxf x
4) )log(32))3(tan()( 52
senxxxsenxf
5) 62cos)( 3
xxxsenxxf 6) )).cos(tan()( xxf
TAREA DOMICILIARIA
Utilice el método gráfico y el método de Bisección para hallar los ceros de las siguientes
funciones:
1) 2
1log210)( xxxxf 2) 1)()( xxsenxg
3) 42)()( xxLnxf 4) 12)(
3
xex x
5) 3log)( 3cos
xxexf xsenx
6) 2)( xex x
7) 4ln)( 3cos
xxexf
xsenx
8) 22
)2()(4)( senxxxsenxx
9) )()( 1
xsenxxxf 10) 22
)cos2()cos(4)( xxxxxg
11) 12.0)log()( 2
xxxh 12) 6cos22)( xexr xx
13) 0)ln()2()( 2
xxxf 14) 6
04.0)9.0(
1
01.0)3.0(
1
)( 22
xx
xf
7 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
MÉTODOS NUMÉRICOS CON SOFTWARE MATLAB
ECUACIONES NO LINEALES
MÉTODO DE RÉGULA FALSI (FALSA POSICIÓN)
Una de las razones de su introducción es que la velocidad de convergencia del método de Bisección es bastante
baja. Supongamos que f(a) y f(b) tienen distinto signo. En el método de bisección se usa el punto medio del
intervalo [a; b] para llevar a cabo el siguiente paso. Suele conseguirse una aproximación mejor usando el punto (c ;
0) en el que la recta secante L que pasa por los puntos [a; f(a)] y [b; f(b)] cruza el eje OX.
Gráficamente el método Régula Falsi significa tomar rectas secantes en forma sucesiva.
ALGORITMO DEL MÉTODO RÉGULA FALSI
If f(a)*f(b) <=0 then
Repeat
Calcular c
If f(a)*f(c)<=0 then
b=c
else
a=c
until )(cf Error
retorno raíz es c
else
cambiar límites
end Régula Falsi
E-1) Calcular los ceros de la función )tan(1)( 2
xxxf ; ]5.1;5.0[x
Resolución
i) Ploteando la curva
x=0.5:0.001:1.5;
y=sqrt(x.^2+1)-tan(x);
plot(x,y,'k')
grid on
zoom on
xlabel('EJE DE ABSCISAS')
ylabel('EJE DE ORDENADAS')
;2;1;0;];[*
ibax ii
)()(
))((
ii
iii
ii
afbf
abbf
bx ó
)()(
))((
ii
iii
ii
afbf
abaf
ax
Si iiiiii xbaatienesexfaf 11 ;;0)().(
Si iiiiii bbxatienesexfaf 11 ;;0)().(
Caso contrario ixx*
(solución)
0a
0b0x
*
x
[ )(; 00 bfb ]
L
2x
[ )(; 00 afa
]
[ )(; 00 xfx
]
3x
5x
4x
1x x
y
8 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
title('Gráfica para Régula Falsi')
% Compilar lo con r_falsa
Ingrese la función asociada f(x)=sqrt(x.^2+1)-tan(x)
ingrese el límite inferior : 0.8
ingrese el límite superior : 1.0
%Resultados
it a b aprox error
1 0.800000 1.000000 0.927346 1.000000
2 0.927346 1.000000 0.940046 0.013510
3 0.940046 1.000000 0.941320 0.001353
4 0.941320 1.000000 0.941447 0.000136
5 0.941447 1.000000 0.941460 0.000014
6 0.941460 1.000000 0.941461 0.000001
La raíz es :0.941461381
%PROGRAMA REGULA FALSI PARA HALLAR CEROS DE FUNCIONES
function r_falsa
fprintf ('n');
nombre_f=input(' Ingrese la función asociada f(x)=','s');
a=input(' ingrese el límite inferior : ');
b=input(' ingrese el límite superior : ');
fprintf ('n');
fprintf (' it a b aprox error n')
i=1; e=1; r=0;
while e>=3E-6 & i<=18
va=r;
x=a ; fa=eval(nombre_f);
x=b ; fb=eval(nombre_f);
r=a-(b-a)*fa/(fb-fa);
x=r; fr=eval(nombre_f);
fprintf ('%3.0f %10.6f %10.6f %10.6f',i,a,b,r);
if fa*fr<=0
b=r; e=abs((r-va)/r);
fprintf('%10.6fn',e);
else
a=r; e=abs((r-va)/r);
fprintf('%10.6fn',e);
end
i=i+1;
end
fprintf('La raíz es :%10.9fn',r);
I.-PRÁCTICA DIRIGIDA DE LABORATORIO CON “MATLAB”
Encuentre los ceros de las funciones utilizando el método de Régula Falsi de las siguientes funciones:
1.- xexf x
)( 2.-
2
.)( 3 x
exxg 3.- x
exx 2
.)( 4.-
x
Lnx
x
2
)(
)(
5.- 3)( 12
x
senxxxf 6.- )()( 3
2
1
xsenexg x
; x>0 7.- 2
)1log()( xxx
8.- 403)( 12
xxxx 9.- x
exsenxh 10
3
)()( 10.- xxxxf x
logcos)( 13
II.- TAREA
Utilice el método de Régula Falsi para hallar los ceros de las siguientes funciones:
9 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
1.- x
exxxxf 451.0)( 23
2.- 12.0)log()( 2
xxxg
3.- xexsenxx x
lncos)( 4.- 1)cosh().cos()( xxx ; donde cosh(x)=coseno hiperbólico
5.-
xx
ex)( 6.-
x
ex)( 7. 2
)(
x
Lnx
x
10 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
MÉTODOS NUMÉRICOS CON SOFTWARE MATLAB
ECUACIONES NO LINEALES
MÉTODO DE LA SECANTE.-
El método de la SECANTE es una variante de la iteración de Newton. Dados dos aproximaciones 1ix y
ix interceptando la recta que pasa por los puntos ])(;[ 11 ii xfx y ])(;[ ii xfx con el eje de abscisas,
como el método de la Régula falsi, determinamos el nuevo valor aproximado de ix obteniendo:
)()(
).().(
1
11
1
ii
iiii
i
xfxf
xxfxxf
x ……………………………(I)
A diferencia del método anterior no se efectúa el test de decisión para la localización de la raíz, para
aplicar (I) se hace ax0 ; bx1
La relación (I) se puede escribir como:
)()(
)).((
1
1
1
ii
iii
ii
xfxf
xxxf
xx
Otras equivalencias tenemos:
(A) 4;3;2;1;0,
)()(
)()(
1
11
12 i
xfxf
xfxx
xx
ii
iii
ii
(B) 4;3;2;1;0,
)()(
)()(
1
1
2 i
xfxf
xfxx
xx
ii
iii
ii
(C) 4;3;2;1;0,
)()(
)(
1
1
2 i
xx
xfxf
xf
xx
ii
ii
i
ii
(D) 4;3;2;1;0,
)()(
)()(
1
11
2 i
xfxf
xfxxfx
x
ii
iiii
i LA MAS RECOMENDADA A USAR
ALGORITMO DEL MÉTODO DE LA SECANTE
Secante
repeat
calcular x
21 xx ;
xx2
until Errorxx 21
retorno raíz es x
end secante
PLOTEO DE LA CURVA x
exxxxf 451.0)( 23
en ]5;5[x
x=-5:0.05:5;
f=0.1*x.^3-5*x.^2-x+4+exp(-x);
plot(x,f)
grid on
xlabel('ABSCISAS')
ylabel('ORDENADAS')
title('METODO DE LA SECANTE')
gtext('f=0.1*x.^3-5*x.^2-x+4+exp(-x)')
gtext('1RAIZ')
gtext('2RAIZ')
11 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
%PROGRAMA SECANTE
------------------------------------------------------------------------------------------------------------------
function secante2007
fprintf ('n');
nombre_f=input(' Ingrese la función asociada f(x)=','s');
x0=input(' ingrese el 1er punto inicio x0= ');
x1=input(' ingrese el 2do punto inicio x1= ');
fprintf ('n');
fprintf (' it x0 x1 aprox error n')
i=1; e=1; r=0;
while e>=3E-6 & i<=18
va=r;
x=x0 ; fx0=eval(nombre_f);
x=x1 ; fx1=eval(nombre_f);
%r=x1-(x1-x0)*fx1/(fx1-fx0);
r=(x0.*fx1-x1.*fx0)./(fx1-fx0);
x=r; fr=eval(nombre_f);
fprintf ('%3.0f %10.6f %10.6f %10.6f',i,x0,x1,r);
if fx0*fr<=0
x1=r; e=abs((r-va)/r);
fprintf('%10.6fn',e);
else
x0=r; e=abs((r-va)/r);
fprintf('%10.6fn',e);
end
i=i+1;
end
fprintf('La raíz es :%10.9fn',r);
------------------------------------------------------------------------------------------------------------------
COMPILACIÓN DEL PROGRAMA
>> secante2007
Ingrese la función asociada f(x)=0.1*x.^3-5*x.^2-x+4+exp(-x)
ingrese el 1er punto inicio x0= 0
ingrese el 2do punto inicio x1= 1
it x0 x1 aprox error
1 0.000000 1.000000 0.765448 1.000000
2 0.765448 1.000000 0.846891 0.096166
3 0.846891 1.000000 0.852334 0.006386
4 0.852334 1.000000 0.852684 0.000410
5 0.852684 1.000000 0.852706 0.000026
6 0.852706 1.000000 0.852708 0.000002
La raíz es :0.852707668
I.-PRÁCTICA DIRIGIDA DE LABORATORIO CON “MATLAB”
Encuentre los ceros de las funciones utilizando el método de la Secante para las siguientes funciones:
1.- )()2()( 23
xCosxxxSenxf 2.- 2)5(
))(()( xexSenCosexg xxSen
3.- 2)( xexf x
4.- 1)cosh().cos()( xxxg 5.- x
exxxx 485)( 23
6.- 2)tan(.)( xxx 7.- )cos()(
2
xexh x
8.- 2)3(
)2(2)( xxsenexh xxsen
12 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
TAREA
I. Utilice el método de la Secante para hallar los ceros de las siguientes funciones:
1.- 1)tan(.)( xxxf 2.- )()()( xsenxsenhxg 3.-
2
485)( 23 x
exxxx
4.- 23)( 2 x
exxx 5.- 42)()()( 2
xTanxSenSenxTanx