Anda di halaman 1dari 55

Cálculo de ceros de funciones reales de una variable real:

Se intenta resolver el problema de encontrar para qué valor de x, la


función continua, f(x) toma el valor cero.

f (x0 )  0  x 0  ?

La solución analítica no siempre es posible y tenemos que recurrir


a soluciones numéricas.
La existencia de dicha solución en un intervalo determinado viene
dada por el teorema de Bolzano, según el cuál, si una función continua
toma valores de signo opuesto en los extremos de un intervalo, existe
al menos un punto interior en el intervalo en el que la función se anula:

sgn( f (a))  sgn( f (b))   x0 (a,b) / f (x 0 )  0


Basándonos en el teorema de Bolzano podríamos diseñar un método
sencillo para la búsqueda de ceros de la forma siguiente:

- una vez que tenemos localizado un intervalo en el que la función


cambia de signo, sabemos que, al menos, contiene un cero.
- dividimos el intervalo por la mitad y evaluamos la función en el
punto medio. Si el valor de la función es cero, ya hemos encontrado
el punto buscado. Si no lo es, tomamos ese nuevo punto cómo el punto
extremo de un nuevo intervalo en el que el otro extremo es el inicial
que tiene signo opuesto al del punto medio.
- disponemos así, de un nuevo intervalo más pequeño (la mitad del
inicial)en el que se cumplen nuevamente las condiciones del teorema
de Bolzano y al que podemos volver a aplicar iterativamente (de
forma sucesiva) el algoritmo anterior. Es decir, dividir por dos hasta
llegar tan cerca del cero como queramos.
Este proceso iterativo recibe el nombre de “búsqueda dicotómica”, y
es un método de convergencia lenta.
Método de la Secante (Regula Falsi):
Consiste en aproximar la función en el intervalo en el que cambia de
signo mediante una interpolación lineal (una recta). Posteriormente, se
calcula el punto en el que dicha recta se hace cero y este es el nuevo
punto que se toma para definir un nuevo intervalo, más pequeño, en el
que la función cambie de signo de nuevo:
f (x2 )  f (x1 )
si sgn( f (x1 ))  sgn( f (x 2 ))  y  f (x1 )  (x  x1 )
x2  x1

x2  x1
y  0  x  x1  f (x1 )
f (x2 )  f (x1 )
Calcular un cero de la función siguiente en el entorno de x = 0.95:

f (x)  2cos(x)  x  0.1

x1  0.95  f (x1)  0.113366


x2  1.05  f (x2 )  0.154858
x2  x1
x3  x1  f (x1 )  0.9922654
f (x2 )  f (x1 )
3
f (x3 )  1.32358 10
x 2  x3
x4  x 3  f (x3 )  0.992755
f (x 2 )  f (x 3 )
5
f (x3 )  1.40593 10
Método de Newton:
Este es un método local e iterativo en el cuál aproximamos el entorno
de la función suponiendo que se comporta como su primera derivada.
4

-1

-2

-3
Método de Newton:
Este es un método local e iterativo en el cuál aproximamos el entorno
de la función suponiendo que se comporta como su primera derivada.
4

3
f (x)  f (x 0 )  f ' (x 0)(x  x 0 )

0
x0
-1

-2

-3
Método de Newton:
Este es un método local e iterativo en el cuál aproximamos el entorno
de la función suponiendo que se comporta como su primera derivada.
4

3
y  f (x 0 )  f ' (x 0)(x  x 0 )
f (x 0 )
2 0  f (x 0 ) x1f   1  x0 )
' (xx00 )(x
f ' (x 0 )
1

0
x1
x0
-1

-2

-3
Método de Newton:
Este es un método local e iterativo en el cuál aproximamos el entorno
de la función suponiendo que se comporta como su primera derivada.
4

f (x 0 )
2 x1  x 0 
f ' (x 0 )
1

0
x1
x0
-1

-2

-3
Método de Newton:
Este es un método local e iterativo en el cuál aproximamos el entorno
de la función suponiendo que se comporta como su primera derivada.
4

