09.05.2013 Views

CÁLCULO DE RAÍCES DE ECUACIONES NO LINEALES

CÁLCULO DE RAÍCES DE ECUACIONES NO LINEALES

CÁLCULO DE RAÍCES DE ECUACIONES NO LINEALES

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>CÁLCULO</strong> <strong>DE</strong> <strong>RAÍCES</strong> <strong>DE</strong><br />

<strong>ECUACIONES</strong> <strong>NO</strong> <strong>LINEALES</strong><br />

Por Frednides Guillén


MÉTODO <strong>DE</strong> BISECCIÓN<br />

• Este método consiste en hallar los ceros de una función<br />

continua f(x).<br />

• Primero se debe considerar un intervalo [x i, x s] en el que<br />

se garantice que la función tiene raíz.<br />

• Para ello f(x i) y f(x s) deben ser de diferentes signos. Por<br />

lo tanto debe cumplirse que:<br />

f(x i) • f(x s) < 0<br />

• De acuerdo con el teorema del valor intermedio, existe<br />

un numero x r en [x i, x s] tal que f(x r) = 0


f(x)<br />

MÉTODO <strong>DE</strong> BISECCIÓN<br />

x


f(x)<br />

f(x i)<br />

f(x s)<br />

MÉTODO <strong>DE</strong> BISECCIÓN<br />

x i x s x


MÉTODO <strong>DE</strong> BISECCIÓN<br />

• Si f(x i)=0 --> f(x i) es raíz.<br />

• Si f(x s)=0 --> f(x s) es raíz<br />

• El segmento [x i, x s] se bisecta, tomando el punto de<br />

bisección x r como aproximación de la raíz buscada.<br />

x<br />

r<br />

<br />

x<br />

s<br />

• Se determina el signo de f(x r) y se sustituye el extremo<br />

<br />

2<br />

cuyo signo coincida y se desecha el resto del intervalo.<br />

x<br />

i


MÉTODO <strong>DE</strong> BISECCIÓN<br />

• De esta forma se generan intervalos que encierran la<br />

raíz buscada y que son de longitud igual a la mitad de la<br />

longitud del intervalo del paso anterior.<br />

• El método divide a la mitad cada nuevo intervalo que se<br />

genere.


f(x)<br />

f(x i)<br />

f(x r)<br />

f(x s)<br />

MÉTODO <strong>DE</strong> BISECCIÓN<br />

x i<br />

x r<br />

x s<br />

x


Seudo Código:<br />

• Se define un intervalo [x 1, x 2] de la función f(x), donde la esta es continua y<br />

se verifica que f(x 1)·f(x 2) < 0. Se define la tolerancia ε y el numero máximo<br />

de iteraciones Nitera y hacer Iter=0<br />

• Repetir<br />

– Iter = Iter +1<br />

– Hacer x 3= (x 1+x 2)/2<br />

– Si f(x 3)·f(x 1) < 0<br />

• Entonces x 2 = x 3<br />

• Sino x 1 = x 3<br />

– Fin del Si<br />

• Hasta que |(x 1 - x 3)|< 2 ε o Iter == Nitera<br />

• Imprimir “La raíz es: ” x 3<br />

MÉTODO <strong>DE</strong> BISECCIÓN


• Cálculo del error:<br />

MÉTODO <strong>DE</strong> BISECCIÓN<br />

• El error exacto no se puede calcular si no conocemos la<br />

solución exacta (si se conoce, no es necesario el<br />

método iterativo). En la práctica, se estima el error<br />

mediante la distancia entre dos iteraciones<br />

consecutivas.<br />

x<br />

2<br />

Error n<br />

2<br />

<br />

x<br />

1<br />

<br />

n<br />

<br />

x2<br />

x1<br />

ln<br />

<br />

Error<br />

ln( 2)


Ejemplo:<br />

MÉTODO <strong>DE</strong> BISECCIÓN<br />

