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

Raíces de ecuaciones:

Objetivos:
Al terminar este capítulo el alumno será capaz de:

a) Calcular el valor de las raíces de una ecuación, por medio de la aplicación de métodos
cerrados y abiertos.
b) Determinar la posibilidad de convergencia al usar métodos abiertos.

Raíces de
ecuaciones

Métodos Métodos
cerrados abiertos

Regula Newton
Bisección Punto fijo Horner Secante
Falsi Raphson

Métodos cerrados:
Aprovechan de que una función cambia de signo en la vecindad de una raíz. Esto es dentro
de un intervalo cerrado, por lo que se necesita dos valores iniciales.
𝑥 ∈ [𝑎, 𝑏]
Una forma de visualizar la posible raíz de una ecuación es utilizando el método gráfico,
esto es para la ecuación f(x)=0.
Ejemplo:
Sea la función f(x)=sen(10x)+cos(3x), donde x está en el rango [0,5].
fplot(‘sin(10*x)+cos(3*x)’,[0,5]),grid
podemos apreciar que tiene 13 raíces en este intervalo, a excepción del intervalo [4,4.5],
que puede ser una o dos raíces adicionales.
fplot(‘sin(10*x)+cos(3*x)’,[4.2,4.3]),grid
existen 2 raíces entre 4.2 y 4.3

Ejemplo:
Localizar las raíces gráficamente de f(x)=x2+2x-4, x [-4,4]
fplot(‘[x.^2+2*x-4]’,[-4,4]),grid
Ejemplo:
Para la función anterior lo separamos en dos subfunciones f(x)=0 f1(x)=x2 y f2(x)=4-2x
fplot(‘[x.^2,4-2*x]’,[-4,4]),grid

Ejemplo:
Visualizar la posible raíz para la función f(x)=ex-x; x[-2,2]

Métodos de la bisección:
Este método consiste en tomar un intervalo de valores dando al evaluar la función (f(x)) en
los extremos se presenta un cambio de signo, con lo cual se asegura que por lo menos
exista una raíz dentro del intervalo.
𝑓(𝑥) = 0; 𝑥 ∈ [𝑎, 𝑏]
A continuación se calcula el punto medio del intervalo, por lo que, de esta manera el
intervalo inicial se divide en dos nuevos intervalos más pequeños. Se repite el análisis del
cambio del signo para desechar el subintervalo que no contiene la raíz.
𝑎+𝑏
𝑥𝑚 = =𝑐
2
Este método puede requerir de muchas iteraciones, para poder localizar en que el
intervalo se encuentra cada posible raíz por lo que esto se hace lento.
En general: Si f(x) es real y continua en el intervalo existe [a,b] y f(a) y f(b) tienen signos
opuestos  ∃ al menos una raíz real entre a y b.
La posición de la raíz se determina situándola en el punto medio del subintervalo en el
cual ocurre un cambio de signo.

Se ha visto en el método grafico que la función cambia de signo en la vecindad de una raíz.

De forma general,si f(x) es real y continua en el intervalo que va desde xl hasta xu y f(xl) y f(xu)
tienen signos opuestos.

f(xl)*f(xu)<0

entonces hay al menos una raíz real entre xl y xu,el método de la bisección también se le conoce
como corte binario,de partición de intervalos o de Bolzano.

Este método es un tipo de búsqueda incremental en que el intervalo se divide siempre a la


mitad.Si la función cambia de signo sobre un intervalo se evalua el valor de la función en el punto
medio del subintervalo,dentro del cual ocurre un cambio de signo.Este proceso se repite hasta
tener una mejor aproximación.
Graficamente:

F(x)=0 y que esta definido en [xl,xu] que sea continua f(xl) y f(xu) deben tener signos opuestos

Procedimiento para el método de la biseccion:

Paso1.Elegir el valor inicial inferior xl y superior xu,que encierre una raíz.Evaluar la función f(xl) y
f(xu) de tal forma que cambie de signo en el intervalo.

f(xl)*f(xu)<0

Paso2.Se determina una raíz aproximada xr mediante:


Xr=xl+xu/2

Paso3.Realizar las siguientes evaluaciones para determinar en que subintervalo esta la raíz
a)si f(xl)*f(xu)<0 la raíz se encuentra dentro del subintervalo inferior o izquierdo,por lo
tanto hacer xu=xr y regrese al paso 2