f (x 0 )
2 x1  x 0 
f ' (x 0 )
1

0
x1
x0 x2
-1

f (x1 )
x2  x1 
-2

-3
f ' (x1 )
Método de Newton:
Se emplea un único punto de partida. Pero debemos tener cuidado en
la elección del mismo. Concretamente hay que tener cuidado con la
proximidad de extremos relativos. Si hubiéramos elegido como punto
de partida el nuevo x0 de la figura no habríamos encontrado el cero:
4

0
x0
-1

-2

-3
5

0
x1
x0
-1

-2
También pueden surgir problemas en los entornos de un cero con
pendientes muy marcadas:

0
x2 x0
x1
-2

-4

-6
En los casos en los que la derivada la tengamos que calcular de forma
numérica:

f (x 0 ) f (x0 ) (Regula Falsi)


x1  x 0   x0  h
f ' (x 0 ) f (x0  h)  f (x0 )

f (x 0  h)  f (x 0 )
f ' (x 0 ) 
h
Calcular el cero de la función f(x) = tg(x)- x que corresponde a n = 1,
sabiendo que los ceros están en los entornos de los puntos xn = (n+1/2)p

Si tomamos x0 = 4.7:
f (x0 )  tg( x0 )  x 0  tg( 4.7)  4.7  76.012759

1
f ' (x)  2  1  tg x
2

cos x
f (x 0 ) f (4.7) tg(4.7)  4.7
x1  x 0   4.7   4.7  2
f ' (x 0 ) f' (4.7) tg (4.7)

x1  4.6883318  f (x1)  36.87


f (x1 )
x2  x1   4.6669845  f (x2 )  17.34
f ' (x1 )
f (x2 )
x3  x2   4.6311833  f (x3 )  7.66
f' (x2 )
f (x3 )
x4  x 3   4.5804731  f (x4)  2.91
f ' (x3 )
f (x 4 )  f (x5 )  0.846
x5  x 4   4.528429
f ' (x 4 )
f (x5 )
x6  x 5   4.4991381  f (x6 )  0.119
f' (x5 )
f (x 6 ) 3
x7  x 6   4.493564  f (x 7 )  3.1 10
f ' (x6 )
f (x7 ) 6
x8  x 7   4.4934096  f (x8 )  2.9 10
f' (x7 )
Calcular un cero de la función siguiente en el entorno de x = 0.95:

f (x)  2cos(x)  x  0.1

Calcular un cero de la función siguiente en el entorno de x = 3:

f (x)  sen x
2

Calcular el punto de la curva y = 1/x más próximo al punto (2,1).


Calcular un cero de la función siguiente en el entorno de x = 0.95:

f (x)  2cos(x)  x  0.1

x0  0.95  f (x0 )  0.113366


f ' (x)  2sen( x) 1

f (x 0 ) 2cos(0.95)  0.95  0.1


x1  x 0   0.95   0.993157
f ' (x 0 ) 2sen(0.95)  1
f (x1 )  0.00106141

f (x1 )
x2  x1   0.99276  f (x2 )  6.84 10 7

f ' (x1 )
Calcular un cero de la función siguiente en el entorno de x = 3:

f (x)  sen x
2

x0  3  f (x0 )  0.0199149
f ' (x)  sen 2x

f (x 0 ) sen 2 3
x1  x 0   3  3.0712732
f ' (x 0 ) sen6
f (x1 )  0.00493668

f (x1 )
x2  x1   3.106491  f (x2 )  0.00123162
f ' (x1 )
f (x2 )
x3  x2   3.1240491  f (x3 )  0.0003077
f' (x2 )
f (x3 )
x4  x 3   3.1328218 5
 f (x 4 )  7.693 10
