Title: Soluci
1Solución de ecuaciones no lineales
- Curso de Programación numérica
2Temario
Métodos cerrados Métodos gráficos Método de
bisección Método de la posición falsa Métodos
abiertos Iteración simple de punto fijo Método
de Newton-Raphson Método de la secante Raíces de
polinomios Método de Müller Método de Bairstow
3Métodos gráficos
Los métodos gráficos consisten en graficar la
función f(x) y observar donde la función cruza el
eje x.
4Ejemplo 1
Encontrar la raíz de
5Ejemplo 2
Grafica de f(x) sen 10x cos 3x
6Ejemplo 2 (cont.)
Grafica de f(x) sen 10x cos 3x
7Tarea
Utilice Excel para los siguientes
problemas. Determine las raíces reales de
f(x) 0.5x2 2.5x 4.5 Gráficamente.
Confirme utilizando la fórmula cuadrática. Determ
ine las raíces reales de f(x) 5x3 5x2
6x 2 Gráficamente.
8Método de la bisección
Se trata de encontrar los ceros de f(x)
0 Donde f es una función continua en a,b con
f(a) y f(b) con signos diferentes.
y
f(a)
y f(x)
b
x
a
f(b)
9Método de la bisección
De acuerdo con el teorema del valor medio, existe
p ? a,b tal que f(p) 0. El método consiste en
dividir a la mitad el intervalo y localizar la
mitad que contiene a p. El procesos se repite
hasta la lograr la precisión deseada.
10Método de la bisección
Primera iteración del algoritmo
y
Mitad del intervalo que contiene a p
f(a)
y f(x)
f(p1)
b
x
a
f(b)
p
p1(ab)/2
11Método de la bisección
Segunda iteración del algoritmo
y
Mitad del intervalo que contiene a p
y f(x)
f(a)
b
x
a p1
f(b)
f(p2)
p
p2(ab)/2
12Método de la bisección
Algoritmo bisección Entradas extremos a,b
número de iteraciones ni tolerancia tol 1. pa
i1 eps12. mientras f(p)?0 y i? ni epsgttol
2.1. pa p 2.2. p (ab)/2 2.3. si
f(p)f(a)gt0 entonces ap 2.4. sino 2.5. si
f(p)f(b)gt0 entonces bp 2.6. i i 1 eps
p-pa/p
13Bisección en C
double biseccion(double a, double b, double
error, int ni) double p,pa,eps int i p
a i 1 eps 1 while(f(p) ! 0 iltni
eps gt error) pa p p (ab)/2
if(f(p)f(a)gt0) a p else
if(f(p)f(b)gt0) b p i eps
fabs(p-pa)/p return p
14Ejemplo
Función de ejemplo Función en C double f(x)
return sqrt(xx 1) - tan(x)
15Tarea
Haga funciones en C para encontrar la solución de
las siguientes ecuaciones utilizando la función
biseccion() 1. ex x2 3x 2 0 para 0 lt x
lt 1 2.
16Error en el método de bisección
Para el método de bisección se sabe que la raíz
esta dentro del intervalo, la raíz debe situarse
dentro de ?Dx / 2, donde Dx xb xa. La
solución en este caso es igual al punto medio del
intervalo xr (xb xa) / 2 Deberá expresarse
por xr (xb xa) / 2 ? Dx / 2
Error aproximado
sustituyedo
17Número de iteraciones
El error absoluto en la primera iteración es
El error absoluto en la iteración n-ésima es
Si el error deseado es Ead,El número de
iteraciones será
18Volumen del abrevadero
r
h
L
r
a
h
b
19Tarea
17. Un abrevadero de longitud L tiene una
sección transversal en forma de semicírculo con
radio r (véase la figura) Cuando se llena de agua
hasta una distancia h de la parte superior, el
volumen V de agua es V L 0.5 pr2 r2
arcsen(h/r) h(r2 h2)1/2 Escriba un programa
en C amigable para el usuario que lea los datos
de este problema y encuentre la profundidad h del
abrevadero. Utilice el método de bisección para
encontrar la solución.
r
h
L
20Resumen
Requiere que se conozca el intervalo en donde
está la raíz. Los valores de la función en los
extremos deben tener signos diferentes. Converge
lentamente, a cada paso el intervalo se divide en
2.
21Método de falsa posición
Este método considera cual límite del intervalo
está más próximo a la raíz. De la figura
f(xu)
Despejando
xr
xl
xu
f(xr)
f(xl)
22Ejemplo en Excel
Encontrar la raíz de
23Tarea
Encuentre la raíz real de f(x) (0.8 0.3x)/x,
por el método de falsa posición. Utilice valores
iniciales de 1 y 3, calcule el error porcentual
verdadero en cada iteración. Encuentre la raíz
analiticamente.
24Falsa posición en C
if(flfrlt0) xu xr fu f(xu)
iu 0 il if(ilgt2)
fl/2 else xl xr fl
f(xl) il 0 iu if(iugt2)
fu/2 else error 0
while(errorgtee iterltimax) return xr
double falsaPosicion(double xl, double xu,
double ee, int imax) double error,fl,fu,fr,xr,x
rOld int iter0,il0,iu0 fl f(xl) fu
f(xu) do xrOld xr xr xu -
fu(xl-xu)/(fl-fu) fr f(xr) iter
if(xr! 0) errorfabs((xr-xrOld)/xr100)
25Iteración de punto fijo
Un punto fijo de una función g(x) es un número p
tal que g(p) p. Dado un problema f(x) 0, se
puede definir una función g(x) con un punto fijo
en p de diferentes maneras. Por ejemplo g(x) x
f(x).
26Teorema
Si g ? C a, b y g(x) ? C a, b para toda x ? C
a, b, entonces g tiene un punto fijo en a,
b. Si además g(x) existe en (a, b) y una
constante positiva klt1 existe con g(x) lt
k, pata toda x ? (a, b), Entonces el punto fijo
en a, b es único.
y
y
g(x)gt1
g(x)lt1
y x
y x
b
b
y g(x)
pg(p)
y g(x)
pg(p)
a
a
a
a
b
p
x
b
p
x
27Algoritmo de punto fijo
Obtener una solución a p g(p) dada un
aproxiamción inicial p0. ENTRADA aproximación
inicial p0 tolerancia TOL número máximo de
iteraciones N0. 1. Tome i 1.2. Mientras i lt
N0 hacer 3. p g(p0) 4. Si p p0 lt TOL
entonces5. Regresar p6. i i 17. p0
p8. Fin mientras9. Imprime El procedimiento
fracasó después de N0 iteraciones
28Gráfica del algoritmo de punto fijo
y x
y
y
p3 g(p2)
y x
y g(x)
p2 g(p1)
p2 g(p1)
p1 g(p0)
p3 g(p2)
y g(x)
p1 g(p0)
p0
p3
p2
p1
p0
p2
p1
x
x
29Casos de no convergencia
y x
y
y
y x
y g(x)
y g(x)
x
x
30Ejemplo
Sea la función x3 4x2 10 0 tiene una raíz
en 1, 2
Puede despejarse en a. x g1(x) x x3 4x2
10 b. x g2(x) ½(10 x3)½ c. x g3(x)
(10/(4 x))½ d. x g4(x) x (x3 4x2
10)/(3x2 8x)
31Iteraciones de punto fijo
(b) 1.51.2869537671.4025408031.3454583741.3751
702521.3600941921.3678469671.3638870031.365916
7331.3648782171.3654100611.3651378201.36527720
81.3652058501.3652423831.3652295781.365230028
1.365230012
(c) 1.51.3483997241.3673763711.3649570151.3652
647481.3652255941.3652305751.3652299411.365230
0221.3652300121.3652300131.365230013
(a) 1 1.52 -0.8753 6.7324218754
-469.720012005 1.02754555E86 -1.084933870E247
1.277055591E728 -2.082712908E2169
NaN101112131415202530
(d) 1.51.3733333331.365262014
1.3652300131.365230013
32Funciones graficadas en MathLab
a)
b)
c)
d)
33Teorema de punto fijo
Si g ? C a, b y g(x) ? C a, b para toda x ? C
a, b, además supongamos que existe g(x) en (a,
b) y una constante positiva klt1 cuando g(x)
lt k, pata toda x ? (a, b), Entonces, para
cualquier punto p0 en a, b la sucesión definida
por pn g(pn1), n gt1 Converge en el único
punto fijo p en a, b.
34Corolario
Si g satisface las hipótesis de teorema del punto
fijo, las cotas de error que supone utilizar pn
para aproximar a p están dadas por pn p lt
kn max(p0 a, b p0) Y por pn p lt kn
p1 p0/ (1 k), para toda ngt1
35Análisis del ejemplo
Caso (a) g1(x) x x3 4x2 10 g1(x) 1
3x2 8x g1(1) 11, g1(2) 28 No se
cumple g1(x) lt1
Caso (b) g2(x) ½(10 x3)½ g2(x) 3/4x2(10
x3)½ g2(1) 0.25, g1(2) 2.1213 No se
cumple g1(x) lt1
Caso (c) g3(x) (10/(4 x))½ g3(x) (
5/3.16)(4 x)1.5 lt ( 5/3.16)(5)1.5 lt
0.15 Para toda x en 1, 2
Caso (d) g4(x) x (x3 4x2 10)/(3x2
8x) Se cumple g4(x) es aún menor que en el
caso (c) para toda x en 1, 2
36Programa en Matlab
function y PuntoFijo(f_name, p0, tol,
ni) f_name - nombre de la funcion p0 - valor
inicial de la raiz tol tolerancia ni número
de iteraciones i 1 while iltni p
feval(f_name,p0) if(abs(p0-p)lttol) y
p break end i i 1 p0
p end fprintf('No se encontro solucion.')
37Función en C
double PuntoFijo(double p0, double tol, int ni)
int i 1 double p while(iltni) p
f(p0) if(fabs((p0-p)/p)lttol) return
p i p0 p stdcout ltlt "NO
solucion en " ltlt ni ltlt iteraciones.\n"
return p
38Tarea
Encontrar la raíz más grande de f(x) 2x3
11.7x2 17.7x 5 Resolver por el método del
punto fijo partiendo de x 3.
39Método de Newton-Raphson
f(x)
La ecuación de la recta tangente es y f(xn)
f (xn)(x xn) Cuando y 0, x xn1 o sea 0
f(xn) f (xn)(xn1 xn) o
Pendiente f (xn)
f (xn)
xn
xn1
40Algoritmo Newton
Para obtener una solución a f(x) 0 dada una
aproximación p0. ENTRADA aproximación inicial p0
tolerancia tol número máximo de iteraciones
N0. 1. i 1 2. Mientras iltN0 hacer 2.1. p p0
f(p0)/f(p0) 2.2. Si p p0lt tol entonces
regrese p 2.3. i i 1 2.4. p0 p 3. fracaso
en encontrar la raíz en N0 iteraciones
41Ejemplo
f(x) x cos(x) f(x) 1 sen(x)
pn1 pn (pn cos(pn))/(1 sen(pn))
Tomando p0 0, se obtiene
pn f(pn) f(pn) pn10 -1 1 11 0.459698
1.8414 0.75036390.7503639 0.0189 1.6819 0.7391
1280.7391128 0.00005 1.6736 0.7390851
0.7390851 3E-10 1.6736 0.7390851
42Ejercicio
Encontrar la solución de x3 4x2 10 0 En
el intervalo 1, 2 con el método de Newton
43Código en C
double Newton(double x0, double ee, int ni)
int i 0 double x,fx,dfx while(iltni)
fx f(x0) dfx df(x0) x x0-fx/dfx
if(fabs((x-x0)/x)ltee) return x
i x0 x stdcout ltlt "No solución
en "ltlt i ltlt " pasos\n" return x
44Ejemplo cuenta de ahorros
El valor acumulado de una cuenta de ahorros puede
calcularse con la ecuación de anualidad vencida
A P(1 i )n - 1 / i En esta ecuación A
es el monto de la cuenta, P es la cantidad que se
deposita periódicamente e i es la tasa de interés
por periodo para los n periodos de depósito. A un
ingeniero le gustaría tener una cuenta de ahorros
con un monto de 750,000 dólares al momento de
retirarse dentro de 20 años, y puede depositar
1,500 dólares mensuales para lograr dicho
objetivo. Cuál es la mínima tasa de interés a
que puede invertirse ese dinero, suponiendo que
es un interés compuesto mensual? Escriba un
programa en C para este problema, el programa
deberá pedir todos los datos necesarios y
utilizar el método de Newton para calcular el
interés a que debe invertirse el dinero.
45Solución
Para estimar el valor inicial de i podemos
desarrollar el binomio (1 i)n para aproximarlo
a la segunda potencia. El resultado es
Se sugiere validar los datos de entrada. El
capital a obtener debe ser mayor que el depósito
por el número de abonos, es decir A gt nP
46Ejemplos resuelto en Excel
47Método alternativo para evaluar la derivada
(método de la secante)
Es posible calcular la derivada en xn usando
O utilizando
48Algoritmo Newton2
Para obtener una solución a f(x) 0 dada una
aproximación p0. ENTRADA aproximación inicial p0
tolerancia tol número máximo de iteraciones
N0. 1. i 12. h 0.0013. Mientras iltN0
hacer 2.1. y f(p0) 2.2. y_deriv
(f(p0h)-y)/h 2.3. p p0
y/y_deriv 2.4. Si p p0lt tol entonces regrese
p 2.5. i i 1 2.6. p0 p3.
fracaso en encontrar la raíz en N0 iteraciones
49Código en C
double Newton(double x0, double ee, int ni)
int i 0 double x,fx,dfx,h h 0.0001
while(iltni) fx f(x0) dfx
(f(x0h)-fx)/h x x0-fx/dfx
if(fabs((x-x0)/x)ltee) return x i
x0 x stdcout ltlt "No solución en "ltlt i
ltlt " pasos\n" return x
50Programa en Matlab
function x Newt_n(f_name, xO) Iteración de
Newton sin gráficos x xO xb x-999 n0
del_x 0.01 while abs(x-xb)gt0.000001 nn1
xbx if ngt300 break end yfeval(f_name, x)
y_driv(feval(f_name, xdel_x) - y)/del_x
x xb - y/y_driv fprintf(' n3.0f,
x12.5e, y12.5e, ', n,x,y) fprintf(' yd
12.5e \n', y_driv) end fprintf('\n Respuesta
final 12.6e\n', x)
Calcula derivada con incrementos
51Raíz cuadrada con Newton
Para extraer la raíz cuadrada de un número se
puede resolver la ecuación f(x) x2 c 0 La
derivada es f(x) 2x La fórmula de recurrencia
de Newton es xn1 xn (xn2 c)/(2xn) xn/2
c/(2xn) (xn c/xn)/2 Ejemplo raíz cuadrada
de 5 con x0 1.
52Desventajas
En algunos casos la convergencia es muy lenta,
considere f(x) xn 1 Se obtiene la siguiente
secuencia empezando en x 0.5 iteración x0 0.5
1 51.652 46.4853 41.83654 37,65285 .. -- 1
.000000
53Desventajas (cont.)
f(x)
f(x)
x1
x0
x2
x
x0
x1
x2
x
mínimo local
raíz cerca de punto de inflexión
f(x)
f(x)
x1
x
x0
x1
x0
x
varias raíces
la iteración en un mínimo
54Ejemplo
Resolver utilizando Excel sen x - e-x 0 para
0lt x lt 1 y 3lt x lt 4 y 6lt x lt 7
55Resultados
h 0.1
xn f(xn) f'(xn) xn1
0.00000000 -1.00000000 1.94995999 0.51283104
0.51283104 -0.10815190 1.41522716 0.58925121
0.58925121 0.00099615 1.33011566 0.58850229
0.58850229 -0.00004224 1.33095756 0.58853402
0.58853402 0.00000178 1.33092188 0.58853269
h 0.01
xn f(xn) f'(xn) xn1
0.00000000 -1.00000000 1.99499996 0.50125314
0.50125314 -0.12524617 1.47731614 0.58603267
0.58603267 -0.00347081 1.38411969 0.58854027
0.58854027 0.00001043 1.38133294 0.58853271
0.58853271 -0.00000004 1.38134134 0.58853274
56Tarea 14
La carga en un circuito RLC serie esta dada por
suponga q/q0 0.01, t 0.05 s, L 5H y C
10-6 F. Encuentre el valor de la Resistencia R
usando el método de Newton. Haga un programa en C
para este problema.
57Ejemplo
La carga en un circuito RLC paralelo la
impedancia esta dada por
suponga R 225, L 0.5H y C 0.610-6 F y Z
75 Ohms. Encuentre el valor de la frecuencia w
usando el método de Newton.
58Convergencia en el punto fijo
El algoritmo de punto fijo es de tipo lineal. Se
puede demostrar que el error verdadero en la
iteración i1 es Et,i1 g(x)Et,i donde Et
,i xr - xi
59Convergencia en Newton Raphson
El algoritmo de Newton es de tipo cuadrático. Se
puede demostrar que el error verdadero en la
iteración i1 es Et,i1 (- f (xr)/2f
(xr))E2t,i
Esto significa que el número de decimales exactos
se duplica con cada iteración.
60Raíces múltiples
En el caso de que un polinomio tenga raíces
múltiples, la función tendrá pendiente igual a
cero cuando cruce el eje x. Tales casos no pueden
detectarse en el método de bisección si la
multiplicidad es par. En el método de Newton la
derivada en la raíz es cero. Generalmente el
valor de la función tiende a cero más rápido que
la derivada y puede utilizarse el método de Newton
61Ejemplo
Polinomio f(x) (x 3) (x 1) (x 1)