• Calcular la raíz de f(x) = x 3 + x 2 – 3x – 3 = 0, que está en<br />

el intervalo [1, 2]. Calcular con una precisión de 3<br />

decimales exactos. ¿Cuántos dígitos significativos tiene<br />

la aproximación calculada después de la cuarta<br />

iteración?<br />

• Cuántas iteraciones serán necesarias para alcanzar una<br />

precisión de 6 decimales exactos?


MÉTODO <strong>DE</strong> BISECCIÓN<br />

Iteración x 1 f(x 1 ) x 2 f(x 2 ) x 3 f(x 3 )<br />

1 1 -4 2 3 1,5 -1,875<br />

2 1,5 -1,875 2 3 1,75 0,171875<br />

3 1,5 -1,875 1,75 0,171875 1,625 -0,943359<br />

4 1,625 -0,943359 1,75 0,171875 1,6875 -0,409424<br />

5 1,6875 -0,409424 1,75 0,171875 1,71875 -0,124786<br />

6 1,71875 -0,124786 1,75 0,171875 1,734375 0,02203<br />

7 1,71875 -0,124786 1,734375 0,02203 1,726563 -0,051755<br />

8 1,726563 -0,051755 1,734375 0,02203 1,730469 -0,014957


Ventajas:<br />

• Es robusto<br />

• De fácil aplicación<br />

MÉTODO <strong>DE</strong> BISECCIÓN<br />

• No necesita calcular la derivada<br />

Desventajas<br />

• Es lento<br />

• No detecta ceros en mín. o máx. locales<br />

• No detecta un número par de ceros


MÉTODO <strong>DE</strong> REGULA-FALSI<br />

• Conocido también como método de falsa posición<br />

• Primero se selecciona un intervalo [a, b] tal que<br />

f(a)· f(b) < 0<br />

• Hallar el punto c que divide el intervalo [a, b], al trazar<br />

una recta de f(a) hasta f(b), para ello:<br />

c <br />

a <br />

f<br />

( a)<br />

b<br />

( b)<br />

a<br />

f ( a)<br />

• Elegir, entre [a, c] y [c, b], un intervalo en el que la<br />

función cambie de signo.<br />

• Repetir los pasos 2 y 3 hasta conseguir la precisión<br />

deseada.<br />

f


f(x)<br />

MÉTODO <strong>DE</strong> REGULA-FALSI<br />

x


f(x)<br />

f(a)<br />

f(b)<br />

MÉTODO <strong>DE</strong> REGULA-FALSI<br />

a b<br />

x


f(x)<br />

f(a)<br />

f(b)<br />

MÉTODO <strong>DE</strong> REGULA-FALSI<br />

a b<br />

x


f(x)<br />

f(a)<br />

f(c)<br />

f(b)<br />

MÉTODO <strong>DE</strong> REGULA-FALSI<br />

a c b<br />

Se hace b = c<br />

La solución está en el<br />

Intervalo [a, c]<br />

x


MÉTODO <strong>DE</strong> REGULA-FALSI<br />

• El método de Regula Falsi, como él de bisección, parte<br />

de un intervalo en el que la función cambia de signo y lo<br />

divide en dos partes. La diferencia es que los<br />

subintervalos ahora son proporcionales a los valores de<br />

la función en los extremos.<br />

• El método converge generalmente con más rapidez que<br />

la bisección, pero no garantiza que el intervalo de<br />

búsqueda de la raíz se haga pequeño. Típicamente, un<br />

extremo queda fijo mientras que el otro se acerca a la<br />

raíz.


MÉTODO <strong>DE</strong> REGULA-FALSI<br />

• El criterio de convergencia es diferente al método de<br />

bisección. En este caso se utiliza:<br />

| c actual – c anterior | ε<br />

• También se puede emplear:<br />

| f(c) | ε


Ventajas:<br />

MÉTODO <strong>DE</strong> REGULA-FALSI<br />

• En algunos casos es más rápido que bisección<br />