f ' (x3 )
f (x 4 )
x5  x 4   3.1372073  f (x5 ) 1.923 10 5
f ' (x 4 )
f (x5 ) 6
x6  x 5   3.1394  f (x6 )  4.808 10
f' (x5 )
f (x 6 ) 6
x7  x 6   3.1404963  f (x 7 )  1.202 10
f ' (x6 )
f (x7 ) 7
x8  x 7   3.1410445  f (x7)  3.005 10
f' (x7 )
f (x8 ) 8
x9  x 8   3.1413186  f (x8 )  7.51 10
f' (x8 )

f (x 9 ) 8
x10  x 9   3.1414556  f (x10 )  1.88 10
f ' (x9 )
Calcular el punto de la curva y = 1/x más próximo al punto (2,1).

2.5

1.5

0.5

0
0 0.5 1 1.5 2 2.5 3 3.5
La distancia entre dos puntos del plano (x1,y1) y (x2,y2) viene dada por:

d  (x 2  x1 )  (y2  y1 )
2 2

luego la distancia de los puntos sobre la curva y = 1/x al punto (2,1) es:
1
d(x)  (x  2)  ( 1)2
2

x
Queremos minimizar la función anterior d(x); pero eso es equivalente a
minimizar la siguiente función, g(x), que no es más que su cuadrado:
1
g(x)  (x  2)  (  1)
2 2

x
Para encontrar el mínimo de esta función tendremos que ver dónde se
anula su 1ª derivada:
g' (x mi n)  0  xmi n ?
2 1 2 2
Como: g' (x)  2(x  2)  2 (  1)  2x  4  3  2
x x x x
tenemos que encontrar para qué valor de x se anula la función:
1 1
f (x)  x  2  3  2
x x
Tomemos como punto de partida x0 = 1:

f (x0 )  1
3 2
f ' (x)  1 4  3
x x
1 1
1 2  3  2
f (x 0 ) 1 1  1.5  f (x )  0.351852
x1  x 0   1
f ' (x 0 ) 3 2 1
1 4  3
1 1
f (x1 )
x2  x1   1.85185  f (x2 )  0.0140139
f ' (x1 )
f (x2 ) 7
x3  x2   1.86676  f (x3 )  3.75063 10
f' (x2 )

En principio, en vez de haber buscado el cero de la función:

1 1
f (x)  x  2  3  2
x x
podríamos haber buscado el cero de la función siguiente, F(x):

F(x)  x  2x  1 x
4 3
 x 3 f (x)
Sin embargo, si hubiéramos partido del mismo punto inicial, x0 = 1:
F(x 0 )  1

F' (x)  4x 3  6x 2  1

F(x0 )
x1  x 0  0  F(x1)  1
F' (x0 )

F(x1 )
x2  x1   1  ¡ volvemos al mismo punto !
F' (x1 )
1 1
f (x)  x  2  3  2
x x
1.5

0.5

0
0 0.5 1 1.5 2 2.5

-0.5

-1

F(x)  x  2x  1 x
-1.5 4 3

-2
Método de Whittaker:
Se basa en el método de Newton. La diferencia estriba en que la
derivada se toma constante a partir del primer punto, suponiendo que
dicha derivada no varía fuertemente en las proximidades del cero, en
comparación con el valor de la función que varía incluso de signo.
Este método, como veremos más adelante, encuentra su mayor
aplicación en funciones multivariadas de varias variables, en las que el
cálculo de la derivada supone el invertir una matriz.
Método de Müller:
Como el de Newton, es un método local e iterativo en el que partimos
de un único punto pero tomamos un término más en el desarrollo para
para aproximar el entorno de la función:

f ' ' (x0 )


y  f (x 0 )  f ' (x 0 )(x  x 0 )  (x  x 0 )
2

2
Haciendo y = 0, encontramos dos posibles soluciones para el punto
siguiente x1:

f' ' (x 0 )
0  f (x 0 )  f ' (x 0 )(x1  x0 )  (x1  x0 )
2

 f ' (x 0 )  f' (x0 )  2 f (x0 ) f ' ' (x0 )


2

x1  x 0 
f' ' (x 0 )
Utilizar los métodos de Newton y Müller para encontrar el cero de
La siguiente función en la proximidad de x = 0.1:

y  ln(sen x  1)
2

Newton:
Tomando como punto de partida x0 = 0.1:
f (x0 )  0.5354

2sen x cos x sen 2x


f ' (x)  
1  sen x 1  sen x
2 2

f (x 0 ) ln(sen 2 0.1 1)
x1  x 0   0.1  0.0495835
f ' (x 0 ) sen 0.2
1  sen2 0.1 f (x1 )  0.0024535
f (x1 )
x2  x1   0.024741  f (x2 )  0.000611805
f ' (x1 )
f (x2 )  f (x3 )  0.000152854
x3  x2   0.0123642
f' (x2 )
f (x3 )
x4  x 3   0.00618131  f (x4)  0.0000382074
f ' (x3 )
f (x 4 )
x5  x 4   0.00309056  f (x5 )  9.55149 106
f ' (x 4 )

Se puede apreciar que, mediante el método de Newton, la convergencia


es lenta: Veamos, a continuación qué sucede con el método de Müller:
Müller:
Tomando el mismo punto de partida x0 = 0.1:
2 cos2x(1 sen 2 x)  2sen x cos x sen2x
f ' ' (x) 
(1  sen2 x)2

2cos2x  sen2x 2


f ' ' (x)    2 
1  sen x 1 sen x 
2

 f ' (x 0 )  f' (x0 )  2 f (x0 ) f ' ' (x0 )


2

x1  x 0   0.0129298
f' ' (x 0 )

 f (x1)  0.000167156
 f ' (x1 )   f' (x1 )  2 f (x1 ) f' ' (x1 )
2

x2  x1   0.000257272
f '' (x1 )

8
 f (x2 )  6.61889 10

 f ' (x2 )  f ' (x 2 )  2 f (x 2 ) f '' (x 2 )


2
7
x3  x2   1.04238 10
f ' ' (x2 )

14
 f (x3 ) 1.08802 10
Calcular p con 5 cifras exactas mediante la función y = cos x,
y partiendo del punto x = 3.

Calcular el cero de la función siguiente en las proximidades de x = 0.8:

g(x)  cospx  e (x1) 2

Calcular cuáles son dos números tales que suman 20 y al añadirle a cada
uno su raíz cuadrada positiva, su producto es 155.55 .

Calcular un extremo de la función siguiente en las proximidades del


punto x = 3.1:
y  ln 2  cos(2  ln x)
Calcular p con 5 cifras exactas mediante la función y = cos x,
y partiendo del punto x = 3.

Podemos buscar el valor de p como el del cero de la función


f(x) = cos(x) + 1:
Newton:
Tomando como punto de partida x0 = 3:
f (x0 )  0.010007503

f ' (x)  sen x

f (x 0 ) cos 3  1
x1  x 0   3  3.07091  f (x1)  0.002497
f ' (x 0 ) sen 3
f (x1 )
x2  x1   3.10627  f (x2 )  0.00062378
f ' (x1 )
f (x2 )  f (x3 )  0.000155981
x3  x2   3.12393
f' (x2 )
f (x3 )
x4  x 3   3.13276  f (x 4 )  3.90076 10 5

f ' (x3 )
f (x 4 )
x5  x 4   3.13718  f (x5 )  9.73574 106
f ' (x 4 )
f (x5 )
x6  x 5   3.13939  f (x6 )  2.42584 10 6
f' (x5 )
Vemos que, con el método de Newton, la convergencia es excesivamente
lenta, por lo que recurrimos al método de Müller:
Müller:
Tomando el mismo punto de partida x0 = 3:

f ' ' (x)   cosx

 f ' (x 0 )  f' (x0 )  2 f (x0 ) f ' ' (x0 )


2

x1  x 0   3.15266
f' ' (x 0 )

6
 f (x1 )  6.12425 10

 f ' (x1 )   f' (x1 )  2 f (x1 ) f' ' (x1 )


2

x2  x1   3.14165
f '' (x1 )

9
 f (x2 )  1.64431 10
 f ' (x2 )  f ' (x 2 )  2 f (x 2 ) f '' (x 2 )
