ecuaciones no lineales con matlab
DESCRIPTION
Ecuaciones no lineales con el método de Bisección, la regla falsa y la secante usando el Software Matlab.TRANSCRIPT
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 1/12
1 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
MÉTODOS NUMÉRICOS CON SOFTWARE MATLABECUACIONES NO LINEALES
MÉTODOS ITERATIVOS: MÉTODO GRÁFICO Y MÉTODO DE BISECCIÓNRAÍCES DE ECUACIONES NO LINEALESLas 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 deecuaciones no lineales.El problema general es que dada una función real IR IR f : , encontrar los valores de x paralos cuales f(x)=0. Es decir solucionar ecuaciones trascendentales como por ejemplo:
1) 012)(3
xe x f x 2) 0)tan(1)(
2 x x x g 3) )()ln()(
2 x sen x x x = 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ízde la ecuación f(x)=0; también se dice que r es un cero de la función f(x).
MÉTODO GRÁFICOEste método nos permite estimar los valores de las raíces.
PRIMERA FORMAConsiste en trazar las gráfica de la función asociada f donde puedan reconocerse si existenvalores IRr tal que 0)(r f
Ejemplo: Hallar los ceros de la función real: 22)( 2 senxe x x x f x Resolución
Del gráfico se observa que hay tres cortes del eje X con la función f. Esto significa que laecuación f(x)=0 tiene tres raíces.
Si tomamos la función f(x)=0, es decir 022)( 2
senxe x x x f x
y la graficamos,obtendremos las tres aproximaciones.i) Si f(x)=0, entonces 0222 senxe x x x
%Ploteo de f con MATLABx=-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 ongtext('raiz 1')gtext('raiz 2')gtext('raiz 3')
Las raíces se localizan en los intervalos: ]0;1[1 I ; ]2;1[2 I ; ]4;3[1 I Raíces aproximadas de la ecuación f(x)=0 son:Para el intervalo ]0;1[
1 I la aproximación es Raiz1=-0.8224
Para el intervalo ]2;1[2 I la aproximación es Raiz2=1.1707
Para el intervalo ]4;3[1 I la aproximación es Raiz3=3.218
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 2/12
2 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
SEGUNDA FORMAConsiste en la transformar la función asociada f en la forma )()( 21 x f x f , luego f 1 y f 2 segrafican en el mismo sistema de coordenadas donde las raíces de f son las intersecciones delas gráficas.Ejemplo: Estimar los valores de las raíces de 022)(
2 senxe x x x f
x Resolución
i) Descomponemos la función en dos funciones f 1 y f
2 haciendo 022
2 senxe x x
x ,entonces
222)(. x x x sen x , donde por ejemplo obtenemos )(.1 x sene f
x ; 2
2 22 x x f .
ii) Graficamos las funciones f 1 y f 2 observando del gráfico la intersección de f 1 y f 2 la cual nosdará
las soluciones aproximadas de las tres raíces.
%gráfica con MATLABx=-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 ongtext('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)=0Raiz1=-0.8224Raiz2=1.1707Raiz3=3.218
TERCERA FORMAMÉTODO DE BISECCIÓN
Es un método de localización que consiste en hallar ceros de funciones continuas. Debemosempezar 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 intervalo2
bac 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 IR IR f : , una función continua en [a ; b], si 0)().( b f a f , entonces f posee al menos
una raíz en [a ; b]. Es decir 0)(],[ r f quetal bar
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 3/12
3 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
LOCALIZACIÓN Problema. Determinar la solución a la ecuación ba x x f ;;0)( …… (1)
Consideremos la hipótesis1
H :
“La función f es continua en ];[ 00 ba y 0)()( 00 b f a f ”
La hipótesis1
H verificada, el método considera como aproximación de la solución el punto
medio del intervalo de localización2
00 bac , luego se toma la siguiente decisión:
1.- Si 0)()( 0 c f a f , 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 }{ i x
que converge a * x solución de la ecuación (1) de la forma:
ITERACIONES;2;1;0;];[
*iba x ii
2
iii
ba x ( punto medio )
ii
ii
ii xb
aatiene se x f a f
1
1;0)().(
ii
ii
iibb
xatiene se x f a f
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 esn
ab
2
00 , donde 0a y0
b 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 satisfacen
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íz x*
f(a)
f(b)
f(c)
1 7 65 49 8
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 4/12
4 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
ALGORITMO DE LA BISECCIÓNInput a , b , M , ,
)(a f u )(b f v abc
Output vuba ,,, If signo (u) = signo (v) then stop
for k=1,2,3,… M do2/ee eac )(c f w
output k, c , w , eif e or w then stop
if signo(w) signo(u) thencb wv
elseca wu
end ifend
%PROGRAMA BISECCIÓNfunction Biseccionfprintf ('\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<=0b=r; e=abs((r-va)/r);fprintf('%10.6f\n',e);
elsea=r; e=abs((r-va)/r);fprintf('%10.6f\n',e);
endi=i+1;
endfprintf('\n');fprintf('La raíz es :%10.9f\n',r);
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 5/12
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)-2ingrese el límite inferior : 1ingrese el límite superior : 2
it a b aprox error1 1.000000 2.000000 1.500000 1.000000
2 1.000000 1.500000 1.250000 0.2000003 1.000000 1.250000 1.125000 0.1111114 1.125000 1.250000 1.187500 0.0526325 1.125000 1.187500 1.156250 0.0270276 1.156250 1.187500 1.171875 0.0133337 1.156250 1.171875 1.164063 0.0067118 1.164063 1.171875 1.167969 0.0033449 1.167969 1.171875 1.169922 0.00166910 1.169922 1.171875 1.170898 0.00083411 1.170898 1.171875 1.171387 0.00041712 1.170898 1.171387 1.171143 0.000208
13 1.170898 1.171143 1.171021 0.00010414 1.170898 1.171021 1.170959 0.000052
La raíz es :1.170959473
En forma análoga la raíz 2 tenemos:
>> BiseccionIngrese la función asociada f(x)=x.^2-2*x+exp(x).*sin(x)-2
ingrese el límite inferior : -1ingrese el límite superior : 0
it a b aprox error1 -1.000000 0.000000 -0.500000 1.0000002 -1.000000 -0.500000 -0.750000 0.3333333 -1.000000 -0.750000 -0.875000 0.1428574 -0.875000 -0.750000 -0.812500 0.0769235 -0.875000 -0.812500 -0.843750 0.0370376 -0.843750 -0.812500 -0.828125 0.0188687 -0.828125 -0.812500 -0.820313 0.0095248 -0.828125 -0.820313 -0.824219 0.0047399 -0.824219 -0.820313 -0.822266 0.00237510 -0.824219 -0.822266 -0.823242 0.00118611 -0.823242 -0.822266 -0.822754 0.00059312 -0.822754 -0.822266 -0.822510 0.00029713 -0.822754 -0.822510 -0.822632 0.00014814 -0.822632 -0.822510 -0.822571 0.000074
La raíz es: -0.822570801
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 6/12
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)-2ingrese el límite inferior : 3ingrese el límite superior : 4
it a b aprox error
1 3.000000 4.000000 3.500000 1.0000002 3.000000 3.500000 3.250000 0.0769233 3.000000 3.250000 3.125000 0.0400004 3.125000 3.250000 3.187500 0.0196085 3.187500 3.250000 3.218750 0.0097096 3.187500 3.218750 3.203125 0.0048787 3.203125 3.218750 3.210938 0.0024338 3.210938 3.218750 3.214844 0.0012159 3.214844 3.218750 3.216797 0.00060710 3.216797 3.218750 3.217773 0.00030311 3.217773 3.218750 3.218262 0.000152
12 3.218262 3.218750 3.218506 0.00007613 3.218506 3.218750 3.218628 0.00003814 3.218506 3.218628 3.218567 0.000019
La raíz es: 3.218566895
Práctica dirigida con MATLABI. Utilice el método gráfico para hallar las raíces de las funciones:
1.- 0)( 2 x
e x x f 2.- 0)cos()( x x x f
3.- 0)cos(2)()( x x sen x f 4.- 0)1()cos()( 12 x x x f
5.- 0)ln()2()( 2 x x x f 6.- 0)2()(4)( 22 senx x xsen x x f 7.- 012.0)log()(
2 x x x f 8.- 06cos22)( xe x f
x x
II. Utilice el programa Bisección para hallar los ceros de las siguientes funciones:
1) 5)( 3 xe x f x 2) Lnxe x senx x f xcos)(
3) 5)( 33 xe x sen x f x 4) )log(32))3(tan()( 52 senx x x sen x f
5) 62cos)( 3 x x x senx x f 6) )).cos(tan()( x x f TAREA DOMICILIARIAUtilice el método gráfico y el método de Bisección para hallar los ceros de las siguientesfunciones:1) 2
1log210)( x x x x f 2) 1)()( x x sen x g
3) 42)()( x x Ln x f 4) 12)(3
xe x x
5) 3log)( 3cos x xe x f x senx 6) 2)( xe x x
7) 4ln)( 3cos
x xe x f x senx 8) 22
)2()(4)( senx x xsen x x
9) )()( 1 x sen x x x f 10) 22 )cos2()cos(4)( x x x x x g
11) 12.0)log()( 2
x x xh 12) 6cos22)( xe xr x x
13) 0)ln()2()( 2 x x x f 14) 604.0)9.0(
1
01.0)3.0(
1)(
22 x x x f
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 7/12
7 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
MÉTODOS NUMÉRICOS CON SOFTWARE MATLABECUACIONES 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 delintervalo [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 FALSIIf f(a)*f(b) <=0 then
RepeatCalcular cIf f(a)*f(c)<=0 then
b=celse
a=c
until )(c f Error
retorno raíz es celsecambiar límites
end Régula Falsi
E-1) Calcular los ceros de la función )tan(1)( 2 x x x f ; ]5.1;5.0[ x
Resolucióni) Ploteando la curvax=0.5:0.001:1.5;y=sqrt(x.^2+1)-tan(x); plot(x,y,'k')
grid on
zoom onxlabel('EJE DE ABSCISAS')ylabel('EJE DE ORDENADAS')
;2;1;0;];[* iba x ii
)()(
))((
ii
iiiii
a f b f
abb f b x ó
)()(
))((
ii
iiiii
a f b f
aba f a x
Si iiiiii xbaatiene se x f a f 11 ;;0)().(
Siiiiiii bb xatiene se x f a f 11 ;;0)().(
Caso contrario i x x* (solución)
0a
0b
0 x
* x [ )(; 00 b f b ]
L
2 x
[ )(; 00 a f a
[ )(; 00 x f x
3 x
5 x
4 x
1 x
x
y
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 8/12
8 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
title('Gráfica para Régula Falsi')
% Compilar lo con r_falsaIngrese 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%Resultadosit a b aprox error
1 0.800000 1.000000 0.927346 1.0000002 0.927346 1.000000 0.940046 0.0135103 0.940046 1.000000 0.941320 0.0013534 0.941320 1.000000 0.941447 0.0001365 0.941447 1.000000 0.941460 0.0000146 0.941460 1.000000 0.941461 0.000001
La raíz es :0.941461381
%PROGRAMA REGULA FALSI PARA HALLAR CEROS DE FUNCIONESfunction r_falsafprintf ('\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.6f\n',e);
elsea=r; e=abs((r-va)/r);
fprintf('%10.6f\n',e);endi=i+1;
endfprintf('La raíz es :%10.9f\n',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.- xe x f x)( 2.-2
.)( 3 xe x x g 3.- xe x x 2.)( 4.-
x
Lnx x
2)(
)(
5.- 3)( 12
x senx x x f 6.- )()(
3
2
1 x sene x g x ; x>0 7.-
2)1log()( x x x
8.- 403)( 12
x x x x 9.- xe x sen xh
10
3)()( 10.- x x x x f x
logcos)( 13
II.- TAREAUtilice el método de Régula Falsi para hallar los ceros de las siguientes funciones:
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 9/12
9 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
1.- xe x x x x f 451.0)( 23
2.- 12.0)log()( 2
x x x g
3.- xe x senx x x lncos)( 4.- 1)cosh().cos()( x x x ; donde cosh(x)=coseno hiperbólico
5.- x x
e x)( 6.- x
e x)( 7.2
)( x
Lnx x
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 10/12
10 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
MÉTODOS NUMÉRICOS CON SOFTWARE MATLABECUACIONES 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
1i x y
i x interceptando la recta que pasa por los puntos ])(;[
11 ii
x f x y ])(;[ii
x f x con el eje de abscisas,
como el método de la Régula falsi, determinamos el nuevo valor aproximado dei
x obteniendo:
)()(
).().(
1
111
ii
iiiii
x f x f
x x f x x f 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 a x0 ; b x
1
La relación (I) se puede escribir como:)()(
)).((
1
11
ii
iiiii
x f x f
x x x f x x
Otras equivalencias tenemos:
(A)
4;3;2;1;0,)()()()(
1
1112 i
x f x f x f x x x x
ii
iiiii
(B) 4;3;2;1;0,)()(
)()(
1
1
2 i x f x f
x f x x x x
ii
iii
ii
(C) 4;3;2;1;0,)()(
)(
1
12 i
x x
x f x f
x f x x
ii
ii
iii
(D) 4;3;2;1;0,)()(
)()(
1
11
2 i x f x f
x f x x f x x
ii
iiii
i LA MAS RECOMENDADA A USAR
ALGORITMO DEL MÉTODO DE LA SECANTESecante
repeat
calcular x
21 x x ;
x x2
until Error x x 21
retorno raíz es xend secante
PLOTEO DE LA CURVA xe x x x x f 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 onxlabel('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')
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 11/12
11 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
%PROGRAMA SECANTE------------------------------------------------------------------------------------------------------------------function secante2007fprintf ('\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<=0x1=r; e=abs((r-va)/r);fprintf('%10.6f\n',e);
elsex0=r; e=abs((r-va)/r);fprintf('%10.6f\n',e);
endi=i+1;
endfprintf('La raíz es :%10.9f\n',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= 0ingrese el 2do punto inicio x1= 1it x0 x1 aprox error1 0.000000 1.000000 0.765448 1.0000002 0.765448 1.000000 0.846891 0.0961663 0.846891 1.000000 0.852334 0.0063864 0.852334 1.000000 0.852684 0.0004105 0.852684 1.000000 0.852706 0.0000266 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 xCos x x xSen x f 2.- 2)5())(()( xe xSenCose x g
x xSen
3.- 2)( xe x f x 4.- 1)cosh().cos()( x x x g 5.- x
e x x x x 485)( 23
6.- 2)tan(.)( x x x 7.- )cos()(2
xe xh x 8.- 2)3(
)2(2)( x x sene xh x x sen
7/21/2019 Ecuaciones no Lineales con Matlab
http://slidepdf.com/reader/full/ecuaciones-no-lineales-con-matlab 12/12
12 DR. SORIA QUIJAITE JUAN JESÚS MÉTODOS NUMÉRICOS
TAREAI. Utilice el método de la Secante para hallar los ceros de las siguientes funciones:
1.- 1)tan(.)( x x x f 2.- )()()( x sen x senh x g 3.-2
485)( 23 xe x x x x
4.- 23)( 2 xe x x x 5.- 42)()()( 2 xTanxSenSenxTan x