You are on page 1of 40

Matlab, Mtodo de Biseccin para

Raices de Ecuaciones
10 ABRIL, 2013 / JULIO CSAR

[RECUERDA, EN ESTA PGINA EL CDIGO SE ENCUENTRA AL


FINAL PARA SU DESCARGA]
Una de los usos mas importares en la aplicacin de los mtodos
numricos

es

el

de

hallar

las races de

ecuaciones

o tambin llamados ceros de las funciones, ya sean funciones


lineales o no lineales, como siempre, los mtodos numricos son
usados en las ocasiones donde lo que necesitamos no requiere
de la precisin exacta como cuando se hallan dichos valores
analticamente, es decir con papel y lpiz y hacer ciertos
despejes, en algunos casos esto resulta trivial, pero en otros, no
resulta tan fcil, y si se hicieran de forma simblica, el costo
computacional no permitira que fuera para nada optimo, es
aqu donde entran nuestros mtodos numricos a salvar
nuestros diseos o cualquier trabajo que con base a esos datos
estemos desarrollando.
Existe gran variedad de mtodos para hallar dichas races de
ecuaciones,

algunos

son

originales,

otros

tantos

son

derivaciones de estos, o corrigen falencias presentadas por los


originales, hacindolos mas ptimos tanto computacionalmente
hablando como ms precisos en sus resultados.
En esta vez ser de nuestro inters el desarrollo de un tipo
de mtodos,
partiendo

conocidos
del

como

mtodos

hecho

de
que

intervalo
un

intervalo, matemticamente hablando

es

el

conjunto

que

esta comprendido entre dos valores.


Los mtodos de intervalo, sacan ventaja del hecho que
una funcin normalmente cambia de signo en la vecindad de
una raz como se ve en la figura 1.

cambio de signo en la vecindad de una raz.


En la figura 1 se puede apreciar lo anteriormente dicho, donde
en un intervalo comprendido entre XL (lower) y XU (upper)
la funcin cambia de signo al cortar el eje x, es esta situacin en
particular la que aprovechan los mtodos de intervalo.
El algoritmo de la biseccin es muy bsico y consta de los
siguientes pasos:
1. Escoger las estimaciones iniciales XL y Xu es decir, el
intervalo, de tal forma que se cumpla que:
2. Realizar una divisin del intervalo que corresponder a
un estimado de la raz:

3.

Realizar las siguientes evaluaciones para determinar el

intervalo en el cual esta la raz:


Si f(XL)*f(Xr)<0 la raz se encuentra en el intervalo inferior,
entonces Xu=Xr, y se retorna al paso 2.
Si f(XL)*f(Xr)>0 la raz se encuentra en el intervalo
superior, entonces XL=Xr, y se retorna al paso 2.
Si f(XL)*f(Xr)=0 la raz es igual a Xr (muy poco probable),
se terminan las iteraciones.
Cdigo en Matlab.
En

nuestro

caso,

inicialmente

podemos

hacer

una

representacin grfica de la funcin para que se vea con mayor


claridad el intervalo apropiado para iniciar las iteraciones. (para
ver la imagen mejor, dar clic sobre ella).

Seguidamente de la visualizacin de la respectiva grfica de


la funcin, se pretende que el usuario ingrese los limites: ya sea
que la funcin reciba estos como parmetros o de la siguiente
forma dentro de la funcin:

Debido a la posibilidad que el usuario ingrese un intervalo no


apropiado, es decir un intervalo donde no se cumpla que
la funcin cambia de signo, es bueno enviar un mensaje de
advertencia, avisando que el intervalo no es valido, esto lo
hemos hecho de la siguiente forma: (para visualizar mejor la
imagen darle clic).

Finalmente se inicia el mtodo de biseccin, con un ciclo, un


umbral de error que ya hemos definido previamente de
0.000001% y con las respectivas sentencias condicionales
( if ) para cada uno de los 3 posibles casos: (dar clic en la
imagen para ver mejor).

Cabe aclarar que para el correcto llamado de la funcin, debe de


