Upload
universidad-peruana-union
View
145
Download
0
Embed Size (px)
Citation preview
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 222)(. 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
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 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 bac , 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
iii
bax ( punto medio )
ii
ii
iixb
aatienesexfaf
1
1;0)().(
ii
ii
iibb
xatienesexfaf
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
abLog
n
donde es la tolerancia.
x
-10
20
10
-20
30
f(x)
a c
b 2 3
raízx* f(a)
f(b)
f(c)
1 7 6 5 4 9 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.6f\n',e); else a=r; e=abs((r-va)/r); fprintf('%10.6f\n',e); end i=i+1; end fprintf('\n'); fprintf('La raíz es :%10.9f\n',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 xexxf 2.- 0)cos()( xxxf
3.- 0)cos(2)()( xxsenxf 4.- 0)1()cos()( 12xxxf
5.- 0)ln()2()( 2 xxxf 6.- 0)2()(4)( 22 senxxxsenxxf
7.- 012.0)log()( 2xxxf 8.- 06cos22)( xexf xx
II. Utilice el programa Bisección para hallar los ceros de las siguientes funciones:
1) 5)( 3xexf x 2) Lnxexsenxxf xcos)(
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) 21log210)( xxxxf 2) 1)()( xxsenxg
3) 42)()( xxLnxf 4) 12)(3
xex x
5) 3log)( 3cos xxexf xsenx 6) 2)( xex x
7) 4ln)( 3cosxxexf
xsenx 8) 22 )2()(4)( senxxxsenxx
9) )()( 1 xsenxxxf 10) 22 )cos2()cos(4)( xxxxxg
11) 12.0)log()( 2xxxh 12) 6cos22)( xexr xx
13) 0)ln()2()( 2 xxxf 14) 604.0)9.0(
1
01.0)3.0(
1)(
22 xxxf
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
iiiii
afbf
abbfbx ó
)()(
))((
ii
iiiii
afbf
abafax
Si iiiiii xbaatienesexfaf 11 ;;0)().(
Si iiiiii bbxatienesexfaf 11 ;;0)().(
Caso contrario ixx* (solución)
0a
0b
0x
*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.6f\n',e);
else
a=r; e=abs((r-va)/r);
fprintf('%10.6f\n',e);
end
i=i+1;
end
fprintf('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.- xexf x)( 2.- 2
.)( 3 xexxg 3.- xexx 2.)( 4.-
x
Lnxx
2)()(
5.- 3)( 12
xsenxxxf 6.- )()(
3
2
1 xsenexg x ; x>0 7.-
2)1log()( xxx
8.- 403)( 12 xxxx 9.- xexsenxh
10
3)()( 10.- xxxxfx
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.- xexxxxf 451.0)( 23 2.- 12.0)log()( 2xxxg
3.- xexsenxx x lncos)( 4.- 1)cosh().cos()( xxx ; donde cosh(x)=coseno hiperbólico
5.- xx
ex)( 6.- x
ex)( 7. 2
)(x
Lnxx
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
111
ii
iiiii
xfxf
xxfxxfx ……………………………(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
11
ii
iiiii
xfxf
xxxfxx
Otras equivalencias tenemos:
(A) 4;3;2;1;0,)()(
)()(
1
11
12 ixfxf
xfxxxx
ii
iii
ii
(B) 4;3;2;1;0,)()(
)()(
1
1
2 ixfxf
xfxxxx
ii
iii
ii
(C) 4;3;2;1;0,)()(
)(
1
1
2 i
xx
xfxf
xfxx
ii
ii
i
ii
(D) 4;3;2;1;0,)()(
)()(
1
11
2 ixfxf
xfxxfxx
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 xexxxxf 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.6f\n',e); else x0=r; e=abs((r-va)/r); fprintf('%10.6f\n',e); end i=i+1; end fprintf('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= 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.- xexxxx 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 xexxxx
4.- 23)( 2 xexxx 5.- 42)()()( 2xTanxSenSenxTanx