Resolución Resolución de ecuaciones no lineales
Contenidos •
Antecedentes
•
Método de la bisección sucesiva
•
Métodos de interpolación lineal
•
Método de Newton
•
Método de Muller
•
Iteración Iteración de punto fijo
Contenidos •
Antecedentes
•
Método de la bisección sucesiva
•
Métodos de interpolación lineal
•
Método de Newton
•
Método de Muller
•
Iteración Iteración de punto fijo
Antecedentes •
•
•
La finalidad principal de las matemáticas aplicadas es determinar valores de x que cumplan con f(x) = 0. A estos valores les denominamos raíces o ceros de la ecuación Para polinomios de primer a tercer orden existen fórmulas que permiten lograr el objetivo antes dich dicho o, sin sin emba embarrgo par para grad grados os supe superi rior ores es la situación se complica Para la resolución de expresiones no lineales no es posible resolverlas salvo por un aproximaciones aproximaciones sucesivas
•
•
•
Se presentarán a continuación procedimientos para encontrar raíces, algunos válidos para cualquier ecuación y otros sólo para polinomios Una de las razones que para mostrar alternativas es poder responder a la pregunta principal del análisis numérico: cuál de los procedimientos disponibles puede alcanzar un nivel de deseado de exactitud lo más rápido posible, mayor certeza y con menos problemas para empezar Los sistemas de álgebra por computadora son de especial ayuda par obtener raíces de ecuaciones por simple inspección
Método de la bisección sucesiva •
•
•
Este método se basa en encontrar una raíz de (x)=0 empezando con dos valores que encierran o ponen entre corchetes a la raíz Nos damos cuenta que una función está entre corchetes cuando cambia de signo en sus puntos extremos. La función debe ser continua Se concibe como un método de búsqueda binaria en donde se va buscando la raíz en subintervalos de intervalos
(x) (x2) x1
x3 x4
(x4) x2 (x3) (x1)
x
Algoritmo para dividir la mitad del intervalo Para determinar una raíz de x) =0 que sea exacta dentro de una tolerancia, dados valores de x 1 y x2 tales que (x1)* (x2) < 0 Repeat Hacer x3 ( x1 x2 ) / 2 IF f ( x3 ) * f ( x1 ) 0 :
Hacer x2 x3. Else Hacer x1 x3. End-IF Until ( x1 x2
valor de tolerancia o
f ( x3 ) 0
•
•
•
•
El error en la estimación de la raíz debe ser menor de x2 – x1 *1/2n. Donde n es el número de iteraciones Este método no requiere de un valor cercano a la raíz La objeción más importante de este método es su lentitud para convergencia Cuando hay raíces múltiples la división de intervalos puede que no sea válida, ya que podría no haber cambio de signos, una forma de soslayar esto sería trabajando con la función derivada y la representación gráfica
Ejemplo Determinar una raíz de (x)=x3+x2-3x-3, empezando con x1=1 y x2=2 se fija una tolerancia de 1E-4 por división de intervalo a la mitad
Método de interpolación lineal •
•
Se basa en que casi todas las funciones pueden aproximarse por una recta sobre un intervalo pequeño, es necesario tener un valor inicial cercano a la raíz Existen dos métodos: –
De la secante
–
De la interpolación lineal falsa
El método de la secante ( x1 x2 ) f ( x1 )
x2
( x0
x1 )
f ( x0 ) f ( x1 )
x1 f ( x1 )
( x0
(x0)
x1 )
f ( x0 ) f ( x1 )
(x1) x2
x1 Raíz
x0
•
•
•
Se supone que (x) es lineal en la vecindad de la raíz Se eligen puntos próximos a ésta y se traza una línea recta Si bien es cierto (x) no es lineal y x 2 no es igual a la raíz debe estar muy próxima. Mejores estimaciones se logran iterando y reemplazando los valores xo y x1
Algoritmo Para determinar una raíz de (x)=0 dados dos valores, x0 y x1 próximos a la solución IF f ( x0 )
f ( x1 )
Intercambiar x0 con x1. Repeat Sea x2 x1 f ( x1 ) * ( x0 x1 ) /[ f ( xo ) f ( x1 )]. Sea x0 x1. Sea x1 x2 . Until f ( x2 ) End IF END
valor de tolerancia
Ejemplo Determinar una raíz de (x)=x3+x2-3x-3, empezando con x1=1 y x2=2
Cuidado
Raíz
x0
x1
x2
Interpolación de regula falsi •
•
Es una técnica semejante a la bisección, salvo que la siguiente iteración se toma en la intersección de una recta entre el par de valores x y el eje x, en vez del punto medio
Este método converge a la raíz por un sólo lado, esto hace que la velocidad de aproximación baje. Existen modificaciones a este método que permiten mejorar este problema
Algoritmo Determinar una raíz de (x)=0 dados valores de x0 y x1 que ponen en corchete una raíz, es decir (x0) y (x1) son de signo opuesto Repeat Hacer x2 x1 f ( x1 ) * ( x0 x1 ) /[ f ( xo ) f ( x1 )] IF f ( x2 ) es de signo opuesto a f ( x0 ) : Hacer x1 x2 Else Hacer x0 x2 . End IF Until f ( x2 )
valor de tolerancia
Método de Newton •
•
•
Es lejos uno de los métodos más usados para resolver ecuaciones Se basa en una aproximación lineal de la función, aunque aplicando una tangente a la curva A partir de una estimación inicial x0 se efectúa un desplazamiento a lo largo de la tangente hacia su intersección con el eje x, y se toma ésta como la siguiente aproximación
tan f '( x0 )
f ( x0 ) x0 x1
, x1 x0
f ( x0 ) f '(x0 )
Se continua el calculo al estimar x2
x1
f ( x1 ) f '( x1 )
(x0) x1
x0 x0-x1
•
•
•
•
•
Este algoritmo al menos en la vecindad converge más rápido que cualquiera de los antes vistos Al ser un método cuadráticamente convergente el resultado neto es que el número de cifras decimales de exactitud casi se duplica en cada iteración Tiene como inconveniente la necesidad de dos evaluaciones funcionales en cada paso, (xn) y ’(xn) y encontrar la derivada de la función El método de Newton se relaciona con la interpolación por la Secante ya que cociente de las diferencias es una aproximación de la derivada El método de Newton funciona con raíces complejas si se proporciona un valor de este tipo para el valor inicial
Ejemplo Determinar la raíz de la siguiente función (x)=3x + sen x – ex=0 x
f ( x) 3x senx e , x
f '( x) 3 cos x e x0
0
x1
x0
x2
x1
x3
x2
f ( x0 ) f '( x0 ) f ( x1) f '( x1 ) f ( x2 ) f '( x2 )
1.0
0.0
0.33333
3.0
0.36017
0.33333;
0.068418
2.54934
6.279 *10
2.50226
0.36017;
4
0.3604217;
Después de 3 iteraciones la raíz es correcta hasta con 7 dígitos ignificativos
Algoritmo Para determinar una raíz de (x)=0 dado un valor de x0 razonablemente próximo a la raíz Se calculan f ( x0 ) y f '( x0 ) IF ( f ( x0 ) 0) AND (f '( x0 ) 0) Repeat Se Hace x1 x0 Se Hace x0 x0 f ( x0 ) / f '( x0 ) Until ( x0 x1 End IF END
valor de tolerancia 1) OR (
f ( x0 )
valor de tolerancia 2)
Método de Muller •
•
•
Hasta ahora todos los métodos citados se acercaban a la raíz a través de una función lineal. Resulta evidente que esto no siempre resulta Este método, el de Muller, se basa en aproximar la función a la vecindad de la raíz por medio de un polinomio cuadrático (es más real) Se construye un polinomio de segundo grado para ajustar 3 punto cerca de una raíz. El cero propio de la cuadrática se usa como estimador de la raíz. Luego se sigue el proceso empleando el mismo conjunto de tres puntos que se están evaluando
(x)
x1, 1
x0, 0 Parábola av2+bv+c=p2(v) x
x2, 2 h2
h1
•
•
•
•
Sean h1 = x1-x0 y h2 =x0 – x2. Se evalúa los coeficientes al estimar p(v) en los tres puntos v=0: a(0)2 + b(0) + c = 0; v=h1: ah12 + bh1 + c = 1; v=-h2: ah22 – bh2 + c = 2 Luego, c= 0 y haciendo h2/h1 = , es posible resolver las otras ecuaciones para a y b Después se calcula mediante la fórmula cuadrática la raíz más próxima al punto medio Para la siguiente aproximación se toma la raíz del polinomio como uno de los puntos del conjunto de tres. Por orden renombrar x0 para que siempre éste quede al medio
a
raiz
f1
f 0 (1 ) f 2 2 1
h
x0
(1 )
,
b
2c
b
b
2
4ac
Si b 0, se elige signo positivo Si b 0, se elige signo negativo Si b=0, se elige cualquiera
f1 f 0 h1
2
ah1
Algoritmo Dados los puntos x2,x0 y x1 en orden de valor creciente Evaluar los valores funcionales correspondientes a f 2 , f 0 y f 1 Encontrar los coeficientes de la parabola Calcular las dos raices de ecuacion parabolica Elegir la raiz mas proxima a x0 y etiquetarla como xr IF xr
x0 THEN reordenar x0 , x r , x1 en x 2 , x0 , x1
Else reordenar x2 , xr , x0 en x2 , x0 , x1 IF f ( xr )
ELSE ir a 1.
FTOL , THEN regresar (x r )
Ejemplo x0
0.5 f ( x0 ) 0.330704
x1 1 x2
a
0
f ( x1 ) 1.123189
h2
f ( x2 ) 1
1.0
f1 f 0 (1 ) f 2 2 1
h (1 ) 2
b
h1 0.5
f 1 f 0 ah1 h1
raiz x0
b b
0.5
(x) = 3x + sen x +ex
(1,0)(1.123189) 0.330704(2.0) ( 1) 2
1.0(0.5) (2,0)
1.123189 0.330704 ( 1.07644)(0.5)2 0.5
2c 2
Halle una raíz entre 0 y 1 para la función
4ac
0.354914
1.07644
2.12319
Para la siguiente iteracion x0
0.354914 f ( x0 ) 0.0138066
h1 0.145086
x1
0.5
f ( x1 ) 0.330704
h2
x2
0
f ( x2 ) 1
0.354914
2.44623
a 0.808314 b 2.49180 raiz
0.360465
Despues de la tercera iteracion se obtiene 0.3604217 como valor de la raiz, que es identico al obtenido por Newton
Iteración de punto fijo x=g(x) •
•
•
Para usar este método, (x) se reordena en una forma x=g(x) equivalente. Observe que si (r)=0, donde r es una raiz de (x), se concluye que r=g(r)
Dependiendo del reordenamiento las expresiones que resulten la evaluación de éstas pueden ser divergentes o no, por lo cual debe considerarse en la búsqueda de raíces
Ejemplo •
Se presenta la siguiente función
(x)=x2 –2x –3=0 x0
4
x g1 ( x ) 2 x 3 converge a 3 x g 2 ( x )
x=g 3 (x)=
3 ( x 2)
(x 2 -3) 2
converge en forma oscilatoria a -1
converge a 191.070