ser previamente definida una variable simblica X con el
comando SYMS de Matlab, y posteriormente escribir la funcin
Y correspondiente, para pasarla como parmetro a la funcin
biseccion(Y) como ilustra la siguiente imagen.

Finalmente, despus de

la ejecucin del cdigo

la funcin de

Matlab llamada biseccin, nos retorna una variable con el


respectivo valor aproximado de la raz, con una precisin del
0.000001% de error.

El mtodo de biseccin en particular sirve para encontrar


una raz simple en una funcin fcil de evaluar, pero debido a
que principalmente los mtodos numricos son usados para
ecuaciones que no son tan fciles de evaluar, las funciones
programadas requieren de bastantes lineas de cdigo y

se

deben evaluar muchas veces para ir cambiando los lmites para


finalmente encontrar la raz, este mtodo ya no es tan
efectivo. Debido a factores de este tipo, es muy importante que
los algoritmos numricos hagan lo ms mnimo posible el
nmero de evaluaciones de la funcin. Es por esto que el
mtodo de biseccin se hace ineficiente, ya que la funcin debe
ser evaluada en cada ciclo.
El cdigo respectivo

del

programa

mostrado

en

las imgenes anteriores, puede ser descargado aqu puedes


comentar las preguntas que tengas con respecto a este cdigo.

METODO DE BISECCION Y
NEWTON-RAPSHON
EN MATLAB
April 8, 2014 Leave a comment

En el siguiente articulo se precentaran los siguientes metodos, el


de biseccion y el de newton-rapshon, estos son metodos para
encontrar las raices de polinomios, son procesos muy largos y
repetitivos segun la complejidad del polinomio, por lo tanto se
planteara la solucion de estos metodos atraves de un programa
en matlab.
Todo lo que se vera en el articulo fue desarrolla y comprobado
en matlab 2008.

Objetivo
El usuario debe ser capaz de desarrollar un programa en matlab
el cual encuentre de manera correcta las raices de diferentes
polinomios utilizando los metodos de biseccion o de newtonrapshon.

Metodo de Biseccion
El Mtodo de Biseccion se basa en la bsqueda incremental
donde el intervalo se divide siempre en dos. Si la funcin
previamente planteada cambia de signo sobre un intervalo, se
evala el valor de la funcin en el punto medio de este intervalo.
La posicin de la raz se determina situndola en el punto medio

del subintervalo dentro del cual ocurre un cambi de signo. El


proceso se repite hasta obtener una mejor aproximacin.
Los 2 teoremas que dan origen al metodo de biseccion son los
siguientes;
-Teorema de Bolzano: Sea f : [a; b] C IR > IR una funcin
continua en [a; b] tal que f(a) f(b)< 0, esdecir, que tiene
distinto signo en a y en b. Entonces, existe c 2 (a; b) tal que f(c)
= 0.
-Teorema de valor intermedio: Sea f : [a; b] C IR > IR
continua en [a; b], y tal que f(a) <(b) entonces, para cualquier k
tal que f(a) < k < f(b) existe x0 2 (a; b) tal que f(x0) = k

Ejemplo;
Encontrar x con un error ms pequeo que 0.05 el punto de
corte de las funciones h(x) = sen(x) y g(x) = -x + 1.
Dado que queremos encontrar la solucion de la ecuacin senx =
-x + 1 lo que vamos a hacer es definir la funcin f(x) = sen(x) +
x 1 y encontraremos sus ceros mediante el mtodo de la
biseccin. Observamos que f(x) es continua en (-1; +1) por ser
suma de funciones elementales. Buscamos x1 y x2 tal que f(x1)
* f(x2) < 0.
x1 = 0
f(x1) = -1

x2 = 1
f(x2) = 0;8415

x3 =(x1 + x2)/2= 0;5 > < 0;5


f(x3) = -0;0206
x3 = 0;5

x2 = 1

f(x3) = -0;0206

f(x2) = 0;8415

x4 =(x3 + x2)/2= 0;75 > < 0;25


f(x4) = 0;4316
x3 = 0;5

x4 = 0;75

f(x3) = -0;0206

f(x4) = 0;4316

x5 =(x3 + x4)/2= 0;625 > < 0;125


