Unidad 2 - ayudasingenieria 2 - Raices... · Paso 3: seleccionar aquel subintervalo en que f(x)...

Preview:

Citation preview

Unidad 2

Solución de Ecuaciones No Lineales

Raíces de ecuaciones 

Técnicas numéricas para encontrar:

• Raíces reales de ecuaciones algebraicas y trascendentes. Determinan sólo una raíz real. Métodos Cerrados y Métodos Abiertos

• Raíces reales y complejas de polinomios. Determinan todas las raíces. 

Problema del paracaidista

• Forma explícita: calcular v dadas g, m, c y t     

      Solución analítica

• Forma implícita: calcular c dadas g, m, v y t

Ecuación no lineal

            No tiene solución analítica !!!         Se resuelve numéricamente

v (t )=g m

c( 1−e

−cm

t )

f (c )=g m

c( 1−e

−cm

t ) −v=0

Métodos Cerrados

Métodos Cerrados: 1)Bisección 2)Falsa Posición La función cambia de signo en la vecindad de 

una raíz. Dos valores iniciales que “encierren” a la raíz.

Reducen  el  tamaño  del  intervalo  y  así convergen a la respuesta aproximada correcta.

Raíz de una EcuaciónDefinición: valor de x tal queEn los métodos cerrados se requieren dos valores iniciales: los extremos 

del intervalo xl y x

u (lower: inferior, upper: superior).

Generalmente si: f(x

l) y f(x

u) tienen signos opuestos: número impar de raíces

f(xl) y f(x

u) tienen el mismo signo: cero o un número par de raíces   

f (x )=0

Métodos Gráficos

Son útiles para: determinar los valores iniciales. visualizar propiedades de las funciones.

   Raíces múltiples                       Función discontinua

Raíz doble

Método de Bisección

[bisectar = dividir en dos segmentos iguales]

En general, si f(x) es real y continua en el  intervalo [xl  , x

u]  y  

f(xl)  y  f(x

u) tienen  signos  opuestos,  

es decir 

                       f(xl).f(x

u)<0      (1)  

entonces hay al menos una raíz entre 

xl  y x

u. 

Algoritmo del Método de Bisección

Paso 1: se elige  intervalo [xl  , x

u] donde haya cambio de signo de 

la función. Verificar con (1)

Paso 2: se aproxima la raíz 

como  el  punto  medio  del 

intervalo

                                       (2)

   fórmula de la bisección

x r=x l + x u

2 raíz verdadera

raíz aproximada

f (x )

x

f (x l)

f (xr )

f (xu)

x l xuxr xrv

Algoritmo del Método de Bisección

Paso 3: seleccionar aquel subintervalo en que f(x) cambie de signo

a) Si   f(xl).f(x

r)<0 ,

la raíz está en el 

subintervalo izquierdo

Hacer  xu  

        xr

y volver al Paso 2

Iteración actual

Iteración siguiente

Este subintervalo se descarta

raíz verdadera

raíz aproximada

f (x )

f (x l)

f (xr )

f (xu)

x l xu xxr

xrv

x l xu=xranterior

f (x l)⋅f (x r )<0

Algoritmo del Método de Bisección

 b) Si   f(xl).f(x

r)>0 ,

la raíz está en el 

subintervalo derecho

Hacer  xl          x

r

y volver al Paso 2

c) Si   f(xl).f(x

r)=0 ,

       la raíz es xr  ,

       termina el cálculo

Iteración actual

Iteración siguiente

Este subintervalo se descarta

f (x )

raíz aproximada

raíz verdadera

f (x l)

f (xr )

f (xu)

x l xu xxr xrv

x l=xranterior xu

f (x l)⋅f (x r )>0

Representación Gráfica del Método

Método de Bisección: Ejemplo 5.3

Encontrar la raíz de la función:

Elegimos el intervalo donde hay cambio de signo en la función, por ejemplo [12,16]:

Se cumple que   f(xl).f(x

u)<0     

f (x )=667.38

x( 1−e−0.146843 x )−40

Iteración xl

