Вы находитесь на странице: 1из 10

EL MTODO DE LA BISECCIN

Teorema de Bolzano

Sea f una funcin continua en un intervalo [a, b] y tal que f(a) y f (b) tienen signos opuestos (es decir f(a).f
(b) < 0). Entonces existe c (a, b) tal que f(c)=0.

El Teorema de Bolzano afirma que si una funcin es continua en un intervalo cerrado y acotado y en los
extremos del mismo sta toma valores con signos opuestos, entonces existe al menos una raz de la
funcin en el interior del intervalo.

El metodo de biseccion consiste en subdividir en dos partes el intervalo en que se sabe que esta la raz, para
obtener un subintervalo de longitud igual a la mitad del anterior, y proseguir hasta que los subintervalos
resultantes tengan una longitud tan pequena como se quiera, ver la siguiente figura:

Tres etapas del metodo de biseccion. En cada iteracion se descarta la mitad del intervalo que no contiene a
la raz(en la que f no cambia de signo). El intervalo donde se encuentra la raz es cada vez mas pequeno y,
su punto medio se acerca cada vez mas a la solucion buscada.

Ejercicio 1
Sea la funcin: () = 230 4 + 18 3 + 9 2 221 9
Tiene dos races reales, una en [1; 0] y otra en [0; 1], calcularemos estas races mediante el mtodo de
biseccin.

Algoritmo (1):

Para el intervalo [1; 0]:


Datos de entrada:
() continua
[1; 0]
Numero de iteraciones(n)
Datos de salida:
Raz: 1 [1; 0]

C=0

Paso 1: mientras (c<n+1)

Paso 2: raz=( + )2

Paso 3: mostrar raz

Paso 4: si (). () < 0


b=raz

Caso contrario

a=raz

Paso 5: c=c+1

Paso 6: fin

Programa (1):

Para el intervalo [1; 0]:

1. % algoritmo: Biseccin
2. %nombre
3. %fecha: 21-06-2017
4. %compilador: MATLAB R2015a
5. clc
6. clear
7. disp ( )
8. a= input( a=-1 );
9. b= input( b=0 );
10. n= input( n= ) ;
11. c=0
12. while ( c<n )
13. raiz= ( + )2
14. fprintf( raiz%d.%10,6f\n,c,raiz);
15. fa=230*x^4+18*x^3+9*x^2-221x-9;
16. fraiz=230*raiz^4+18*raiz^3+9*raiz^2-221raiz-9;
17. if fa*fraiz<0
18. b=raiz;
19. else
20. a=raiz;
21. end
22. c=c+1
23. end
Algoritmo (2):
Para el intervalo [0; 1]:
Datos de entrada:
() continua
[0; 1]
Numero de iteraciones(n)
Datos de salida:
Raz: 2 [0; 1]

C=0

Paso 1: mientras (c<n+1)

Paso 2: raz=( + )2

Paso 3: mostrar raz

Paso 4: si (). () < 0

b=raz

Caso contrario

a=raz

Paso 5: c=c+1

Paso 6: fin

Programa (2):

Para el intervalo [0; 1]:

1. clc
2. clear
3. disp ( )
4. a= input( a=0 );
5. b= input( b=1 );
6. n= input( n= ) ;
7. c=0
8. while ( c<n )
9. raiz= ( + )2
10. fprintf( raiz%d.%10,6f\n,c,raiz);
11. fa=230*x^4+18*x^3+9*x^2-221x-9;
12. fraiz=230*raiz^4+18*raiz^3+9*raiz^2-221raiz-9;
13. if fa*fraiz<0
14. b=raiz;
15. else
16. a=raiz;
17. end
18. c=c+1
19. end
MTODO DE LA FALSA POSICIN

Aun cuando la biseccin es una tcnica perfectamente vlida para determinar races, su mtodo de
aproximacin por fuerza bruta es relativamente ineficiente. La falsa posicin es una alternativa basada
en una visualizacin grfica.

Un mtodo alternativo que aprovecha la visualizacin grfica consiste en unir () y () con una lnea
recta. La interseccin de esta lnea con el eje de las representa una mejor aproximacin de la raz. El
hecho de que se reemplace la curva por una lnea recta da una falsa posicin de la raz; de aqu el
nombre de mtodo de la falsa posicin, o en latn, regula falsi. Tambin se le conoce como mtodo de
interpolacin lineal.

Representacin grfica del mtodo de la falsa posicin. Con los tringulos semejantes sombreados se
obtiene la frmula para el mtodo.

Usando tringulos semejantes, la interseccin de la lnea recta con el eje de las se estima mediante:

( ) ( )
=


= . ( )
( )
( )
Finalmente tenemos que: = . ( )
( )

sta es la frmula de la falsa posicin, El valor de calculado con la ecuacin anterior, reemplazar,
despus, a cualquiera de los dos valores iniciales, o , y da un valor de la funcin con el mismo signo
de ( ). De esta manera, los valores y siempre encierran la verdadera raz. El proceso se repite
hasta que la aproximacin a la raz sea adecuada.
Algoritmo :
Datos de entrada:
() continua
a
Numero de iteraciones(c)
Datos de salida:
Races

C=0

Paso 1: mientras (c<n+1)

Paso 2: raz=( + )2

Paso 3: mostrar raz

Paso 4: si (). () < 0

b=raz

Caso contrario

a=raz

Paso 5: c=c+1

Paso 6: fin

programa :