f(x5) = 0;2101
x3 = 0;5

x5 = 0;625

f(x3) = -0;0206

f(x5) = 0;2101

x6 =(x3 + x5)/2= 0;5625 > < 0;0625


f(x6) = 0;0958
x3 = 0;5

x6 = 0;5625

f(x3) = -0;0206

f(x6) = 0;0958

x7 = (x3 + x6)/2
= 0;53125 > < 0;03125
f(x7) = 0;0379
Hemos encontrado que 0;53125 0;03125 es solucin de la
ecuacin y por tanto ser el punto de corte de las dos funciones
dadas.

Metodo de biseccion, solucion en


Matlab.
A continuacion se explicara paso a paso el como programar
matlab para dar solucion a una funcion, polinomio o ecuacion.
para comenzar abriremos matlab, como ya se mencion
anteriormente todo lo realizado en este articulo se lleva acabo
en matlab version 7.6.0 2008.

nuestra zona de trabajo sera la Ventana de comandos


(command windows)

Todo nuestro trabajo se llevara acabo en nuestra ventada de


comando, en esta introduciremos el siguiente codigo como se
muestra en la imagen; (codigo)

Una ves finalizada la introduccion de los datos en la ventana de


comando daremos un enter para que comience a correr el
programa;

Una ves iniciado el programa procederemos a introducir los


datos que se nos solicitan;

Una ves introducidos estos datos daremos un enter para obtener


los resultados, la solucion de esta funcion segun los parametros
indicado atraves del metodo de biseccion s la siguiente;

Utilizaremos el siguiente comando para graficar la solucion y


comprobar la respuesta.
x= [-5 : 0.1 : 10]
y = -0.4.*X.^2 + 2.2.*X + 4.7
plot (x,y)

El siguiente ejemplo se realizara de forma que el programa nos


indique que no existe raiz dentro de este intervalo.

Algoritmo del metodo de Biseccion.


1- Iniciar programa.
2-Introducir la funcion (polinomio).
3-Introducir limite inferior.
4- Introducir limite Superior.
5- Introducir porcentaje de error.
6- El programa multiplica los limites y espera que sean menores
a cero.
7- El programa calcula la primera aproximacion de la raiz.

8- Se determina en que sub-intervalo se encuentra la raiz.


9- Si el producto de los limites es menor que cero volver al paso
7.
10- Si el producto de los limites es mayor que cero volver al
paso 3.
11- Si el producto de los limites es igual a cero la raiz se a
encontrado.
12- Imprimir resultados.
13-Fin.

Diagrama de flujo, Metodo de biseccion

Metodo de Newton-Rapshon

El mtodo de Newton-Raphson es un mtodo iterativo que nos


permite las raices de una ecuacin, funcion o polinomio. Se con
estimacin inicial de la solucin x0 y construimos una sucesin
de aproximaciones siguiendo la formula del metodo;
xj+1 = xj (f(xj)/f(xj))

Ejemplo;
-El polinomo de ejemplo es el siguiente; f(x) = (e^x) (1/x).
Expresamos la ecuacin, funcion o polinomio en la forma f(x)=0,
e identificamos f.
Calculamos la derivada: f0(x) = (e^x) +(1/x^2)
Utilizamos la formula del metodo: xj+1 = xj [{ (e^xj) (1/xj)}/
{(e^xj) + (1/x^2)}]
Tomamos una estimacin inicial de la solucin. En este caso
podemos tomar por ejemplo x0 = 1.0, y calculamos las
siguientes aproximaciones. Desde el punto de vista prctico, si
deseamos aproximar la solucin con 6 decimales, podemos
detener los clculos cuando dos aproximaciones consecutivas
coincidan hasta el decimal 8. En nuestro caso, obtendramos:
x0 = 1.0.
x1 = 1 [{ (e^1) (1/1)}/{(e^1) + (1/1^2)}]= 0.53788284.
x2 = x1 [{ (e^x1) (1/x1)}/{(e^x1) + (1/x1^2)}]0.56627701

x3 = 0.56714 258.
x4 = 0.56714 329.
x5 = 0.56714 329.
Podemos, entonces, tomar como solucin x = 0.567143.