2

x3  x2   3.14159
f ' ' (x2 )

12
 f (x3 )  3.52074 10

Comprobemos que también habiendo escogido el signo negativo,


Habríamos llegado al mismo resultado:

 f ' (x 0 )   f' (x0 )  2 f (x0 ) f ' ' (x0 )


2

x1  x 0   3.13244
f' ' (x 0 )

 f (x1 )  4.18852 10 5
 f ' (x1 )   f' (x1 )  2 f (x1 ) f' ' (x1 )
2

x2  x1   3.14155
f '' (x1 )

10
 f (x2 )  9.09664 10

 f ' (x2 )  f ' (x 2 )  2 f (x 2 ) f' ' (x 2 )


2

x3  x2   3.14159
f ' ' (x2 )

12
 f (x3 )  3.52074 10
Calcular el cero de la función siguiente en las proximidades de x = 0.8:

g(x)  cospx  e (x1) 2

Newton:
Tomando como punto de partida x0 = 0.8:
g(x 0 )  0.231974

g' (x)  p sen px  2(x 1)e ( x1) 2

g(x 0 )
x1  x 0   0.902432  g(x1)  0.0561752
g' (x0 )
g(x1 )
x2  x1   0.951495  g(x2 )  0.0139433
g' (x1 )
g(x2 )  g(x3 )  0.00347961
x3  x2   0.975782
g' (x 2 )
g(x3 )
x4  x 3   0.987895  g(x4 )  0.000869556
g' (x3 )
g(x 4 )  g(x5 )  0.000217367
x5  x 4   0.993948
g' (x4 )
g(x5 ) 5
x6  x 5   0.996974  g(x6 )  5.43428 10
g' (x5 )
Vemos que, con el método de Newton, la convergencia es excesivamente
lenta, por lo que podríamos recurrir al método de Müller:
Calcular cuáles son dos números tales que suman 20 y al añadirle a cada
uno su raíz cuadrada positiva, su producto es 155.55 .

El problema equivale a encontrar un cero de la siguiente función:

f (x)  (x  x )(20  x  20  x )  155.55


Newton:
Tomando como punto de partida x0 = 11:
f (x0 ) 16.2495
 1   1 
f ' (x)  1  ( 20  x  20  x )  (x  x )1 
 2 x   2 20  x 

f (x 0 )
x1  x 0   16.6156  f (x1)  47.4544
f ' (x 0 )
f (x1 )
x2  x1   14.2952  f (x2 )  9.25521
f ' (x1 )
f (x2 )  f (x3 )  0.817527
x3  x2   13.5662
f' (x2 )
f (x3 )
x4  x 3   13.4881  f (x4)  0.00969977
f ' (x3 )
f (x 4 )  f (x5 )  0.000498109
x5  x 4   13.4872
f ' (x 4 )

x6  x 5
Calcular un extremo de la función siguiente en las proximidades del
punto x = 3.1:
y  ln 2  cos(2  ln x)

El problema equivale a encontrar un cero de la siguiente función:


 1 
 sen(2  ln x)

 x 
y'   f (x)
2  cos(2  ln x)
El calcular la derivada de f(x) de forma exacta, analíticamente, sería
farragoso. Podemos evitarlo tomando la aproximación numérica de
dicha derivada:
f (x 0 ) f (x 0 )
x1  x 0   x0 
f ' (x 0 ) f (x0  h)  f (x 0  h)
2h
f (x 0 ) f (x 0 )2h
x1  x 0   x0 
f (x 0  h)  f (x 0  h) f (x0  h)  f (x 0  h)
2h
Tomando h = 10-4:
f (x0 )2h
x1  x 0   3.13128
f (x 0  h)  f (x 0  h)
5
 f (x1 )  4.8155 10

f (x1 )2h
x2  x1   3.13175
f (x1  h)  f (x1  h)

7
 f (x2 )  2.23469 10
Alternativamente, en vez de haber escogido la función f(x) como:
 1 
 sen(2  ln x)

 x 