• No necesita calcular derivadas<br />

Desventajas<br />

• No detecta un número par de ceros<br />

• No detecta ceros en mínimos locales


• Ejemplo:<br />

MÉTODO <strong>DE</strong> REGULA-FALSI<br />

• Calcular la raíz de f(x) = x 3 + x 2 – 3x – 3 = 0, que está en<br />

el intervalo [1, 2]. Calcular con una precisión de 3<br />

decimales exactos.<br />

• ¿Cuántos dígitos significativos tiene la aproximación<br />

calculada después de la cuarta iteración?.


MÉTODO <strong>DE</strong> REGULA-FALSI<br />

Iteracion x1 f(x1) x2 f(x2) x3 f(x3)<br />

1 1 -4 2 3 1,5714 -1,364431<br />

2 1,5714 -1,3644 2 3 1,7054 -0,247745<br />

3 1,7054 -0,2477 2 3 1,7279 -0,039340<br />

4 1,7279 -0,0393 2 3 1,7314 -0,006111<br />

5 1,7314 -0,0061 2 3 1,7320 -0,000946<br />

6 1,7320 -0,0009 2 3 1,7320 -0,000146<br />

7 1,7320 -0,0001 2 3 1,7320 -0,000023<br />

8 1,7320 0,0000 2 3 1,7321 -0,000004


Seudo Código:<br />

MÉTODO <strong>DE</strong> REGULA-FALSI<br />

• Se define un intervalo [x 1, x 2] de la función f(x), donde la esta es continua y<br />

se verifica que f(x 1)·f(x 2) < 0. Se define la tolerancia ε y el numero máximo<br />

de iteraciones Nitera y hacer Iter=0<br />

• Repetir<br />

– Iter = Iter +1<br />

– Hacer x 3= x 1-f(x 1)(x 2-x 1)/(f(x 2)-f(x 1))<br />

– Si f(x 3)·f(x 1) < 0<br />

• Entonces x 2 = x 3<br />

• Sino x 1 = x 3<br />

– Fin del Si<br />

• Hasta que |f(x 3)|< ε o Iter == Nitera<br />

• Imprimir “La raíz es: ” x 3


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

• El método de Newton Raphson aplica si f(x), f’(x) y f’’(x)<br />

son continuas y es uno de los algoritmos mas útiles y<br />

mejor conocido.<br />

• Se parte de una aproximación inicial x 0 la cual es mejor<br />

si está cerca de la raíz p


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

f(x)<br />

f(x 0)<br />

x 0<br />

x


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

• Luego se obtiene el valor de la función por ese punto y<br />

se traza una recta tangente a la función por ese punto.<br />

• El punto de intersección de esta recta con el eje de las<br />

abscisas (x 1, 0), constituye una segunda aproximación<br />

de la raíz.<br />

• El proceso se repite n veces hasta que el punto de<br />

intersección x n coincide prácticamente con el valor<br />

exacto de la raíz.


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

f(x)<br />

f(x 0)<br />

x 0<br />

x 1<br />

x


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

f(x)<br />

f(x 0)<br />

f(x 1)<br />

x 0<br />

x 1<br />

x


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

f(x)<br />

f(x 0)<br />

f(x 1)<br />

x 0<br />

x 1<br />

x 2<br />

x 3<br />

x


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

• Primero se calcula la pendiente de la recta tangente:<br />

m<br />

<br />

0 <br />

x<br />

• m es la pendiente de la recta tangente que pasa por el<br />

punto x 0; por lo tanto: m = f’(x 0)<br />

• Igualando las dos ecuaciones anteriores de m y<br />

despejando x 1 se tiene:<br />

x <br />

x <br />

1<br />

0<br />

• Se puede emplear como criterio de convergencia:<br />

1<br />

( f x<br />

x<br />

| (x 0 - x 1)/ x 1 | < ε (Error relativo)<br />

0<br />

0 )<br />

f ( x0)<br />

f '(<br />