Metodo de Newton-Rapshon, solucion


en Matlab.
A continuacion se mostrara como resolver una funcion,
polinomio o ecuacion por el metodo de newton-rapshon
utilizando matlab;
Ubicamos la ventana de comando;

una ves que ubicamos la ventana de comando introduciremos el


siguiente codigo como se muestra en la imagen; (codigo)

Una ves introducido el codigo daremos un enter para que


comience a correr el programa, y comensaremos a introducir los
datos que se nos van pidiendo;

Una ves obtenidos los resultados procederemos a graficar al


igual que con el metododo de biseccion con los siguientes
comendos;
x= [0 : 0.1 : 5]
y = -0.9.*X.^2 + 1.7.*X + 2.5
plot (x,y)

Algoritmo del metodo de NewtonRapshon.


1- Iniciar.
2- Introducir la funcion, ecuacion o polinomio.
3- Introducir la derivada de la funcion.
4- Introducir el valor de X0.
5-introducir el error limite.
6- Analizar si el error aprox. es mayor que el error limite.
7- Calcular raiz mejorada.

8- Calcular error aprox.


9- Si el error aprox. es mayor regresar al paso 6, sino continuar.
10- Imprimir resultados.
11- Fin.

Diagrama de flujo del metodo de


Newton-Rapshon.

https://blogdelingeniero1.wordpress.com/2013/04/10/matlab-metodo-debiseccion-para-raices-de-ecuaciones/comment-page-1/

https://nolorodriguez.wordpress.com/2014/04/08/metodo-de-biseccion-ynewton-rapshon-en-matlab/

Programacion en Matlabd: Mtodo de la biseccin


Publicado por Oier (3 intervenciones) el 15/02/2012 22:01:54
Buenas, he creado un script para aplicar el mtodo de la biseccin. El cdigo que he creado slo
sirve para la funcin almacenada en la function f. Lo que quiero hacer es que el usuario pueda
introducir cualquier funcin f y el programa lo calcule, pero no s como hacer este paso. El
cdigo que he creado es ste:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

clear
format short;
a=input('Introduzca el valor de a');
b=input('Introduzca el valor de b');
cont=input('Introduzca el nmero de iteraciones');
for k=1:1:cont
c=(a+b)/2;
e=abs((b-a)/2);
A(k,:)=[k a b c f(c) e];

METODO BISECCION EN MATLAB


2/07/2011 CODIGOS TAZ 18 COMENTARIOS

Este es el codigo del Metodo de Biseccion en Matlab para hallar raices de una funcion
Aqui les va el codigo:

%Metodo de Biseccion - Metodos Numericos Matlab


clc;

Fx=input('Ingrese la funcion: ','s');


