2. 2
Ecuaciones Algebraicas
Lineales No lineales
Interval
Halving
(o bisection)
Succesive
Substitution
(o fixed-point)
False
Position
(o regula falsi)
Newton
Raphson
Wegstein
Broyden
Metodos
Analiticos
Metodos
Numericos
Secant
Ridder
Brent
Muller
Dogleg step
Hook step
Para problemas multidimensionales
Homotopy
3. 3
Objetivo
Sea f(x) una función no lineal en x. Hallar el valor de x, x*, tal
que se cumple f(x*)=0.
x* se suele denominar el cero o raíz de f(x)
x* se puede determinar por medios analíticos (solución
exacta) o por medios numéricos (solución aproximada)
La elección del método numérico depende del problema a
resolver (estructura del problema, tipo de ecuaciones, precisión
requerida, rápidez del cálculo,....).
Por tanto no existe un mejor método universalmente aplicable.
Ecuaciones algebraicas no lineales
Métodos Cerrados (bracketing methods) Métodos abiertos (open methods)
Tipos de métodos
4. 4
Métodos Cerrados
Base: Una función cambia de signo en la proximidad de una raíz
•Una raíz está acotada en el intervalo [a,b] si el signo de f(a) es diferente
al signo de f(b)
a b
f(x)
x
Mid-point
Next estimate of Bisection
Bisection Method
f(a)
f(b)
[a,b]
[nuevo
punto]
1. Selecciona un intervalo [a,b] donde halla
un cero
2. Calcula el punto medio como nuevo
punto
3. Comprueba si hay cambio de signo en
[a,p] o en [p,b]. Comprobación: f(a)*f(p).
4. Si el producto es cero, entonces p es una
raíz. Si no es cero volver al punto 2.
Algoritmo
Método de la bisección (o intervalo medio)
7. Método de bisección: próximo
]
,
[
en
está
raíz
la
no
?
0
)
(
)
(
¿
]
,
[
en
está
raíz
la
si
2
+
n
n
1
n
2
n
2
+
n
1
+
n
x
x
x
f
x
f
x
x
8. Método de bisección: error
2
ln
ln
2
0
1
n
1
0
n
x
x
n
x
x
9. Método de bisección: ventajas
++ “Robusto”
++ Detecta singularidades
++ No necesita calcular la derivada
10. Método de bisección: desventajas
– – Lento
– – No usa toda la información de la función
– – No usa información de las derivadas
– – No detecta ceros en mín. o máx. locales
– – No detecta un número par de ceros
11. • CODIGO EN MATLAB DEL METODO DE BISECCION
clc;
• Fx=input('Ingrese la funcion: ','s');
• a=input('Ingrese a : ');
• c=input('Ingrese c : ');
• e=input('Ingrese el error : ');
• ezplot(Fx);%graficamos la funcion
• x=a;
• Fa=eval(Fx,[a,c]);
• x=c;
• Fc=eval(Fx);
• fprintf('n %6s %6s %7s %8s %10s %8s %8s
%8s n ','Interaccion','A','B','C','F(a)','F(b)','F(c)','|c-
a|');
• i=0;
13. AYUDA
EN MATLAB LA CONSTANTE EPSILON
SE DENOTA ASI : eps
En las ecuaciones la variable e
representa a EPSILON.
• log (0.5) Logaritmo natural
• LOG10 ( X ) Logaritmo decimal.
ayuda
14. Emplee el método de bisección para resolver la
ecuación
f(x)=(667.38/x)*(1-exp(-0.146843 *x))-40
a= 12; b = 16
TOL=0.001
EJEMPLO
18. • Con a=0.0 y b=1.5
• Tol=0.01
• Nota: la Funciones trigonometricas van en
minusculas.
19.
20. 20
Ecuaciones algebraicas no lineales
Método de la posición falsa
a b
f(x)
x
Intersection point
Next estimate of False-position
False-Position Method
f(a)
f(b)
[nuevo
punto]
[a,b]
1. Selecciona un intervalo [a,b] donde halla
un cero
2. Calcula un punto intersección como nuevo
punto
3. Comprueba si hay cambio de signo en [a,p]
o en [p,b]. Comprobación: f(a)*f(p).
4. Si el producto es cero, entonces p es una
raíz. Si no es cero volver al punto 2.
Algoritmo
( ) ( ) ( )[ ])
( ) ( )
f a f b f b a b
m b
m a m b f a f b
-
= Þ = -
- - -
22. Método de la RF: ecuación
)
ƒ(
)
ƒ(
)
ƒ(
+1
n
n
+1
n
n
+1
n
+1
n
2
+
n x
x
x
x
x
x
x
23. Método de la RF: próximo
]
,
[
en
está
raíz
la
no
?
0
)
(
)
(
¿
]
,
[
en
está
raíz
la
si
2
+
n
n
1
n
2
n
2
+
n
1
+
n
x
x
x
f
x
f
x
x
24. Método de la RF: ventajas
++ EN ALGUNOS CASOS...
es más rápido que bisección
++No necesita calcular derivadas
25. Método de la RF: desventajas
– – Puede ser más lento que bisección
– – No usa información de las derivadas
– – No detecta un número par de ceros
– – No detecta ceros en mínimos locales
26. Código en Matlab de Falsa Posición
• clc;
• Fx=input('Ingrese la funcion: ','s');
• a=input('Ingrese a : ');
• c=input('Ingrese c : ');
• e=input('Ingrese el error : ');
• ezplot(Fx,[a,c]); %graficamos la funcion
• x=a;
• Fa=eval(Fx);
• x=c;
• Fc=eval(Fx);
• i=0;
27. • fprintf('n %6s %6s %6s %6s %6s
%6s %6s %6s n
','Iteracción','A','B','C','F(a)','F(b)','F(c)','|c-
a|');
• error=100;
• err=0;
• while abs(error)> e
• i=i+1;
• b=(c*Fa-a*Fc)/(Fa-Fc);
• x=b;
•
28. • if (i>1)
• error=(b-err)*100/b;
• end
• err=b;
• Fb=eval(Fx);
• fprintf('n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f
n',i,a,b,c,Fa,Fb,Fc,error);
•
• if abs(Fc)<e
• break;
• else
• if Fa*Fb<=0
• c=b;
• Fc=Fb;
29. • else
• a=b;
• Fa=Fb;
• end
• end
• end
• err=0;
• fprintf('nEl resultado sera %.4f',b);
• grid on;
30. Emplee el método de falsa posición para resolver la
ecuación anterior
f(x)=(667.38/x)*(1-exp(-0.146843 *x))-40
a= 12; b = 16
TOL=0.001
EJEMPLO