xu

f(xl) f(x

u)

0 12 16 6.06 ­2.26

Método de Bisección: Ejemplo 5.3

   

Método de Bisección: Ejemplo 5.3

Iteración xl xu f(xl) f(xu) xr f(xr) signo  f(xl) f(xr)

1 12 16 6.06 ­2.26 14 1.56 +

(cambio de signo en este intervalo)

Se hace:               xl=xr=14 Nuevo intervalo: [14 , 16]

Método de Bisección: Ejemplo 5.3

Iteración xl xu f(xl) f(xu) xr f(xr) signo  f(xl) f(xr)

2 14 16 1.56 ­2.26 15 ­0.42 ­

(cambio de signo en este intervalo)

Se hace:               xu=xr=15 Nuevo intervalo: [14 , 15]

Método de Bisección: Ejemplo 5.3

Iteración xl xu f(xl) f(xu) xr f(xr) signo  f(xl) f(xr)

3 14 15 1.56 ­0.42 14.5 0.55 +

(cambio de signo en este intervalo)

Se hace:              xl=xr=14.5 Nuevo intervalo: [14.5 , 15]

Ejemplo 5.3: Estimación del Error

Iteración xl xu xr a (%) t(%)

1 12 16 14 5.279

2 14 16 15 6.667 1.487

3 14 15 14.5 3.448 1.896

4 14.5 15 14.75 1.695 0.205

5 14.75 15 14.875 0.840 0.641

Valor 'verdadero' hasta 6 cifras:   x rverdadero

=14.7802

εa=|x rnuevo

−x ranterior

x rnuevo |⋅100 % εt=|x r

nuevo−x r

verdadero

x rverdadero |⋅100 %

Error relativo aproximado porcentual  Error relativo verdadero porcentual

Criterio de finalización de iteraciones:                                                                                         tolerancia 

εa <εs

(3) (4)

Método de Bisección: Curvas de Error

E t =|x rnuevo

−x rverd|⩽Δx /2

E a=|xrnuevo

−x rant|=Δx /2

La curva de  error  verdadero  siempre  está por debajo de la curva de error aproximado

Método de Bisección: Curvas de Error

     y      distantes

Iteración actual

x l xuxranteriorxr

v

x l xuxrnuevo

raíz verdadera cerca del centro del intervalo

|xrnuevo

−xrv|

|xrnuevo

−xranterior|

εa εt

     y      cercanos

Iteración anterior

Iteración actual

x l xuxranteriorxr

v

x l xuxrnuevo

raíz verdadera cerca del extremo del intervalo|xr

nuevo−xr

v|

|xrnuevo

−xranterior|

εa εt

Iteración anterior

εt=|x rnuevo

−xrverd

xrverd | εa=|x r

nuevo−xr

ant

x rnuevo |

Método de Bisección: Error Especificado

n=ln (Δ x 0 /E a ,d )

ln 2

Número de iteraciones para un error absoluto especificado

Sea  Ea,d

  el error  absoluto  deseado en  el cálculo y  x0 el  intervalo 

inicial de búsqueda. El número de iteraciones n que deben realizarse 

para determinar la raíz con ese error especificado es :

(5)

Método de Bisección: Pseudocódigo

    iniciar xl, xu                // Paso 1              iniciar iter=0, imax, es, xr = xudefinir funcion frepetir:   xv = xr                    // Para calcular ea    xr = (xl + xu)/2           // Paso 2   si xr != 0:       ea = abs((xr ­ xv)/xr)*100      iter = iter + 1           prueba = f(xl) * f(xr)     // Paso 3   si prueba < 0:      xu = xr   en caso contrario:      xl = xr   hasta que (ea<es  or  iter>=imax)mostrar xr

• Código en Octave: biseccion.m• Código en Python: biseccion.py• Planilla de cálculo: biseccion.ods

Método de la Falsa Posición

Bisección no es muy eficiente.Se prefiere el método de la falsa posición o regula falsi.

Se aproxima la raíz como la 

intersección  de la recta con 

el eje x