a=input('Ingrese a : ');
c=input('Ingrese c : ');
e=input('Ingrese el error : ');
x=a;
Fa=eval(Fx);
x=c;
Fc=eval(Fx);
fprintf('\n %6s %7s %8s %10s %8s %8s %8s \n
','A','B','C','F(a)','F(b)','F(c)','|c-a|');
while abs(c-a)>e
b=(a+c)/2;
x=b;
Fb=eval(Fx);
fprintf('\n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f
\n',a,b,c,Fa,Fb,Fc,abs(c-a));
if Fa*Fb<=0
c=b;
Fc=Fb;
else
a=b;
Fa=Fb;
end
end
fprintf('\nEl resultado sera %.4f\n',b);
ezplot(Fx);%graficamos la funcion
grid on;

Matlab, Mtodo de la Posicin Falsa.


12 ABRIL, 2013 / JULIO CSAR

[RECUERDA, EN ESTA PGINA EL CDIGO SE ENCUENTRA AL


FINAL PARA SU DESCARGA]
El mtodo de la posicin falsa, es uno de los mtodos de
intervalo

que habamos explicado

anteriormente

en esta

entrada, este, al ser un mtodo de intervalo, sabemos que

requiere del ingreso de dos estimados iniciales, es decir un XL


(low) y un Xu (up), es por esta razn que podemos deducir que
tambin requiere un conocimiento previo del comportamiento
de la ecuacin ingresada, para as poder dar unas buenas
estimaciones para los intervalos, este, al igual que los dems
mtodos vistos hasta el momento, sirve para halla una sola raz
de determinada ecuacin, tambin, tiene ciertas limitaciones
con su convergencia pero es bastante eficaz, es muy usado para
ecuaciones NO lineales.
Se sabe que el mtodo de la posicin falsa es un mtodo
alternativo al mtodo de biseccin, basndose tambin en un
conocimiento grfico previo,

pero

un

aspecto

clave

en

la

ejecucin de este mtodo es que en la divisin del intervalo XL


Xu no se tienen en cuenta las magnitudes F(XL) y F(Xu). Por
ejemplo, si F(XL) esta ms cerca de 0 (cero) que

F(Xu) se

puede entonces suponer que la raz se encuentra mas prxima a


XL que a Xu.
Una

forma

de

explotar

el

conocimiento

grfico

de

la

funcin f(x) es unir con una linea recta los puntos dados por
F(XL) y F(Xu). La interseccin entre el eje de la variable
independiente (en este caso x) nos representa un estimado de la
raz. El hecho de aproximar la raz mediante una linea recta, nos
brinda una posicin falsa de la raz, lo cual le da origen al
nombre del mtodo.

Ilustracin del mtodo de la posicin falsa, mediante la


interseccin de una recta con el eje independiente
El mtodo de falsa posicin en cuanto a algoritmo es idntico al
de biseccin con la diferencia que en el paso #2 se aplica la
formula de la posicin falsa, que expresa la estimacin de la
raz.El punto correspondiente al valor de la raz falsa Xr dado por
la interseccin de la recta entre F(XL) y F(Xu) con el eje puede
calcularse por:

Donde, resolviendo la ecuacin para Xr se obtiene:

donde Xr es la posicin falsa , la ecuacin anterior se conoce


como la formula de la falsa posicin, el valor de Xr luego
remplaza cualquiera de los dos limites estimados sea XL o Xu,
de esta forma los valores de Xl y Xu siempre enmarcan el valor
real de la raz, como se haba dicho anteriormente, este
algoritmo, es idntico al de biseccin con excepcin de esta
nueva formula.
Cdigo En Matlab.
Inicialmente, al igual que en los programas de este tipo que
hemos hecho hasta este momento, nuestra funcin en Matlab,
solo recibir como argumento de entrada, una funcin que
depende de una sola variable (definida con anticipacin).
Llamaremos a nuestra funcin pfalse

A continuacin se realiza una representacin grfica de la


ecuacin para proporcionar un intervalo adecuado, en esta
seccin se piden un valor inferior y uno superior desde donde
grficar la ecuacin.

posteriormente se procede como tal con el desarrollo y


ejecucin

del

metodo

de

posicin

falsa,

que

es prcticamente idntico al de biseccin, solo que cambiando


el paso 2, donde aqu aplicamos la formula de posicin falsa en
la linea 18 del cdigo. (clic en la imagen para verla mejor).

En este caso, tambin es de resaltar la suma importancia del


calculo del error, ya que es este el que nos va a proporcionar
nuevamente la condicin de finalizacin para nuestro programa,
igualmente sin el correcto calculo del error relativo este mtodo
no

tendra

buen

desempeo

nivel

computacional

(prcticamente sera inservible).


El modo de uso de esta funcin es la siguiente, se define en la
ventana de comandos la variable simblica (en este caso X) y se
introduce una funcin (para este caso Y) despus de ubicar
correctamente el current folder de Matlab, se llama la funcin
pfalse

se

le

pasa

como

argumento

la

funcio

Y,

posteriormente se ingresan los limites donde queremos ver la


grfica y finalmente se introduce el intervalo donde esta la raz.
EJEMPLO: halle la raz positiva de la siguiente funcin.
procedemos a ejecutar el siguiente cdigo en Matlab.
inicialmente vemos la siguiente representacin, que es lo que
buscamos ver cada vez que realizamos el anlisis grfico.

Con esta podemos elegir los limites del intervalo coo Xl=0.5 y
Xu=1.5

Como sabemos por simple inspeccin para este cas, la raz de


la ecuacin es 1 y vemos que el programa no ha dado una
respuesta aproximada, esta precisin la podemos mejorar
variando el umbral de error, dentro del While.
Este es un mtodo bastante poderoso, lo es para ecuaciones no
lineales, que son

las que

regularmente

encontramos

en

ingeniera y para las cuales utilizamos con gran frecuencia los


mtodos numricos, es por esto que es de suma importancia
tener un buen dominio y comprensin tanto de la parte terica
de su funcionamiento, ya que todos los mtodos tienen
sus falencias

o por lo menos en algunos casos unos se

comportan mejor que otros, as, teniendo un buen conocimiento


de cada uno, sabremos elegir el ms apropiado para nuestras
necesidades.
El cdigo de este programa (archivo.m) lo puedes descargar
de este enlace, cualquier pregunta que tengas acerca de este
archivo, puedes comentar esta entrada.

Espero que este artculo haya sido de ayuda, y si lo fue puedes


ver dems mtodos y cdigos en este blog, saludos.

https://blogdelingeniero1.wordpress.com/2013/04/12/matlab-metodo-de-laposicion-falsa/

Mtodo de la falsa posicin


Como mencionamos anteriormente, sera bueno considerar si la raz de una ecuacin est
localizada ms cerca de alguno de los extremos del intervalo.
Consideremos nuevamente una grfica como la anterior,

Donde hemos agregado la lnea recta que une los puntos extremos de la grfica en el intervalo
.
Es claro que si en lugar de considerar el punto medio del intervalo, tomamos el punto donde cruza
al eje esta recta, nos aproximaremos mucho ms rpido a la raz; sta es en s, la idea central del
mtodo de la regla falsa y sta es realmente la nica diferencia con el mtodo de biseccin, puesto
que en todo lo dems los dos mtodos son prcticamente idnticos.
Supongamos que tenemos una funcin
y

que es contnua en el intervalo

y adems,

tienen signos opuestos.

Calculemos la ecuacin de la lnea recta que une los puntos


que la pendiente de esta recta esta dada por:

Por lo tanto la ecuacin de la recta es:

Para obtener el cruce con el eje , hacemos


Multiplicando por

nos da:

Finalmente, de aqu despejamos :

. Sabemos

Este punto es el que toma el papel de en lugar del punto medio del mtodo de biseccin.
As pues, el mtodo de la regla falsa sigue los siguientes pasos:
Sea

contnua,

i) Encontrar valores iniciales

tales que

tienen signos opuestos, es decir,

ii) La primera aproximacin a la raz se toma igual a:


iii) Evaluar

. Forzosamente debemos caer en uno de los siguientes casos:

En este caso, tenemos que

tienen signos opuestos, y por lo tanto la raz se

tienen el mismo signo, y de aqu que

tienen signos opuestos. Por lo tanto, la raz se encuentra en el intervalo

encuentra en el intervalo

En este caso, tenemos que

En este caso se tiene que


y por lo tanto ya localizamos la raz.
El proceso se vuelve a repetir con el nuevo intervalo, hasta que:

Uso del programa

Uso del programa Mtodo de la falsa posicin en el Matlab:


1. Escribes el nombre del metodo "falsaposicion" y le damos enter.
2. El programa te muestra el nombre del metodo "METODO DE LA FALSA POSICION"y los
valores a ingresar:
o

Ingresas la Funcin.

Ingresas el valor inicial.

Ingresas el valor final.

Ingresas el Tolerancia

3. luego de ingresado los valores requieridos solo tenemos que dar un enter para que corra el
programa y obtenga la raiz que se desea y la grafica de funcin
Descarga:
Mtodo de la falsa posicin en Matlab 7.01

IMAGENES DEL PROGRAMA


1) ENTRADA DE DATOS

2) CALCULO DE DATOS

3) GRAFICA DE DATOS

4) PROGRAMA EN MATLAB

http://mnumfiic.blogspot.com/2008/02/mtodo-de-la-falsa-posicin.html

You might also like