Professional Documents
Culture Documents
Solución de
Ecuaciones
no Lineales
f ( x) 0, a xb
x(2.1 0.5 x)1 / 2
3.69 0 0 x 1
(1 x)(1.1 0.5 x) 1/ 2
c a ca
Equivalente a: n 1.4427 ln
2n
x=a
x=c
f c f a ca
y f a x a x a y f a
ca f c f a
ca af c cf a
Haciendo y = 0, se obtiene: ba f a
f c f a f c f a
f ( x) 0 f ( x0 ) f ' ( x0 )( x x0 ) O(h 2 )
y
La recta tangente que pasa por (x0,f(x0)) es:
fo
g( x) f ´( x0 )( x x0 ) f ( x0 )
f1
Haciendo g(x) = 0, se obtiene: f2
f x0 f xi 1
x1 x0 xi xi 1 x
f ´x0 f ´xi 1
x2 x1 xo
Método de Newton
Para funciones difíciles de derivar; la derivada puede aproximar por
aproximaciones hacia adelante o hacia atrás con h constante:
f xi 1 h f xi1 f xi1 f xi1 h
f ´(xi 1 ) f ´xi 1
h h
Ejemplo: Resolver para a = 155 la siguiente ecuación cúbica,
mediante el método de Newton.
f x x 3 a
f x n xn a 2
3
a
x n 1 xn xn xn 2
f ' x n 2
3xn 3 3xn
Iter. x
0.0000 10.0000
1.0000 7.1833
2.0000 5.7902
3.0000 5.4012
4.0000 5.3718
5.0000 5.3717
Método de la Secante
xn1 xn2
fo
xn xn1 y n1
f2
f1 y n1 y n2
x
x2 x1 xo
Método de la Secante
Ejemplo: Determinar la velocidad terminal de un proyectil que
desciende verticalmente con una velocidad V (m/s):
1.15V 2 1.4V 1.5 1962
Solución: El problema consiste en el cálculo de la raíz de:
Y f (V ) 1.15V 2 1.4V 1.5 1962
para lo cual se requiere asignar los valores iniciales para V0 y V1 para
obtener e valor de V2, de acuerdo a la fórmula siguiente:
V1 V0 n V
V2 V1 f (V1 ) 0 30.00000
f (V1 ) f (V0 ) 1 30.10000
2 30.15411
Haciendo: V0 = 30.0 y V1 = 30.1, 3 38.62414
se obtiene la siguiente tabla de 4 37.64323
resultados donde la velocidad
5 37.73358
terminal es V = 37.7 m/s
6 37.73458
Ejemplo: Elaborar el código en MATLAB para la solución del problema anterior.
Solución
% Método de la Secante para encontrar la raíz de una ecuación
clear all;
clc;
fprintf('Cálculo de una raíz por el método de la Secante\n');
f=input('Ingresar la funcion f(x) : ','s');
x0=input('Ingresar el primer valor inicial de x; x0: ');
x1=input('Ingresar el primer valor inicial de x; x1: ');
precis=input('Ingrese la precisión de cálculo; precis: ');
error=100;
it=0;
fprintf('\n %8s %7s %7s %7s \n ','Iter.','x0','x1','xi');
while abs(error)>precis
x=x0;
g=eval(f);
x=x1;
gg=eval(f);
xi=x1-((gg*(x0-x1))/(g-gg));
error=abs(xi-x1);
fprintf('\n %8.4f %8.4f %8.4f %8.4f \n',it,x0,x1,xi);
x0=x1;
x1=xi;
it=it+1;
end
fprintf('\n %8.4f %8.4f %8.4f %8.4f \n',it,x0,x1,xi);
Aplicación del programa en MATLAB