f (x) 
2  cos(2  ln x)
podríamos haber simplificado el problema tomando:
f (x)  sen(2  ln x)
Newton:
Tomando como punto de partida x0 = 3.1:
f (x0 )  0.0101904

1
f ' (x)  cos(2  ln x)
x
f (x 0 )
x1  x 0   3.13159  f (x1 )  5.17908 105
f ' (x 0 )

f (x1 )  f (x2 )  2.23469 107


x2  x1   3.13175
f ' (x1 )
Aplicación al cálculo de funciones inversas:

Supongamos que tenemos una función y = f(x) y que queremos


encontrar el valor de x para un valor dado de y; es decir, que queremos
construir la función inversa: x = f -1(y).
El problema se puede replantear como el cálculo del cero de otra
función, g(x) = f(x)-y; donde y es el valor para el que queremos calcular
la función inversa.
Ejemplo: Cálculo de la función x = arcos y
Queremos, por tanto, encontrar el cero de la siguiente función:
g(x)  cos x  y
g' (x)  sen x
y, si empleamos el método de Newton:
g(x 0 ) cos x0  y
x1  x 0   x0 
g' (x0 )  sen x0
g(x 0 ) cos x0  y
x1  x 0   x0 
g' (x0 )  sen x0

Para tomar un punto inicial x0 adecuado, en este caso, podríamos


hacer lo siguiente:
x2
y  cos x  1   x  2(1  y)
2
Así, si , por ejemplo, quiséramos calcular x = arcos(0.25):
x0  2(1  0.25)  1.2247449

g(x 0 )  0.089186
g(x 0 )
x1  x 0   1.31955  g(x1)  0.00138865
g' (x0 )
g(x1 )
x2  x1   1.31812  g(x2 )  3.80361 106
g' (x1 )
Calcular con un error inferior al 1% para qué valor de x tendrían
el mismo valor la función y la integral siguientes:
5

f (x)  x  e  ln
x 2
; x dx
1

Calculando la integral mediante cuadratura de Gauss-Legendre:


5 1

 ln x dx  2  ln (2z  3) dz
2 2

1 1

2x  (1  5)
z  x  2z  3  dx  2dz
5 1
Tomando n=2 (3 puntos):

z0  0.7745967 ; z1  0 ; z2  0.7745967
1 2
2  ln (2z  3) dz  2 wi ln (2zi  3)
2 2

1 i 0

1
2  ln 2 (2z  3) dz 
1

8 2 5 2 3 3
2{ [ln (2(0)  3)]  [ln (2( )  3)  ln (2( )  3)]}
2
9 9 5 5

2  ln (2z  3) dz  4.84963
2

1
Tomando n=3 (4 puntos):
z0  0.8611363 ; z1  0.3399810 ; z2  0.3399810 ; z3  0.8611363
1 3
2  ln (2z  3) dz  2 wi ln (2zi  3)
2 2

1 i 0

1
2  ln 2 (2z  3) dz 
1

2{0.6521451[ln 2 (2(0.3399810)  3)  ln 2 (2(0.3399810)  3)] 


0.3478548[ln 2 (2(0.8611363)  3)  ln 2 (2(0.8611363)  3)]}
1

2  ln (2z  3) dz  4.85606  4.85


2

1
Por tanto, queremos encontrar el punto x para el cuál la función f(x)
toma el valor 4.85:

f (x)  x  e x

Ello equivale a encontrar un cero de la siguiente función, g(x):


g(x)  x  e x  4.85
Tomando como punto de partida x0 = 1:

g(x 0 )  1.13172 g' (x)  1  e x

g(x 0 )
x1  x 0   1.30437  g(x1)  0.139737
g' (x0 )
g(x1 )
x2  x1   1.27455  g(x2 )  0.0016436
g' (x1 )
g(x2 ) 6
x3  x2   1.27419  g(x3 )  6.16436 10
g' (x 2 )

x4  x 3

x 1.274

Anda mungkin juga menyukai