Metodos bis fal_sec

170 visualizações

Publicada em

Ecuaciones no Lineales usando el software Matlab.

Publicada em: Engenharia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Metodos bis fal_sec

  1. 1. 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. 2. 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. 3. 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. 4. 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. 5. 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. 6. 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. 7. 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. 8. 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. 9. 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. 10. 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. 11. 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. 12. 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

×