Método de la Falsa Posición: Cálculo de xr

Triángulos semejantes , ángulos iguales:

Despejando xr: 

f (x )

f (x l)

f (xr )

f (xu)

x l xu xxr xrv

tanα=f (x l)

x r−x l

=f (xu)

x r−x u

x r=x u−f (x u)(x l−x u)

f (x l )− f (x u)fórmula de la falsa posición (6)

Algoritmo del Método de la Falsa Posición

Paso 1: idéntico al Paso 1 del método de bisección.Paso 2: se aproxima la raíz con la fórmula de la             falsa posición (6).Paso 3: idéntico al Paso 3 a) o b) del método de bisección.

Además, se introducen: cambios para reducir evaluaciones de la función  (ver pseudocódigo Método de Regula Falsi).

 contadores para evitar estancamiento  (ver pseudocódigo Método de Regula Falsi Modificado).

Representación Gráfica del Método

Representación Gráfica del Método

f (x )

raíz verdadera

f (x l)

f (xr1)

f (xu)

x l xu xxr1xr

v xr2

punto estancado

f (x )

raíz verdadera

f (x l)

f (xr1)

f (xu)

x l xu xxr1xr

v xr2

punto estancado

   f(x) no tiene un punto de inflexión en [xl  , x

u]

a)   f(xl).f(x

r)<0    

Representación Gráfica del Método

f (x )

raíz verdadera

f (x l)

f (xr1)

f (xu)

x l xu xxr1 xr

vxr2

punto estancado

f (x )

raíz verdadera

f (x l)

f (xr1)

f (xu)

x l xux

xr1

xrv

xr2

punto estancado

   f(x) no tiene un punto de inflexión en [xl  , x

u]

b)   f(xl).f(x

r)>0    

Representación Gráfica del Métodof (x )

f (x l1)

f (xr1)

f (xu1)

x l1 xu

1 xx l2=xr

1

xrv

f (x l)⋅f (x r )>0

xu3=xr

2 xu2

f (xr2)

x l3

xr3

Los superíndices denotan el número de iteración

Iteración 1: 

Iteración 2: 

Iteración 3: 

f (x l)⋅f (x r )<0

f (x l)⋅f (x r )>0

f(x) tiene un punto de inflexión en [x

l  , x

u]

Caso General:

Método de la Falsa Posición: Pseudocódigo

    iniciar xl, xu                            // Paso 1           iniciar iter=0, imax, es, xr = xudefinir funcion ffl = f(xl), fu = f(xu)    //cambios para reducir evaluaciones de la funciónrepetir:   xv = xr                                // Para calcular ea    xr = xu ­ fu*(xl­xu)/(fl­fu)           // Paso 2    si xr != 0:       ea = abs((xr ­ xv)/xr)*100      iter = iter + 1     fr = f(xr)      prueba = fl * fr                       // Paso 3   si prueba < 0:      xu = xr      fu = fr   en caso contrario:      xl = xr      fl = fr  hasta que (ea<es  or  iter>=imax)mostrar xr

Método de la Falsa Posición: Ejemplo 5.5

Resolver, por el método de la Falsa Posición, con      g = 9.8, m = 68.1, t = 10:

f (c )=g m

c( 1−e

−cm

t ) −v=0

• Planilla de cálculo: regula_falsi.ods

• Código en Octave (opción 1): regula_falsi.m 

• Código en Octave (opción 2): regula_falsi2.m

• Código en Python: regula_falsi.py

Método de la Falsa Posición: Curva de Error

Método de la Falsa Posición Modificado

    Existen problemas si la función es casi constante: el avance hacia la raíz es lento, ya que uno de los  puntos se estanca si la función no tiene un punto de inflexión .

Modificación de la falsa posición: cuando la función se estanca, se divide por  dos el valor de la misma en el punto estancado.

Se detecta el estancamiento a través de contadores.

Método de la Falsa Posición Modificado

    f (x )

raíz verdadera

f (x l1)

f (x l2)

f (xu1)

x l1 xu

1 xxr1 xr