x )<br />

0


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

Aunque el método trabaja bien, no existe garantía de convergencia.<br />

X 3<br />

f(x)<br />

X 1<br />

X 0<br />

X 2<br />

X


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

Seudo Código:<br />

• Se define el valor inicial x 0 de la función f(x)<br />

• Se define la tolerancia ε y el número máximo de iteraciones Nitera y se<br />

hace Iter=0<br />

• Repetir<br />

– Iter = Iter +1<br />

– Calcular x 1= x 0-f(x 0)/f’(x 0)<br />

– Calcular error = |x 1 - x 0 |<br />

– Hacer X0 = X1<br />

• Hasta que error < ε o Iter == Nitera<br />

• Imprimir “La raíz es: ” x 1


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

Código en Scilab:<br />

x0=2; tol=1e-5; Niter=30;<br />

for Iter=0:Niter<br />

end<br />

Iter = Iter + 1;<br />

x1 = x0 - (x0^3+x0^2-3*x0-3)/(3*x0^2+2*x0-3);<br />

err = abs(x1-x0);<br />

x0 = x1;<br />

if (err


Ejemplo:<br />

MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

• Calcular la raíz de f(x) = x 3 + x 2 – 3x – 3 = 0, que está en<br />

el intervalo [1, 2], utilice x 0=2. Calcular con una precisión<br />

de 3 decimales exactos.<br />

• ¿Cuál es el error absoluto para la cuarta iteración?.


MÉTODO <strong>DE</strong> NEWTON RAPHSON<br />

Iteración x 0 f(x 0 ) f '(x 0 ) x 1 Error<br />

1 2 3 13 1,769230769 0,130434783<br />

2 1,769230769 0,360491579 9,928994083 1,73292381 0,020951272<br />

3 1,73292381 0,00826691 9,474922419 1,732051306 0,00050374<br />

4 1,732051306 4,71824E-06 9,464107793 1,732050808 2,87832E-07<br />

5 1,732050808 1,53921E-12 9,464101615 1,732050808 9,38406E-14


MÉTODO <strong>DE</strong> LAS SECANTES<br />

• Consiste en elegir dos puntos iniciales cualquiera x 0, x 1<br />

para los cuales se evalúan los valores de la función:<br />

• Se traza una recta secante a la función por esos dos<br />

puntos.<br />

• El punto de intersección de esta recta con el eje de las<br />

abscisas (x 2, 0) constituye una segunda aproximación<br />

de la raíz.<br />

• El proceso se repite n veces hasta que el punto de<br />

intersección x n coincide prácticamente con el valor<br />

exacto de la raíz.


f (x)<br />

f (x 0)<br />

f (x 1)<br />

f (x 2)<br />

f (x 3)<br />

MÉTODO <strong>DE</strong> LAS SECANTES<br />

x 0 x 1 x 2<br />

x 3<br />

x


MÉTODO <strong>DE</strong> LAS SECANTES<br />

• La pendiente de la recta se calcula como:<br />

• La intercepción con el eje x es:<br />

x<br />

x<br />

2<br />

2<br />

<br />

<br />

x<br />

x<br />

0<br />

m<br />

0<br />

<br />

<br />

<br />

f<br />

f<br />

f(x1<br />

) <br />

x <br />

( x<br />

( x<br />

1<br />

0<br />

0<br />

)<br />

)<br />

f(x<br />

x<br />

f<br />

0<br />

m<br />

0<br />

)<br />

x1<br />

( x )<br />

1<br />

<br />

<br />

x0<br />

f ( x<br />

0<br />

)


Algoritmo<br />

MÉTODO <strong>DE</strong> LAS SECANTES<br />

• Entrar los datos x 0, x 1, tol, Nitera, Iter=0<br />

• Repetir<br />

Iter = Iter +1; x 2=x 0-f (x 0)(x 1-x 0)/(f (x 1)-f (x 0))<br />

Hacer x 0=x 1 y x 1=x 2<br />

Error =│(x 0 – x 1) / x 1│*100 (Error Relativo porcentual)<br />

• Hasta que Error ≤ tol o Iter = Nitera<br />

• Imprimir x 2


Ejemplo:<br />

MÉTODO <strong>DE</strong> LAS SECANTES<br />

• Calcular la raíz de f(x) = x 3 + x 2 – 3x – 3 = 0, que está en<br />

el intervalo [1, 2], utilice x 0=3 y x 1=2. Calcular con una<br />

precisión de 3 decimales exactos.<br />

• ¿Cuál es el error absoluto para la cuarta iteración?.


MÉTODO <strong>DE</strong> LAS SECANTES<br />

Iteración x 0 x 1 x 2 Error Absoluto<br />

1 3 2 1,857142857 0,076923077<br />

2 2 1,857142857 1,750424448 0,060967161<br />

3 1,857142857 1,750424448 1,733455735 0,009788951<br />

4 1,750424448 1,733455735 1,732067544 0,000801465<br />

5 1,733455735 1,732067544 1,732050823 9,6541E-06<br />

6 1,732067544 1,732050823 1,732050808 8,88175E-09<br />

7 1,732050823 1,732050808 1,732050808 9,73019E-14


MÉTODO <strong>DE</strong>L PUNTO FIJO<br />

• Considera la descomposición de la función f(x) en una<br />

diferencia de dos funciones: una primera g(x) y la<br />

segunda, siempre la función x.<br />

f(x) = g(x) – x<br />

• La raíz de la función f(x) se da cuando f(x) = 0, es decir,<br />

cuando g(x) – x = 0, por lo que:<br />

x = g(x)<br />

• El punto de intersección de las dos funciones, da<br />

entonces el valor exacto de la raíz.


MÉTODO <strong>DE</strong>L PUNTO FIJO<br />

• El método consiste en considerar un valor inicial x 0,<br />

como aproximación a la raíz, evaluar el valor de esta<br />

función g(x 0), considerando éste como una aproximación<br />

de la raíz.<br />

• El proceso se repite n veces hasta que g(x) coincide<br />

prácticamente con x.<br />

• Se puede emplear como criterio de convergencia<br />

| (x 0 - x 1)/ x 1 | < ε (Error Relativo)


MÉTODO <strong>DE</strong>L PUNTO FIJO<br />

Algoritmo:<br />

• Se inicializan las variables x 0, tol, Nitera,<br />

Iter=0<br />

• Repetir<br />

Iter = Iter +1<br />

Hacer x 1= g(x 0)<br />

Error =│(x 0 – x 1) / x 1│ (Error Absoluto)<br />

Hacer x 0 = x 1<br />

• Hasta que Error ≤ tol o Iter = Nitera<br />

• Imprimir x 0


Ejemplo:<br />

MÉTODO <strong>DE</strong>L PUNTO FIJO<br />

• Calcular la raíz de f(x) = x 3 + x 2 – 3x – 3 = 0, que está en<br />

el intervalo [1, 2], utilice x 0=2. Calcular con una precisión<br />

de 3 decimales exactos.<br />

• ¿Cuál es el error absoluto para la cuarta iteración?.


x<br />

<br />

x <br />

g(<br />

x)<br />

3x<br />

3<br />

x<br />

3 2<br />

MÉTODO <strong>DE</strong>L PUNTO FIJO<br />

Iteración x 0 x 1 Error Absoluto<br />

1 2 1,709975947 0,169607095<br />

2 1,709975947 1,733134316 0,013362132<br />

3 1,733134316 1,731994802 0,00065792<br />

4 1,731994802 1,732053695 3,40019E-05<br />

5 1,732053695 1,732050659 1,75317E-06<br />

6 1,732050659 1,732050815 9,04059E-08<br />

7 1,732050815 1,732050807 4,66195E-09<br />

8 1,732050807 1,732050808 2,40402E-10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!