b)si f(xl)*f(xr)>0la raíz se encuentra dentro del subintervalo superior o derecho,por lo


tanto hacer xl=xr y volver al paso 2

c)si f(xl)*f(xr)=0la raíz es igual a xr y termina el calculo


Como control del proceso iterativo podemos usar el error relativo porcentual

𝑥𝑟 𝑛𝑢𝑒𝑣𝑜 − 𝑥𝑟 𝑎𝑛𝑡𝑒𝑟𝑖𝑜𝑟
∈𝑎 = | | ∗ 100
𝑥𝑟 𝑛𝑢𝑒𝑣𝑜

∈𝑠 =(0.5 ∗ 102−𝑛 )%  ∈𝑎 ≤∈𝑠

Ejemplo:

Usar el método de la biseccion para calcular la raíz de f(x)=ℯ −𝑥 − 𝑥 ,en el intervalo [0,1],con una
aproximación de 4 cifras.

Solución:

clear all
clc
format short
function
disp('raiz de la ecuacion no lineal')
y=funcion(x)
disp('metodo cerrado de la biseccion')
y=exp(-x)-x;
n=input('ingrese cifras significativas=');
end
xl=input('ingrese valor inferior del intervalo=');
xu=input('ingrese valor superior del intervalo=');
es=0.5*10^(2-n);
ea=100;
xr=0;
i=0;
while ea>es
xa=xr;
xr=(xl+xu)/2
if (funcion(xl)*funcion(xr)<0)
xu=xr;
ea=abs((xr-xa)/xr)*100;
elseif (funcion(xl)*funcion(xr)>0)
xl=xr;
ea=abs((xr-xa)/xr)*100;
end
i=i+1;
end
fprintf('raiz de la ecuacion: %12.5f \n',xr)
fprintf('error aproximado: %12.5f \n',ea)
fprintf('numero de iteraciones: %12.0f\n',i)
Método de la regla falsa

Este método consiste en unir f(xl) y f(xu) con una línea recta, la intersección de esta línea recta con
la abscisa nos da una raíz aproximada a la solución exacta,también se le conoce como el método
de interpolación lineal.

Por semejanza de triángulos :

𝑓(𝑥𝑙) 𝑓(𝑥𝑢)
=
𝑥𝑟 − 𝑥𝑙 𝑥𝑟 − 𝑥𝑢

𝑓(𝑥𝑢)(𝑥𝑙−𝑥𝑢)
Xr=xu - 𝑓(𝑥𝑙)−𝑓(𝑥𝑢)

F(xl) y f(xr)

()Xl=xr ;xu=xr()
Ejemplo:resolver la ecuación f(x)=ℯ −𝑥 − 𝑥 con el método de la regla falsa ,con el intervalo
[0,1],n=4 cifras significativas

clear all
clc
disp('solucioon ecuacion no lineal')
disp('metodo cerrado regla falsa')
n=input('ingrese numero de cifras significativas=');
xl=input('ingrese el valor del intervalo inferior=');
xu=input('ingrese valor dle intervalo superior');
es=0.5*10^(2-n);
ea=100;
xr=0;
i=0;
while ea>es
xa=xr;
xr=xu-(funcion(xu)*(xl-xu))/(funcion(xl)-funcion(xu));
if (funcion(xl)*funcion(xr)<0)
xu=xr;
ea=abs((xr-xa)/xr)*100;
elseif (funcion(xl)*funcion(xr)>0)
xl=xr;
ea=abs((xr-xa)/xr)*100;
end
i=i+1;
end
fprintf('raiz obtenida: %12.8f\n',xr)
fprintf('error aproximado: %12.8f\n',ea)
fprintf('numero de iteraciones: %12.8f\n',i)

%funcion de metodo de la falsa posicion


function y=f_falsapos(h,a,b,es)
%h es la funcion que debes escribir entre comillas ''
%es es el error permisible
clc
format short

f=inline(h);
syms x;
c=0;
n=0;
error=100;
fprintf('\t n \t\t a \t\t c \t\t b \t\t error\n')
while (error>es)
c=(a*f(b)-b*f(a))/(f(b)-f(a));
disp([n,a,c,b,error])
if (f(a)*f(c)<0)
b=c;
else a=c;
end
error=abs(f(c));
n=n+1;
end
fprintf('raiz encontrada con una tolerancia de %f:\n',es)
y=c;