vxr2

punto estancado en las tresprimeras iteraciones

xr3

f (x l3)

f (xu2)

f ( xu2)

2

3º iteración:          Regula Falsi          Regula Falsi Modificada

 1º iteración

  2º iteración3º iteración

Método de la Falsa Posición Modificado: Pseudocódigo

    iniciar xl, xu                            // Paso 1              iniciar iter=0, imax, es, xr = xudefinir funcion ffl = f(xl), fu = f(xu)          //cambios para reducir evaluaciones de la funciónrepetir:   xv = xr                                   // Para calcular ea    xr = xu ­ fu*(xl­xu)/(fl­fu)           // Paso 2    si xr != 0:       ea = abs((xr ­ xv)/xr)*100      iter = iter + 1     fr = f(xr)      prueba = fl * fr                       // Paso 3   si prueba < 0:      xu = xr      fu = fr      iu = 0  ,  il = il + 1    // contadores para evitar estancamiento       si (il>=2): fl = fl/2   en caso contrario:      xl = xr      fl = fr        il = 0  ,  iu = iu + 1    // contadores para evitar estancamiento      si (iu>=2): fu = fu/2 hasta que (ea<es  or  iter>=imax)mostrar xr

Falsa Posición Modificado: Ejemplo 5.5

Resolver por el método de la Falsa Posición Modificado, con  g = 9.8, m = 68.1, t = 10:

f (c )=g m

c( 1−e

−cm

t ) −v=0

• Código en Python: ejemplo5_5_RFM.py  • Planilla de cálculo: ejemplo5_5_RFM.ods 

                                                

Falsa Posición Modificado: Ejemplo 5.6

Resolver, por el método de la Falsa Posición Modificado, con  x

l = 0 , x

u = 1.3:

f (x )=x 10−1=0

• Código en Python (regula falsi):ejemplo5_6_RF.py  • Código en Octave: regFalsiMod.m• Código en Python:regFalsiMod.py  • Planilla de cálculo:  regFalsiMod.ods

                                               Problemas 5.1 a 5.19, pag. 139

Métodos Abiertos 

• También emplean iteraciones sucesivas.• No requieren que el intervalo inicial encierre a la 

raíz.• En general, son más eficientes que los cerrados, 

aunque no siempre funcionan.• Se extienden para sistemas de ecuaciones no 

lineales.

Métodos Cerrados y Abiertos 

• Idea: reescribir la ecuación

                                  como

– Despejando x– Sumando x miembro a miembro

• Ejemplos:

Iteración de Punto Fijo 

f (x )=0

x=g (x )

x 2−2 x +3=0⇒x=

x 2+32

sin x=0⇒ x=sin x + x

• Esquema iterativo:                                   (7)  

• Error aproximado:                                          (8)

Iteración de Punto Fijo: Cálculo de xr 

x i+1=g (x i )

fórmula de iteración de punto fijo

εa=|x i +1−x i

x i +1|⋅100%

Iteración de Punto Fijo: Ejemplo 6.1 Hallar, mediante iteración de punto fijo, la raíz de:

f (x )=e−x−x

Se reescribe como: x i+1=e−x i

Valor inicial: x 0=0

x 1=e−x 0=e−0=1

x 2=e−x 1=e−1=0.367879...

1º iteración:

2º iteración:

• Planilla de cálculo: punto_fijo.ods• Código en Python: punto_fijo.py• Código en Octave: punto_fijo.m

Resolver  x  =  g(x)  equivale  a encontrar  la  intersección  de  las gráficas de las funciones:

Esta intersección se denomina punto fijo de la función g(x)

f 1(x )=x

f 2(x )=e−x

Iteración de Punto Fijo: Interpretación Geométrica 

Representación Gráfica del Método

CONVERGE

DIVERGE

COMPORTAMIENTOMONÓTONO

COMPORTAMIENTOOSCILATORIO

Ecuación iterativa:

Solución exacta:

Restando m. a m.:

Por TVM:

                                       con:

Condición de Convergenciax i+1=g (x i )