clear all
format short;
a=input('Introduzca el valor de a: ');
b=input('Introduzca el valor de b: ');
cont=input('Introduzca el nmero de iteraciones cont: ');
fun=input('Introduzcal a funcion f(x)=','s');
f=inline(fun);
for k=1:cont
c=(f(b)*a-f(a)*b)/(f(b)-f(a));
e=abs((b-a)/2);
A(k,:)=[k a b c f(c) e];
if f(a)*f(c)<0
b=c;
else
a=c;
end
end
fprintf('\n \tk \ta \tb \tc \tf(c) \terror \n')
disp(A)
fprintf('Solucin:\n c=%8.5f\n',c)
fprintf('f(c)=%8.5f\n',f(c));
fprintf('error=%8.5f\n');
Muller

Una de las mayores ventajas del mtodo de Mller, es que al trabajar con la formula cuadrtica es posible
encontrar las races reales, tanto como las races complejas.

El mtodo de Mller en si es una generalizacin del mtodo de la secante, el cual obtiene las races,
estimando una proyeccin de una lnea recta en el eje x, a travs de dos valores de la funcin x 0 y x1 los
cuales determinan la siguiente aproximacin x2 como la intercepcin del eje x con la recta que pasa por
(x0 ,f(x0 )) y (x1,fx1)).

En cambio en el mtodo de Mller se usa tres aproximaciones inciales: x0, x1 y x2. Con la cual
procederamos a determina la siguiente aproximacin x3, considerando la intercepcin del eje x con la
parbola que pasa por (x0,f(x0)) , (x1,f(x1)) y (x2,f(x2)).

El mtodo consiste en obtener los coeficientes de los tres puntos, sustituirlos en la frmula cuadrtica y
obtener el punto donde la parbola intercepta el eje x. La aproximacin es fcil de escribir, en forma
conveniente esta sera:

Se busca esta parbola para intersectar los tres puntos [x0, f(x0)], [x1, f(x1)] y [x2, f(x2)].
Los coeficientes de la ecuacin anterior se evalan al sustituir uno de esos tres puntos para dar:

La ltima ecuacin genera que:


de esta forma, se puede tener un sistema de dos ecuaciones con dos incgnitas:

Definiendo de esta forma

Teniendo como resultado los coeficientes:

Hallando la raz, se implementar la solucin convencional, pero debido al error de redondeo potencial, se
usar una formulacin alternativa.

Algoritmo :
Datos de entrada:
() continua
X0,x1,x2
Numero de iteraciones(k)
Datos de salida:
Races

Paso 1: ingresar: x0,x1,x2, ()

Paso 2: los ciclos: ho,h1

Paso 3: mostrar raz:( 4)^0.5

Paso 4: terminar el ciclo

Paso 5: fin
Programa:

Clc

disp('dado fx,x0,x1,x2,N,d1,d2');
('criterio de parada ');
x0=input('x0= ');
x1=input('x1= ');
x2=input('x2= ');
N=input('numero de iteraciones n=');
disp('n r');
h1=x1-x0;
h2=x2-x1;
d1=((f(x1)-f(x0))/h1);
d2=(f(x2)-f(x1))/h2;
a=(d2-d1)/(h2+h1);
b=a*h1+d1;
c=fx2;
n=0;
whileN>0
d=-b+sqrt(b*b-4*a*c)/2*a;
d=r;
fprintf('%3.0f 10.8f\n',n,c);
n=n+1;
if n==N
break
end
MTODO DE ITERACIN DE PUNTO FIJO

Dada una ecuacin f(x) = 0, podemos transformarla, de alguna manera, en otra equivalente del tipo x =
g(x) para alguna funcin g. En este caso se tiene que: a es raz de f(x) = 0 f(a) = 0 a = g(a) a es
raz de x = g(x).
Definicin:
Un nmero a tal que a = g(a) se dice un punto fijo de la funcin g.
Cundo una funcin g tiene un punto fijo, y si lo tiene, cmo encontrarlo?
Teorema de punto fijo:
Si g es una funcin continua en [a, b] y g(x) [a, b] para todo x [a, b], entonces g tiene por lo menos un
punto fijo en [a, b]. Si adems, g(x) existe para todo x [a, b], y |g(x)| K < 1 para todo x [a,
b], K constante, entonces g tiene un nico punto fijo x [a, b]. La sucesin {xn}, con n definida, se
encuentra mediante la frmula de iteracin:

El comportamiento de los esquemas de punto fijo puede variar ampliamente desde la divergencia, lenta
convergencia, a la rpida convergencia.
La va ms simple (aunque no ms general) de caracterizar el comportamiento de la iteracin de punto
fijo es considerar la derivada de g en la solucin x*.
Si x* = g(x*) y |g(x*)| < 1, entonces el esquema es localmente convergente. Es decir, existe un intervalo
conteniendo x*tal que el correspondiente esquema iterativo es convergente si comienza dentro del
intervalo.
Programa:
xf(1)=input('Ingrese el valor inicial: ');

tol=input('Ingrese el porcentaje de error: ');

syms x;

f=input('Ingrese la funcin f(x), despejada g(f(x)): ');

i=1;

ea(1)=100;

while abs(ea(i))>=tol,

xf(i+1) = subs(f,x,xf(i));

ea(i+1) = abs((xf(i+1)-xf(i))/xf(i+1))*100;

i=i+1;

end

fprintf('i xf(i) Error aprox (i) \n');

for j=1:i;

fprintf('%2d \t %11.7f \t %7.3f \n',j-1,xf(j),ea(j));

end

Вам также может понравиться