x r=g (x r )

x r−x i +1=g (x r )−g (x i)

g ' (ξ)=g (x r )−g (x i )

x r−x i

x i≤ξ≤x r

Como          es proporcional a        , el método eslinealmente convergente o divergente.

Reemplazando:                                              (9)    

Por lo tanto:                                    (10)            

Condición de Convergencia

E t , i +1=g ' (ξ )E t , i

|g ' ( ξ)|<1

∀ξ∈[x i , x r ]

Esto significa que se asegura la convergencia si                  en todo el intervalo             . |g ' (x )|<1 [x 0 ,x r ]

E t ,i +1 E t ,i

g 1(x )

x 0

Verificar la condición de convergencia de las funciones de iteración de punto fijo de:

CONVERGE

Condición de Convergencia: Ejemplo

x 2−2 x−2=0 , x 0=2

g 1(x )=√ 2 x +2

g ' 1(x )=1

√ 2 x +2

|g ' 1(2)|<1

Función de iteración g1(x):

DIVERGE  de la raíz cercana a x

0=2

Condición de Convergencia: Ejemplo

g 2(x )=x 2

−22g ' 2(x )=x

|g ' 2(2)|>1

Otra función de iteración g2(x):

CONVERGE a otra raíz !! 

Cuidado:

g 2 (x )

x 0

Iteración de Punto Fijo: Pseudocódigo

    iniciar xv, iter=0, imax, es definir funcion grepetir:   xr = g(xv)   si xr != 0:       ea = abs((xr ­ xv)/xr)*100      iter = iter + 1           xv = xr  hasta que (ea<es  or  iter>=imax)mostrar xr

Igualando la pendiente a f '(x):

f ' (x i)=f (x i)−0

x i−x i +1

Despejando (...):

x i+1=x i−f (x i )

f ' (x i )

Método de Newton­Raphson

(11)fórmula de Newton­Raphson

Encontrar, por el método de Newton­Raphson, la 

raíz de: f (x )=e−x−x

f ' (x )=−e−x−1

f (x 0)=e−0−0=1

f ' (x 0)=−e−0−1=−2

x 1=x 0−f (x 0)

f ' (x 0)=0−

1−2

=0.5 ...

Método de Newton­Raphson: Ejemplo 6.3

La derivada de la función es :

Valor inicial: x 0=0

1º iteración:

Método de Newton­Raphson: Ejemplo 6.3

• Planilla de cálculo: newton_raphson.ods• Código en Python: newton_raphson.py• Código en Octave: newton_raphson.m

La ecuación iterativa de NR:

Es  una  ecuación  de iteración de punto fijo:

Siendo:

Condición de Convergencia

x i+1=g (x i)

x i +1=x i−f (x i)

f ' (x i)

g (x i )=x i−f (x i )

f ' (x i )

g ' (x i )=f (x i ) f ' ' (x i)

[ f ' (x i)]2Si existe: ∀ x i∈[x 0 , x r ]

Condición de Convergencia

El Teorema de Newton­Raphson demuestra que se asegura la convergencia si                  en todo el intervalo             . 

|g ' (x )|<1[x 0 ,x r ]

Como           es proporcional a         , el método escuadráticamente convergente o divergente.

Análisis de Error ­ Newton Raphson

Partiendo de la serie de Taylor se puede demostrar que: 

E t ,i +1 E t ,i2

E t , i +1=−f ' ' (x r )

2 f ' (x r )E t , i

2

Esto  significa  que  el número de cifras  correctas aproximadamente  se  duplica  en  cada   iteración cuando  el  método  converge.

(12)

Desventajas del método de Newton­Raphson

Desventajas del método de Newton­Raphson

Newton­Raphson: Pseudocódigo

    iniciar xv, iter=0, imax, es definir funcion fdefinir funcion dfrepetir:   xr = xv ­ f(xv)/df(xv)      si xr != 0:       ea = abs((xr ­ xv)/xr)*100      iter = iter + 1           xv = xr  hasta que (ea<es  or  iter>=imax)mostrar xr

x i−1x i

xx i+1x r

f (x )línea 

secante

Se aproxima la derivada f '(x) de Newton­Raphson con una diferencia finita  hacia  atrás:

Método de la Secante

f ' (x i)=f (x i−1)− f (x i)

x i−1−x i

Sustituyendo en la fórmula de Newton­Raphson y despejando xi+1:

Si bien necesita 2 puntos, no se clasifica como un método cerrado.

Método de la Secante

x i+1=x i−f (x i ) ( x i−1−x i )

f (x i−1)− f (x i )(13)

fórmula de la secante

Encontrar, por el método de la secante, la raíz de:f (x )=e−x

−x

Método de la Secante: Ejemplo 6.6

La raíz verdadera es:

Valores iniciales:1º iteración:

x=0.56714329 ...

x−1=0.0 , x 0=1.0

x−1=0 , f (x−1)=1.00000

x 0=1 , f (x 0)=−0.63212

x 1=1−−0.63212 (0−1)

1−(−0.63212)=0.61270 , ε t=8.0 %

Método de la Secante: Ejemplo 6.6

• Planilla de cálculo: secante.ods• Código en Python: secante.py• Código en Octave: secante.m

Como            es proporcional a         ,  el método tiene convergencia o divergencia superlineal, ya que                              .

Análisis de Error ­ Secante

Se puede demostrar que: 

E t ,i +1 E t ,i1.618

E t , i +1=| f ' ' (x r )

2 f ' (x r )|0.618

E t , i1.618 (14)

Lo que significa que:  E t , i +1=cte E t , i1.618

1< p=1.618 <2

Falsa Posición ­ Secante: Diferencias

Método de la Secante: Pseudocódigo

    iniciar x0, x1, iter=0, imax, es definir funcion frepetir:   x2 = x1 ­ (f(x1)*(x0­x1))/(f(x0)­f(x1))      si x2 != 0:       ea = abs((x2 ­ x1)/x2)*100      iter = iter + 1           x0 = x1; x1 = x2  hasta que (ea<es  or  iter>=imax)mostrar x2

Considera un cambio fraccionario para estimar la derivada:

f ' (x i)=f (x i+δx i)− f (x i)

δx i

Reemplazando en la ecuación de N­R:

x i+1=x i−δ x i f (x i )

f (x i +δ x i )− f (x i )

Método de la Secante Modificado

fórmula de la secante modificada

(15)

No se pueden usar métodos cerradospara raíces múltiples pares.

Los métodos de Newton­Raphson y de la secante tienen  convergencia lineal cuando hay raíces múltiples. 

Raíces Múltiples

Se  puede  demostrar  que  u(x) tiene las mismas raíces que f(x):

u (x )=f (x )

f ' (x )

Planteando N­R para u(x): x i +1=x i−u (x )

u ' (x )Desarrollando (...),

x i +1=x i−f (x i) f ' (x i)

[ f ' (x i ) ]2− f (x i ) f ' ' (x i)

Método de Newton­Raphson Modificado

fórmula de Newton­Raphson modificada

(16)

Tiene convergencia  cuadrática para raíces múltiples.

Newton­Raphson Modificado: Pseudocódigo

iniciar xv, iter=0, imax, es definir funcion fdefinir funcion dfdefinir funcion d2frepetir:   xr = xv ­ (f(xv)*df(xv)) / (df(xv)**2­f(xv)*d2f(xvt))     si xr != 0:       ea = abs((xr ­ xv)/xr)*100      iter = iter + 1           xv = xr  hasta que (ea<es  or  iter>=imax)mostrar xr

Newton­Raphson Modificado: Ejemplo 6.9

Calcular, por los métodos de Newton­Raphson estándar y modificado, la raíz múltiple de:

f (x )=x 3−5 x 2

+7 x −3

• Código en Python: newton_ej6_9.py  • Código en Octave: newton_ej6_9.m• Código en Python: newtonRaphsonMod.py  • Código en Octave: newtonRaphsonMod.m

                                               Problemas 6.1 a 6.25, pag. 167

Valor inicial: x 0=0

Raíces de Polinomios 

• Deflación polinomial

• Método de Müller

• Permite encontrar sucesivamente las raíces de un polinomio P(x).

• Una  vez  encontrada  una  raíz  x1,  para  no 

volver  a  la  misma  raíz  se  divide  a  P(x) por  (x  –  x

1).  El  nuevo  polinomio  ya  no 

posee la raíz x1.

Deflación Polinomial 

Encontrar las raíces de:P (x )=x 3−2 x 2

−x +2

Aplicando  el método  de Newton­Raphson  con  x0 = 0:

Primera raíz:  2.00000 ( 2 iteraciones)

Nuevo polinomio: 

g (x )=x 2−1

Deflación Polinomial: Ejemplo 

g (x )=P (x )

x−2

Nuevo polinomio:

Tercera raíz:  ­1.00000 (1 iteración)

Para realizar P(x)/(x­2), se puede utilizar Octave: >> P=[1 ­2 ­1 2];>> p1=[1 ­2];>> [g,r]=deconv(P,p1)g =   1   0  ­1r =   0   0   0   0

P (x )=1 x 3−2 x 2−1 x +2

p 1(x )=1 x −2

resto del cociente

Deflación Polinomial: Ejemplo 

Aplicando  el método de  N­R   con  x0 = 1:

h (x )=g (x )

x−1=x +1

Segunda raíz:   1.00000 ( 1 iteración)

Deflación Polinomial: Ejemplo 

Método de la secante:

2 puntos   función lineal→

Método de Müller:

3 puntos   función cuadrática→

Método de Müller 

Método de Müller 

Se escribe la función cuadrática de la forma:f (x )=a (x−x 2)

2+b (x−x 2)+c

Evaluando en los puntos x0, x1 y x2 (…) se tiene que:  c = f (x 2)

f (x 0)− f (x 2)=a (x 0−x 2)2+b (x 0−x 2)

f (x 1)− f (x 2)=a (x 1−x 2)2+b (x 1−x 2)

Método de Müller 

Reemplazando,

Haciendo: h0=x 1−x 0

Reemplazando en las anteriores y resolviendo para a y b (...), se tiene: 

a=δ1−δ0

h1+h 0

h1=x 2−x 1

δ0=f (x 1)− f (x 0)

x 1−x 0

δ1=f (x 2)− f (x 1)

x 2−x 1

b=a h1+δ1 c = f (x 2)

Método de Müller 

Para encontrar la raíz, x 3−x 2=−2 c

b±√b 2−4 a c

Se elige el signo central de modo que coincida con el signo de b.Se descarta un valor (x0, x1 ó x2):

– Raíces reales: el más alejado de x3

– Raíces complejas: (x0, x1, x2) = (x1, x2, x3)

Método de Müller 

x 3=x 2−2 c

b±√b 2−4 a c

(17)

fórmula de Müller

Encontrar una raíz de la función:

f (x )=x 3−13 x−12

Partiendo de (x0, x1, x2) = (4.5, 5.5, 5.0)

f (4.5)=20.625 , f (5.5)=82,875 , f (5.0)=48

h 0=5.5−4.5=1 h1=5.0−5.5=−0.5

δ0=f (x 1)− f ( x 0)

x 1−x 0

=62.25 δ1=f (x 2)− f (x 1)

x 2−x 1

=69.75

Método de Müller: Ejemplo 7.2 

a=...=15 , b=62.25 , c =48

√b 2−4 a c =...=31.54461

x 3=x 2+−2 c

b+√ b 2−4 a c

=...=3.976487

εa=| 3.976487−53.976487 |=25.74 %

Planilla de cálculo: muller.ods

Método de Müller: Ejemplo 7.2 

iniciar x0, x1, x2, iter=0, imax, es definir funcion ff0 = f(x0) ; f1 = f(x1) ; f2 = f(x2)

repetir:  h0 = x1 – x0            ; h1 = x2 ­ x1delta0 = (f1­f0) / h0   ; delta1 = (f2­f1) / h1 

a = (delta1­delta0) / (h1+h0)b = a*h1 + delta1    c = f2   

D = sqrt(b*b­4*a*c)     E = b + D       si abs(b­D) > abs(E):  E = b­D  

x3 = x2 – 2*c / E       f3 = f(x3) si x3 != 0: 

ea = abs((x3 ­ x2)/x3)*100   iter = iter + 1        x0 = x1; x1 = x2; x2 = x3f0 = f1; f1 = f2; f2 = f3 

hasta que (ea<es  or  iter>=imax)mostrar x3

Método de Müller: Pseudocódigo 

Encontrar las raíces de: f (x )=x 3−x−1

Método de Müller: Ejemplo  

f(x)  tiene  una  raíz real  y  dos  raíces complejas.

Método de Müller: Ejemplo  

• Planilla de cálculo: muller2.ods• Código en Python: muller2.py• Código en Octave: muller2.mPartiendo de: 

(x0, x1, x2) = (0, 1, 2), se encuentra 

(x0, x1, x2) = (0, 4, 7), se encuentra 

 

(x0, x1, x2) = (0, ­4, ­7), se encuentra 

x r 1=1.3247

x r 2=−0.66236+0.56228 i

x r 3=−0.66236−0.56228 i

• Octave: Raíz de una función: fzero(funcion, valorInicial) >> f = inline('exp(­x)­x','x');

 >> xr = fzero(f,0.0)

 xr =  0.56714

Raíces de un polinomio: roots(vectorCoefPol) >> P = [1 0 ­1 ­1];     % x^3­x­1

 >> r = roots(P)

 r =

    1.32472 + 0.00000i

   ­0.66236 + 0.56228i

   ­0.66236 ­ 0.56228i

Herramientas disponibles  

• Planilla de cálculo: búsqueda de valor destino,  destino.ods

• Python: librerías Numpy y Scipy

Raíz de una función: fsolve(funcion, valorInicial)>>> from scipy.optimize import fsolve

>>> def f(x): return exp(­x)­x

... 

>>> xr = fsolve(f,0.0)

>>> xr

0.56714329040978384

Herramientas disponibles  

Raíces de un polinomio:  

    roots(poly1d(vectorCoefPol))

 >>> from numpy import poly1d, roots

 >>> p=poly1d([1,0,­1,­1])     # x^3­x­1

 >>> p

 poly1d([ 1,  0, ­1, ­1])

 >>> r=roots(p)

 >>> r

 array([ 1.32471796+0.j, ­0.66235898+0.56227951j,

       ­0.66235898­0.56227951j])

 >>> xr2=r[1]          # se extrae la segunda raiz de r

 >>> xr2

 (­0.66235897862237292+0.56227951206230109j)

Herramientas disponibles  

Problemas 7.1 a 7.25, pag. 197

Estudio de casos (Cap. 8)

Ley de los gases no ideales

• Ley de los gases ideales

pV=n RT

• Ecuación de Van der Waals

p a

v2 v−b=RT , v=Vn

Volumen molar

Ley de los gases no ideales

• Calcular el volumen molar para el dióxido de carbono y el oxígeno

• Solucion en Octave: caso_81.m

R=0,082054l atmmol K

a b

CO2

3,592 0,04267

O2

1,360 0,03183

Flujo en canales abiertos

• Ecuación de continuidad Q=U A=U B H

Flujo en canales abiertos

• Ecuación de Manning U=

1nR2 / 3 S1 / 2

R=AP

Radio hidráulico

P=B2H Perímetro mojado

• Reemplazando (...),

Q=S1 / 2

nB H 5 / 3

B2H 2 / 3

Flujo en canales abiertos

• Datos*: Q = 4 m³/s, B = 2 m, S = 0.001, n = 0.015

• Incógnita = H• Resolver

• Resuelto por iteración de punto fijo en canales.ods

f H =S1 / 2

nBH 5 / 3

B2H 2 / 3−Q=0

Problemas 8.1 a 8.46, pag. 216

Recommended