Raíces de ecuaciones - UNLinfofich.unl.edu.ar/upload/e6ece579085a4976a8728c48dd78f... · 2019. 5....

26
Análisis Numérico y Computación: (Carreras IRH – IA) 1 Raíces de ecuaciones El problema que trataremos es el de resolver la ecuación f(x) = 0. Son muy pocas las ecuaciones en que pueden determinarse las raíces por medios analíticos sencillos. Entre ellas podemos citar los polinomios de 1º y 2º grado, el de 3º grado incompleto, el de 4º grado para el caso en que las raíces tomadas de a pares tengan valor absoluto. Esto nos lleva a la búsqueda de otros métodos, por lo general, iterativos. Dado entonces un valor aproximado a la raíz, se refina hasta encontrar un valor suficientemente próximo. Hablaremos de funciones continuas y derivables en los intervalos donde trabajamos. El método se basa en el conocimiento de la existencia de la raíz f(x) en el intervalo. ¿Cómo podemos saber esto?. Aplicando, por ejemplo, el teorema de Bolzano que asegura que una función continua en [a, b], si cambia de signo en los extremos; es decir el signo de f(a)f(b) ( o sea f(a)*f(b)<0 significa que hay una o un número impar de raíces en el intervalo [a,b] Para resolver el problema realizamos dos pasos: 1) Hallamos un valor aproximado a la raíz. 2) Refinamos la solución hasta encontrar el resultado con la precisión exigida. Para hallar la raíz aproximada, se puede graficar la función o valuarla barriendo al intervalo donde se supone que existe la raíz (suposición a menudo fundada en el sentido físico del problema o en el análisis de la función), hasta detectar un cambio de signo en la función. Método del medio intervalo (Bisección o Dicotómico) Queremos resolver f(x) = 0 con un error ε determinado. Sea I = [Xi, Xd] el intervalo donde sabemos que existe la raíz. Sin pérdida de generalidad podemos suponer f(Xi) * f(Xd) . < 0. Gráficamente:

Transcript of Raíces de ecuaciones - UNLinfofich.unl.edu.ar/upload/e6ece579085a4976a8728c48dd78f... · 2019. 5....

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    1

    Raíces de ecuaciones

    El problema que trataremos es el de resolver la ecuación f(x) = 0.

    Son muy pocas las ecuaciones en que pueden determinarse las raíces por medios

    analíticos sencillos. Entre ellas podemos citar los polinomios de 1º y 2º grado, el de 3º

    grado incompleto, el de 4º grado para el caso en que las raíces tomadas de a pares

    tengan valor absoluto.

    Esto nos lleva a la búsqueda de otros métodos, por lo general, iterativos. Dado

    entonces un valor aproximado a la raíz, se refina hasta encontrar un valor

    suficientemente próximo.

    Hablaremos de funciones continuas y derivables en los intervalos donde

    trabajamos.

    El método se basa en el conocimiento de la existencia de la raíz f(x) en el

    intervalo. ¿Cómo podemos saber esto?. Aplicando, por ejemplo, el teorema de Bolzano

    que asegura que una función continua en [a, b], si cambia de signo en los extremos; es

    decir el signo de f(a)≠f(b) ( o sea f(a)*f(b)

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    2

    Dividimos al intervalo en 2 partes, el punto medio será XM1 = (Xi + Xd)/2

    Tenemos ahora dos intervalos; cómo asegurábamos que hay una raíz, ésta se

    encuentra en uno de los dos.

    Si f(Xi)*f(XM1) < 0, por Bolzano sabemos que se halla en (Xi, XM1), de no ser

    así, (como en nuestro ejemplo), hacemos Xi = XM1 y la situación es igual que al

    comienzo. Trabajamos en este nuevo intervalo (Xi, Xd) y reiteramos el procedimiento

    hasta llegar a un intervalo de longitud ≤ 2 ε. Si Xr denota la raíz, al punto medio de este intervalo será Xm = Xr ± ε que es lo que buscábamos.

    Notemos que en cada caso vamos cercando la raíz independientemente del valor

    de la función y que en cada paso valuamos a f (X) una sola vez.

    El inconveniente de este método es que su convergencia es muy lenta, es decir,

    puede exigir muchas iteraciones. El número de iteraciones podemos calcularlo así:

    Luego del 1er. paso la longitud del intervalo es Xd -Xi 2

    Xd - Xi 2 luego del 2º paso la longitud del intervalo es ---------- = Xd - Xi 2 22

    luego del n-ésimo paso la longitud del intervalo es Xd - Xi 2n

    de manera que si n son los pasos que debemos dar para llegar a un intervalo de longitud 2 εεεε resulta

    Xd - Xi = 2 ε . . . 2n

    2n = Xd - Xi . . .

    2 ε

    aplicando logaritmos podemos despejar n

    n = Log ( (Xd –Xd) / 2 εεεε ) Log(2)

    Lo que indica que la cantidad de iteraciones será menor si se parte de un intervalo pequeño Xi, Xd donde se halla raíz y aumenta si exigimos una gran aproximación o sea un error εεεε muy pequeño.

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    3

    Programación del método dicotómico con MATLAB. Recordemos los pasos para el cálculo de raíces de ecuaciones no lineales.

    1) Acotar la raíz buscada, graficando la función en el intervalo de interés. 2) Elegir el tipo de método mas apropiado 3) Programar el método o usar una de las funciones pre-hechas para ello. Se define una función para la ecuación f(x)=0 a la cual queremos encontrar la raíz. La función utilizada en este ejemplo es: y=a *x

    b + c * (x+d)

    e + f con a=0.125 b=4.85 c=-1 d=0.21 e=-0.95 y f=0.45

    funcion_1 Escribimos el archivo funcion_1.m

    En esta u otras funciones trataremos de escribirlas usando el operador . para que puedan ser usada tanto con un valor de x o también usarlas con un vector de valores de x (para graficarlas).

    Listado de la función funcion_1.m function y = funcion_1(x) a=0.125 ; b=4.85 ; c=-1.00 ; d=0.21 ; e=-0.95 ; f=0.45 ; y=a.*(x.^b) + c.*(x+d).^e + f ; return Si ejecutamos los comandos: >> x= 0 :0.1 : 2 (genera un vector de x de 0 a 2 con dx=1) >> y=funcion_1(x) (calcula un vector y=f(x)) >> plot(x,y) (realiza la gráfica) >> grid on

    Se observa que entre 0 y 2 hay una raíz esto se comprueba con los comandos: >> funcion_1(0) ans = -3.9544 >> funcion_1(2) ans = 3.5842 METODO DICOTOMICO o de BISECCION dicoto_1 Programa para el método dicotómico terminado, en el se observan: La definición de la tolerancia (epsilon). El uso de un ciclo while mientras el error (xd-xi) sea superior a epsilon El cálculo del x medio (xm) de ym=f(xm) y la forma de redefinir xi o xd según el signo de yi*ym Finalmente se define el xr como la mitad del último intervalo. Listado del programa dicoto_1.m . Se ejecuta con el comando : dicoto_1 % Programa para hallar la raiz de una ecuacion por el metodo dicotomico o biseccion. Xraiz=1.181 epsilon=0.01 ; xi=0 ; yi=funcion_1(xi) ; xd=2 ; yd=funcion_1(xd) ; error=(xd-xi) ; while error>epsilon xm=(xi+xd)/2 ; ym=funcion_1(xm) ; if yi*ym>0 xi=xm ; else xd=xm ; end error=xd-xi ; end xr=(xi+xd)/2 ; sprintf('El valor de la raiz es : %5.3f y f(x): %5.3f',xr,funcion_1(xr))

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    4

    dicoto_2g.m Este programa es una demostración gráfica paso a paso como se van realizando las aproximaciones a la raíz usando el método dicotómico. Se deja para tarea del alumno revisar mediante el help de MATLAB los comandos y funciones usadas. Listado del programa dicoto_2g.m % Programa para hallar la raiz de una ecuacion por el método dicotomico o biseccion. % Se van mostrando los sucesivos valores de ym clf hold on xplot=[0:0.005:2] ; % vector de valores de x para dibujar la función yplot=funcion_1(xplot) ; % vector de valores de y para dibujar la función plot(xplot,yplot) plot(xplot,yplot*.0) % traza el eje x con todos los valores de y en 0 axis([-0.1,2.1,-4,5]) epsilon=0.05 ; xi=0 ; yi=funcion_1(xi) ; xd=2 ; yd=funcion_1(xd) ; plot([xi,xi] , [0,yi]) plot([xd,xd] , [0,yd]) error=(xd-xi) ; iter=0 ; % contador de iteraciones while error>epsilon iter=iter+1 ; xm=(xi+xd)/2 ; ym=funcion_1(xm); ymplot=1.5*sign(ym); pause plot([xm,xm],[0,ymplot]) itertexto=int2str(iter) ; % esta sentencia convierte en el texto itertexto el valor numérico iter text(xm,ymplot,itertexto) % con text se ubica el texto itertexto (1 2 3 ) en el valor xm par indicar el Nº de iteracion if yi*ym>0 xi=xm ; else xd=xm ; end error=xd-xi ; end xr=(xi+xd)/2 ; sprintf('El valor de la raiz es: %5.3f y f(x): %5.3f Iteraciones :%3.0f',xr,funcion_1(xr),iter) hold off

    Se recomienda al ejecutarlo poner en primer plano la ventana del gráfico, para ir viendo los sucesivos pasos.

    Resumen método dicotómico:

    Graficar funcion_1 entre 0 y 2 x=0:0.01:2 ; y=funcion_1(x) plot (x,y)

    Ejecutar funcion_1(x) con x=0 x=1 y x=2 funcion_1(0) funcion_1(2)

    Ejecutar dicoto_2g

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    5

    Método de la falsa posición (Regula falsi) Es una variante del método dicotómico: En vez de tomar un punto medio para x se toma el valor de x que resulta del corte de la recta trazada ente (xi,yi) y (xd,yd) con el eje x.

    De la figura se deduce que la ecuación de la recta está dada por:

    ym = (yd-yi) (xm – xi) + yi (xd-xi) como ym debe valer 0 se despeja: xm = xi - (xd-xi) . yi (yd-yi) La convergencia se acelera pues la posición de xm es ‘proporcional’ a los valores de yi y de yd.

    Ejemplo : Acotar el valor xm con la regla de la falsa posición

    Dada la función: y = a * x2 + b* x + c donde:

    a b c xo dx

    0.111 0.333 -2.000 0.000 0.500

    x y

    0.00 -2.00

    0.50 -1.81

    1.00 -1.56

    1.50 -1.25

    2.00 -0.89

    2.50 -0.47

    3.00 0.00

    3.50 0.53

    4.00 1.11

    4.50 1.75

    5.00 2.44

    5.50 3.19

    6.00 3.99

    Entonces según el método de la falsa posición se calcula el valor de xm.

    xm = xi - (xd - xi ) * yi xm = 0 - ( 6 - 0 )/(4 - -2) * 2 = 2

    (yd - yi )

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    6

    Método General

    Veamos otros métodos para resolver f(x) = 0.

    La idea es escribir esta ecuación en otra forma equivalente.

    Elegimos una función F(x) tal que : f(x) = x - F(x)

    por lo tanto, buscar las raíces de f (x) equivale a resolver : x = F(x)

    es decir, a buscar los puntos fijos de F(x).

    Esto sugiere el método iterativo que queremos definir : xn+1 = F(xn)

    Hay que partir de una aproximación inicial xo que deba estar en las vecindades

    de la solución que buscamos. En general, la solución de una ecuación no lineal no es

    única por lo tanto si planteamos un método iterativo que queremos que converja a una

    raíz determinada, debe cumplir ciertos requisitos, pues podría suceder que el método

    converja pero a una raíz distinta de la que buscamos. Si conocemos el significado físico

    del problema, estaremos en condiciones de indicar una buena aproximación inicial.

    Si es necesario podemos recurrir a un procedimiento de tanteo.

    Dado el valor inicial xo, tomamos x1= F( xo) y así sucesivamente.

    Geométricamente, buscar un punto fijo de F es buscar la intersección de esta

    curva con la recta y = x Gráficamente:

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    7

    Analicemos la convergencia del método general. Llamamos con Xr a la raíz de f(x)=0

    Xr = F(Xr) por la secuencia de los pasos de iteración:

    Xk+1 = F(Xk) y Xk = F(Xk-1) y Xk-1 = F(X k-2)

    Restando miembro a miembro: Xr - Xk+1 = F(Xr) - F(Xk) y Xr – Xk = F(Xr) – F(X k-1) (1)

    Por el Teorema del Valor Medio (TVM) la derivada en un punto intermedio F '(ξ) vale aproximadamente:

    F ' (ξ) = F(Xr) - F(Xk) o sea que F(Xr) - F(Xk) = (Xr - Xk) . F ' (ξ k) Xr - Xk Xr – Xk+1 = (Xr - Xk) . F ' (ξ k)

    Reemplazando por (1) a (Xr – Xk) por F(Xr) – F(Xk-1)

    Xr – Xk+1 = (F(Xr) - F(Xk-1)) . F'(ξ)

    Aplicando nuevamente el T.V.M. F(Xr) - F(Xk-1) = (Xr - Xk-1) . F ’(ξk-1)

    Entonces : Xr – Xk+1 = (Xr - Xk-1) . F '(ξξξξk) . F '(ξξξξk-1)

    y así sucesivamente hasta llegar a: Xr – Xk+1 = (Xr – X0) . F '(ξk-1) . F '(ξk-1) . F '(ξk-2) …. F '(ξ0) Suponiendo que la derivada F' tiene un valor casi constante en el intervalo:

    Se puede establecer que : Xr – Xk+1 = (Xr – X0) .F(Xr) k

    Como el miembro de la derecha debe tender a cero, lo mismo debe ocurrir con el de la izquierda :

    como (Xr-Xo) tiene un valor finito entonces necesariamente F' (Xr) < 1 para que F '(Xr) que está elevado a un número grande k de iteraciones tienda a 0.

    De esta manera el método converge si |F '(X)| < 1 y Si |||| F' (X) |||| > 1 , el proceso diverge

    Si para algunos valores Xi, | F' (Xi) | < 1 y para otros Xj | F' (Xj) | > 1 el método puede diverger o no.

    Para un problema dado, la elección de F(X) no es única y hay algunas más ventajosas que otras.

    Veamos un ejemplo: f(X) = X3 - X - 1 = 0

    Buscamos la raíz en el intervalo [1,2] y sabemos que está próxima a 1. 3. Esta ecuación puede ser escrita de

    varias maneras:

    1º) X = X3 - 1 En este caso F1 (X) = X3 - 1

    2º) X = 1 F2 (X) = 1 .

    X2 - 1 X2 - 1

    3º) X = (X + 1) 1/3 F3 (X) = (X + 1)1/3

    F'1 (X) = 3 X2 ∴ 2 ≤ F'1 (X) ≤ 5 ∴ | F'1 (X) | > 1

    . 2 X

    F'2 (X) = ---------------- ∴ | F'2 (1 . 3) | ≈ 29 (X2-1)2

    F'3 (X) = 1/3 ( X + 1) -2/3 ∴ | F'3 (1,3) | < 1

    Entonces en estas tres funciones, únicamente si elegimos F(X) = F3(X) podemos asegurar la

    convergencia.

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    8

    Gráficamente los casos de convergencia y no convergencia se aprecian en los siguientes gráficos:

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    9

    Programas del Método General

    Despeje de F(x) con convergencia

    c --------------------------------------------------------------------------

    c Ejemplo de convergencia del método general

    c La ecuación es f(x)= x3 - x - 1.00

    c Se despeja a x = F(x) o sea x = (x + 1.00) 1/3

    c La derivada de F(x) es F'(x) = 1./3. (x + 1 ) -2/3

    c cuyo valor cerca de la raíz (1.32) es menor a 1

    c --------------------------------------------------------------------------

    x=1.

    epsilon=1

    print * ,' RESULTADOS DEL PROGRAMA (CON CONVERGENCIA) '

    do while (epsilon.GT.0.001)

    xn= (x+1)**(1./3.)

    print *, x,xn

    epsilon=abs(x-xn)

    x=xn

    enddo

    end

    RESULTADOS DEL PROGRAMA (CON CONVERGENCIA)

    1.0 1.25992107

    1.25992107 1.31229389

    1.31229389 1.32235384

    1.32235384 1.32426882

    1.32426882 1.32463264

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    10

    Despeje de F(x) sin convergencia

    c --------------------------------------------------------------------------

    c Ejemplo de no convergencia del método general

    c La ecuación es f(x)= x 3 - x - 1.00

    c Se despeja a x = F(x) o sea x = x 3 - 1.00

    c La derivada de F(x) es F'(x) = 3 * x 2

    c cuyo valor cerca de la raíz (1.32) es mayor a 1

    c --------------------------------------------------------------------------

    x=1.

    epsilon=1

    print * ,' RESULTADOS DEL PROGRAMA (NO CONVERGENCIA) '

    do while (epsilon.GT.0.001)

    xn= x**3 - 1.00

    print *, x,xn

    epsilon=abs(x-xn)

    x=xn

    enddo

    end

    RESULTADOS DEL PROGRAMA (NO CONVERGENCIA)

    1. 0.

    0. -1.

    -1. -2.

    -2. -9.

    -9. -730.

    -730. -389016992.

    -389016992. -5.88715847E+025

    -5.8871587E+025 -1.#INF

    -1.#INF -1.#INF

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    11

    Metodo General para el cálculo de raíces de ecuacionesCaso convergente

    f(x) = x 3

    - x - 1 = 0 se despeja x = ( x + 1 ) 1/3

    o sea F(x) = ( x + 1 ) 1/3

    x F(x) y=x Xn F(x) o Xn

    1.000 1.260 1.000 1.200 1.301

    1.020 1.264 1.020 1.301 1.320

    1.040 1.268 1.040 1.320 1.324

    1.060 1.272 1.060 1.324 1.325

    1.080 1.277 1.080 1.325 1.325

    1.100 1.281 1.100 1.325 1.325

    1.150 1.291 1.150

    1.140 1.289 1.140

    1.160 1.293 1.160

    1.180 1.297 1.180

    1.200 1.301 1.200

    1.240 1.308 1.240

    1.290 1.318 1.290

    1.300 1.320 1.300

    1.315 1.323 1.315

    1.320 1.324 1.320

    1.325 1.325 1.325

    1.330 1.326 1.330

    1.335 1.327 1.335

    1.340 1.328 1.340

    1.350 1.330 1.350

    1.400 1.339 1.400

    1.440 1.346 1.440

    1.460 1.350 1.460

    1.480 1.354 1.480

    1.500 1.357 1.500

    Método Raíz General (convergente)

    1.000

    1.050

    1.100

    1.150

    1.200

    1.250

    1.300

    1.350

    1.400

    1.450

    1.500

    1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50

    F(x)

    y=x

    raíz

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    12

    Método General para el cálculo de raíces de ecuaciones

    Cálculo de la raíz de la ecuación : x3 - x - 1

    Forma diverge

    Para lograr la expresión x = F(x) se pasa -x al primer miembro x = x3 - 1 o F(x) = x3 - 1

    Se busca lograr la coincidencia entre x = F(x) iterando con un valor inicial de x.

    Tabulado de la función y su derivada partiendo de x0 con un incremento de Dx.

    1er. Paso definimos los coeficientes a b c ... xo y Dx

    2do. Paso definimos las columnas

    x f(x) F(x) y=x y el algoritmo x = F(x) en las columnas E y F

    3er. Paso graficamos y=F(x) y y=x

    4to. Paso elegimos Xo = 1.5

    Usamos la columna E para la variación de X

    Usamos la columna F para F(x) o sea el Xn

    La raíz está entre 1.3 y 1.4. Comenzamos con una aproximación Xo de 1.2

    Graficamos y=x y y=F(x)

    a b c d xo Dx

    1.00 0.00 -1.00 -1.00 0.00 0.10

    x f(x) F(x) y=x Xn F(x) o Xn

    0.00 -1.00 -1.00 0.00 1.20 0.73

    0.10 -1.10 -1.00 0.10 0.73 -0.61

    0.20 -1.19 -0.99 0.20 -0.61 -1.23

    0.30 -1.27 -0.97 0.30 -1.23 -2.87

    0.40 -1.34 -0.94 0.40 -2.87 -24.60

    0.50 -1.38 -0.88 0.50 -24.60 1814.74

    0.60 -1.38 -0.78 0.60 1814.74 9879844.82

    0.70 -1.36 -0.66 0.70

    0.80 -1.29 -0.49 0.80

    0.90 -1.17 -0.27 0.90

    1.00 -1.00 0.00 1.00

    1.10 -0.77 0.33 1.10

    1.20 -0.47 0.73 1.20

    1.30 -0.10 1.20 1.30

    1.40 0.34 1.74 1.40

    1.50 0.88 2.38 1.50

    Caso divergente x3 - 1

    -1.00

    -0.50

    0.00

    0.50

    1.00

    1.50

    2.00

    2.50

    3.00

    0.00 0.50 1.00 1.50 2.00

    x

    y

    y=x

    F(x)

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    13

    Método General para el cálculo de raíces de ecuaciones Caso divergente

    Cálculo de la raíz de la ecuación : x3 - x - 1 = 0 o reescrita como x * (x2 - 1 ) - 1 = 0

    Para lograr la expresión x = F(x) se pasan 1 y (x2 - 1 ) al 2do. miembro x = 1

    (x2 - 1 )

    Se busca lograr la coincidencia entre x = F(x) iterando con un valor inicial de x.

    Tabulado de la función y su derivada partiendo de x0 con un incremento de Dx.

    1er. Paso la función F(x) de debe tabular con valores superiores a 1 (pues si x=1 se divide por 0)

    2do. Paso definimos las columnas

    x f(x) F(x) y=x

    3er. Paso se utiliza el algoritmo x = F(x) en las columnas E y F

    en la columna F se calcula F(x) y se copia a la celda de la fila siguiente de la columna E

    La raíz está entre 1.3 y 1.4. Se comienza con una aproximación Xo de 1.3

    4to. Paso se grafica y=x y y=F(x)

    a b c d xo Dx F(x) = 1 .

    1.00 0.00 -1.00 -1.00 1.10 0.05 (x2 - 1)

    A B C D E F

    x f(x) F(x) y=x Xn F(x) o Xn

    1.10 -0.77 4.76 1.10 1.300 1.449

    1.15 -0.63 3.10 1.15 1.449 0.909

    1.20 -0.47 2.27 1.20 0.909 -5.742

    1.25 -0.30 1.78 1.25 -5.742 0.031

    1.30 -0.10 1.45 1.30 0.031 -1.001

    1.35 0.11 1.22 1.35 -1.001 510.336

    1.40 0.34 1.04 1.40 510.336

    1.45 0.60 0.91 1.45

    1.50 0.88 0.80 1.50

    1.55 1.17 0.71 1.55

    1.60 1.50 0.64 1.60

    1.65 1.84 0.58 1.65

    1.70 2.21 0.53 1.70

    1.75 2.61 0.48 1.75

    1.80 3.03 0.45 1.80

    1.85 3.48 0.41 1.85

    Caso divergente

    0.00

    0.50

    1.00

    1.50

    2.00

    2.50

    1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0x

    y

    y=x

    F(x)

    Y=X

    F(x)

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    14

    Método de Newton - Raphson

    En el método de Newton-Raphson se sustituye F(x) por x - f(x) / f ’(x)) F(X) = X - _ f(X)_ f ‘(X) Y el proceso iterativo es: Xk+1 = Xk - f(Xk) (1) f ' (Xk) Analíticamente también podemos definir el método a través de la serie de Taylor f(Xk+1) = f(Xk) + (Xk+1 – Xk) * f ’(Xk) (aproximación de f(Xk+1) al 1er. término) Como el valor de f(Xk+1) debe ser 0 , despejando Xk+1 obtenemos una expresión igual a la (1). Geométricamente significa tomar la intersección de la recta tangente a la curva y = f (X) en el punto Xk, f(Xk) con el eje X.

    Gráficamente:

    Este método está definido siempre que f ' (Xk) ≠ 0

    f (X) f " (X) F ' (X) = -------------------- [f ' (X)] 2

    Como vimos, para que converja es suficiente que: | f (X) . f "(X) | | F ' (X)| = ----------------------- < 1 [f ' (X)] 2

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    15

    Programa Ejemplo : Método de Newton-Raphson con su representación gráfica.

    function x = newraph_g(funcion,x0,xmin,xmax)

    % los argumentos son:

    % funcion es el argumento, nombre de una funcion.m ya definida p.ej:funcion_1v

    % x0 primera aproximacion a la raiz para funcion_1v 1ra corrida 0.0 2da. corrida 2.0

    % xmin y xmax las valores minimos y maximos para el eje x para funcion_1v 0,2

    clf, hold off

    dx=(xmax-xmin)/100 ;

    xp=xmin : dx :xmax ; % vector de puntos x para generar la grafica de f(x)

    ejex=xmax - xmin ;

    yp=feval(funcion,xp) ; % feval evalua la 'funcion' con los valores del vector xp

    plot(xp,yp) ; xlabel('x') ; ylabel('f(x)') % grafica de la funcion y los ejes

    title('Iteraciones con Newton-Raphson') ; % Titulo de la figura

    hold on

    yp=0.*xp ; plot(xp,yp) % se genera el vector yp con todos 0 y dibuja el eje x

    ymin=min(yp) ; ymax=max(yp) ; % se define el eje y buscando el y minimo y maximo

    ejey=ymax-ymin;

    x=x0 ; error=100 ;epsilon=0.001 ; % se comienza con x=x0 y se define un error de 100

    n=0 ; % contador de iteraciones

    while abs(error)>epsilon

    y=feval(funcion,x) ;

    plot([x,x],[0,y]) ; % dibuja la linea vertical desde el x,0 hasta el punto x,y

    plot(x,0,'*') ; % dibuja un * en el punto x,0

    yp1=derivada_1(funcion,x); % calcula la derivada numericamente

    xn = x ; % se guarda el valor de x como el de la iteracion n o sea xn

    x = xn - y/yp1; n=n+1 ;

    plot([xn,x] , [y,0]) % se traza la linea de xn,y hasta x,0

    error=abs(x-xn)/x*100 ;

    % imprime los valores de esa iteracion

    fprintf('n=%3.0f, x=%10.6f, y=%10.6f, error=%10.6f\n ',n,x,y,error) ;

    pause

    n=n+1 ;

    if n>20 ;

    fprintf('No converge en 20 iteraciones)')

    break

    end

    end

    fprintf('La raiz aproximada es xr = ,%12.4f\n ',x)

    % estos comandos son para ubicar el texto 'Raiz aproximada' en la figura

    plot([x, x] , [0. , 1]) ; % dibuja la vertical que marca la raiz aproximada

    text(x, 1 ,'Raiz aproximada') ; % escribe el texto en la figura

    hold off

    0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    x

    f(x)

    Iteraciones con Newton-Raphson

    Raiz aproximada

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    16

    Metodo de Newton-Raphson para el cálculo de raíces de ecuaciones

    Cálculo de la raíz de la ecuación : 1.95 x2 - 1.86 x - 4.00

    La derivada de la función es f '(x) : 2 * 1.95 * x - 1.86

    La derivada 2da. f''(x) : 2 * 1.95 = 3.90 y f(x) * f ''(x) / f '(x)2 es menor a 1 en el intervalo

    Por lo tanto se espera que el método converja.

    La raíz se busca con la iteración xn = x - f(x) / f ' (x)

    Tabulado de la función y su derivada partiendo de x0 con un incremento de Dxa b c xo Dx

    1.95 -1.86 -4.00 0.00 0.10

    Cond.Conv.

    x f(x) xn f(x) f'(x) x-f(x) / f '(x) f *f'' / f ' 2

    0.00 -4.00 4.000 19.76 13.74 2.562 0.40820

    0.10 -4.17 2.562 4.03 8.13 2.066 0.23789

    0.20 -4.29 2.066 0.48 6.20 1.988 0.04872

    0.30 -4.38 1.988 0.01 5.89 1.986 0.00131

    0.40 -4.43 1.986 0.00 5.89 1.986 0.00000

    0.50 -4.44 1.986 0.00 5.89 1.986 0.00000

    0.60 -4.41 1.986 0.00 5.89 1.986 0.00000

    0.70 -4.35 1.986 0.00 5.89 1.986 0.00000

    0.80 -4.24 1.986 0.00 5.89 1.986 0.00000

    0.90 -4.09 1.986 0.00 5.89 1.986 0.00000

    1.00 -3.91 1.986 0.00 5.89 1.986 0.00000

    1.10 -3.69

    1.20 -3.42

    1.30 -3.12 x f(x) Rectas

    1.40 -2.78 4.000 19.760 (x,f(x))

    1.50 -2.40 2.562 0.000 (xn,0)

    1.60 -1.98

    1.70 -1.53 2.562 4.033 (x,f(x))

    1.80 -1.03 2.066 0.000 (xn,0)

    1.90 -0.49 Raíz

    2.00 0.08

    2.10 0.69

    2.20 1.35 Explicación gráfica del método

    2.30 2.04

    2.40 2.77 f '(x) = f(x) - f(xn)

    2.50 3.54 x - xn

    2.60 4.35

    2.70 5.19 f(xn) = 0 pues se traza una recta hasta cortar el eje x

    2.80 6.08

    2.90 7.01 f '(x ) = f(x) - 0 despejando xn A la misma expresión llegamos si se

    3.00 7.97 x -xn despeja de la serie de Taylor

    3.10 8.97 f(x)= f(xo) + (x - xo) * f '(xo)

    3.20 10.02 xn = x -- f(x) al cortar el eje x f(x) = 0

    3.30 11.10 f '(x) 0 = f(xo) + (x - xo) * f '(xo)

    3.40 12.22 despejando x

    3.50 13.38 es decir que nuestras Rectas unen los puntos : x = xo - f(xo) / f '(xo)

    3.60 14.58 (x , f(x) ) y ( xn ,0 )

    3.70 15.81

    3.80 17.09

    3.90 18.41

    4.00 19.76

    -5

    0

    5

    10

    15

    20

    0.00 1.00 2.00 3.00 4.00

    x

    x, f(x)

    o

    o

    0,xn

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    17

    Raíces de polinomios: Caso particular de Newton-Raphson en Polinomios

    P(x) = a0 + a1 x + a2 x2 + a3

    x3 ... + am xm

    Se puede escribir por la regla de Homer como

    P(xm) = (((((am x + am-1) x + am-2) x ... + a2) x + a1) x + a0) y se puede hacer la regla de programación como bm = am (1) bj = bj+1 . x + aj j = m-1 ... 0 ⇒ P(x) = b0 Para m = 3 b3 = a3 b2 = b3 . x + a2 = a3 x + a2 b1 = b2 . x + a1 = a3 x

    2 + a2 x + a1 P(x) = b0 = b1 . x + a0 = a3 x

    3 + a2 x2 + a1 x + a0

    Las raíces de polinomios dadas por la regla de Newton - Raphson es: xm + 1 = xm - P(x) P'(x) Como P'(x) = m. am.x m-1 + m-1 am-1 x m-2 + ... 2 a2 x + 1 a1 Podemos establecer como relación similar a (1) cm = m. am cj = cj +1 . x + j .aj j = m-1 ...1 P'm(x) = c1 Para m = 3 c3 = 3 . a3 c2 = c3 . x + 2 a2 = 3 a3 x + 2 a2 P'(x) = c1 = c2 . x + 1 a1 = 3 a3 x

    2 + 2 a2 x + a1

    Es decir que Xm+1 = Xm - b0 c1

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    18

    PROGRAMA ANNEWRAP.FOR C ALGORITMO DE NEWTON RAPHSON PARA CALCULAR RAICES DE ECUACIONES C ECUACION 0.5 * X^2 - 0.21 X - 3.60 (-2.48) (+2.90) print *, 'Ingrese el valor de Xinicial:' read * ,x epsilon=1 C Se aplica el algoritmo xn = x - f(x) / f' (x) do while (epsilon.GT.0.001) xn= x - (0.5 * x**2 - 0.21 * x - 3.60) / (x-0.21) print *, x,xn epsilon=abs(x-xn) x=xn enddo print * print *, 'Ra¡z ',x end

    PROGRAMA AHORNE1.FOR c Valuación de un polinomio mediante el algoritmo de Horner dimension a(10),b(10),c(10) n=3 a(0)=-3.60 a(1)=-0.21 a(2)=0.5 a(3)=0.0 print * ,' Ingrese el valor de x ' read * , x b(n)=a(n) c(n)=n*a(n) do i=n-1 ,0,-1 b(i)=a(i) + b(i+1) * x c(i)= i * a(i) + c(i+1) * x enddo print *, 'x', x,' f(x)',b(0),' fp(x)', c(1) end

    Tareas para el alumno:

    Realizar un programa para evaluar las raíces de un polinomio por ejemplo el del programa ANNEWRAP.FOR pero evaluando el polinomio y su derivada mediante la regla de Horner. Realizar un programa para evaluar las raíces de un polinomio por ejemplo el del programa ANNEWRAP.FOR pero evaluando el polinomio utilizando una declaración de función y evaluar su derivada mediante diferenciación numérica utilizando la misma declaración de función.

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    19

    Cálculo de el valor de un polinomio mediante la regla de Horner

    Ejemplo de una algoritmo para evaluar el polinomio en Excel

    P(x) = an * xn + a n - 1 * x

    n - 1 + .... + a2 * x

    2 + a1 * x + a0

    Para calcular el valor de P(x) dado un x mediante la regla de Horner reescribimos

    el polinomio como:

    P(xn) = (((((an x + an-1) x + an-2) x ... + a2) x + a1) x + a0)

    Para 'programar' esto en Excel se desarrolla el algoritmo para un solo valor de X

    Valor de X 2 Entonces las fórmulas

    A B C D en la columna D son:

    a7 1.00 b7 1.00 13 =B13

    a6 1.00 b6 3.00 14 =D13*B$11+B14

    a5 1.00 b5 7.00 15 =D14*B$11+B15

    a4 1.00 b4 15.00 16 y así para el resto

    a3 1.00 b3 31.00 17

    a2 1.00 b2 63.00 18

    a1 1.00 b1 127.00 19

    a0 1.00 b0 255.00 20

    P(x) para x= 2.00 255.00

    Recuerda el valor máximo de un byte ?: (1111111)2 = (255)10

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    20

    Diferenciación numérica. La diferenciación numérica (o aproximación por diferencias) nos permite evaluar aproximadamente la derivada de una función en forma numérica, partiendo de la definición de derivada: f ’(x) = lim f(x+h) – f(x) cuando h tiende a 0 h Podemos aproximarla tomando un h pequeño f’(x)≅ f(x+h) – f(x) como aquí usamos x+h se denomina diferencia hacia delante (1) h o como f’(x) ≅ f(x) – f(x -h) como aquí tomamos x-h se denomina diferencia hacia atrás (2) h o podemos usar una diferencia centrada haciendo el promedio de (1) y (2) f ’(x) ≅ f(x+h) – f(x-h) diferencia centrada 2 h Retomaremos este tema en el los problemas de resolución de ecuaciones diferenciales mediante diferencias finitas. Ahora podemos utilizar esta forma aproximada de calcular la derivada primera en forma numérica para evaluar f’(x) y aplicar el método de Newton-Raphson en aquellos casos donde la derivada de la función sea complicada de evaluar o por cuestiones de programación convenga aplicar la derivación numérica o sea evaluar una sola función (en x y en x+h) , para calcular f(x) y además f ’(x). Ejercitación: Con planilla de cálculo. Evalúe las derivadas propuestas en el ejercicio adjunto. Tabule las funciones elegidas usando derivada hacia adelante. Calcule el error relativo entre la solución analítica y la numérica. Mejore el resultado usando derivada central. Calcule el error relativo. Con un programa en MATLAB o FORTRAN. Use el método de Newton-Raphson para evaluar las raíces de la ecuación f(x)=0

    Donde f(x) = 0.5 * x2 - 0.21 x- 3.60

    Las raíces aproximadas son (-2.48) y (+2.90) * Use primero f ’(x) en forma analítica. * Utilice sentencias de definición de función para la función y su derivada. * Luego modifique el programa y calcule f’(x) en forma numérica con h=0.01. En este caso va a usar solamente la definición de función para f(x).

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    21

    Cálculo de raíces utilizando herramientas de Excel o Calc.

    Buscar objetivo. Raíces de ecuaciones.

    La opción Buscar objetivo del menú Herramientas, permite entre otras utilidades hallar la raíz de una

    ecuación. Veamos esto con un ejemplo:

    Queremos encontrar la raíz positiva de la ecuación X2 - 4.84 = 0 O sea f(X)=0 donde f(X)= X

    2 - 4.84

    Despejando X ,sabemos que la solución será la raíz cuadrada de 4.84 o sea X = 2.20

    Pero para utilizar esta Herramienta de la Planilla de Cálculo la usamos con este ejemplo simple.

    Para ello recordando algunos pasos prácticos de ejercicios anteriores, realizamos las operaciones:

    1) Tabular la función en el intervalo en estudio, en este caso valores de x > 0.

    De esta manera se obtiene una aproximación gráfica para ver donde estaría la raíz.

    Obviamente se podría haber realizado un gráfico con dx muy pequeños y aproximar de esa forma la raíz.

    2) Graficar la función

    Valores para graficar

    X f(X)

    0.00 -4.8400

    0.50 -4.5900

    1.00 -3.8400

    1.50 -2.5900

    2.00 -0.8400

    2.50 1.4100

    3.00 4.1600

    A B

    X f(X) 25

    2.200 0.00000 26Celda

    Variable Celda de Fórmula

    Para encontrar esta raíz con la Herramienta Buscar objetivo

    Ir al menú Herramientas

    1 Opción: Búsqueda del valor destino (Buscar objetivo)

    Se indica la celda que contiene la fórmula (Definir la celda ) con un valor inicial de X

    En esta celda (B26) debe estar escrita la función ( o sea X2 - 4.84) o (A26^2 - 4.84)

    2 Se indica el valor destino en este caso queremos que sea 0 (raíz o Valor destino) Con el valor 0.

    3 Se indica la celda donde (A26) queremos el resultado (Celda variable) (Para cambiar la celda)

    4 Pulsamos aceptar y en A26 aparece el valor 2.20 que es la raíz positiva de esta ecuación.

    Ecuaciones con raíces múltiples

    Si se tiene una ecuación con 2 raíces diferentes, se halla la raíz mas próxima según el valor de X.

    con que se evalúe la función inicialmente.

    Ejemplo: Dada la ecuación f(x) = X2 - X - 2 = 0 Sus raíces son -1 y 2.

    Si el valor de X en la fórmula del cuadro Definir la celda es un valor negativo ( -2.00) se halla la raíz -1

    Si en cambio elegimos un valor positivo p.ej. 1.50 va a encontrar la raíz en 2.00.

    A B Caso 1 : se calcula f(X) con X = - 2.00

    X f(X) A B

    -2.00 4.0000 X f(X) 25

    -1.50 1.7500 -2.000 4.00 26

    -1.00 0.0000 =A26^2-A26-2

    -0.50 -1.2500 Luego de hacer los pasos de 1 a 4

    0.00 -2.0000 se obtiene en A26 -1.00 (1ra. raíz)

    0.50 -2.2500

    1.00 -2.0000 Caso 2 : se calcula f(X) con X = 3.001.50 -1.2500 A B

    2.00 0.0000 X f(X) 25

    2.50 1.7500 1.500 -1.25 26

    3.00 4.0000 =A26^2-A26-2

    Luego de hacer los pasos de 1 a 4 y se obtiene la 2da. raíz

    Gráfico de la función

    -6.00

    -5.00

    -4.00

    -3.00

    -2.00

    -1.00

    0.00

    1.00

    2.00

    3.00

    4.00

    5.00

    0 0.5 1 1.5 2 2.5 3 3.5

    X

    Y

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    22

    Funciones de MATLAB para el cálculo de raíces de ecuaciones: MATLAB provee funciones para el cálculo de raíces ecuaciones no lineales, ellas son: fzero La función fzero la cual en sus formas mas sencillas tienen la siguiente sintaxis fzero ( funcion , xinicial) Función es el nombre de la función p.ej: fraizgen_1 xinicial es un valor de x próximo a la raíz fzero(funcion , [xi xd] ) Función es el nombre de la función p.ej: fraizgen_1 xi y xd son los extremos de un intervalo donde la función cambia de signo Definimos con la función ‘en línea’ con inline >> f3=inline('x.^3 - x - 1') f3 = Inline function: f3(x) = x.^3 - x - 1 Y damos la aproximación x=1 >> fzero(f3,1) ans = 1.3247 Si queremos ver la gráfica de la función con definir: >> x=0:0.1:2 ; y luego el comando: >> plot(x , f3(x) , [ 0 2] , [0 0] ) Si no hay raíz en el intervalo la función fzero indica el error (deben ser de distinto signo en los extremos del intervalo) >> fzero(f3, [0,1] ) ??? Error using ==> fzero The function values at the interval endpoints must differ in sign. Se exige que los valores de la función en los extremos tengan diferente signo. (Criterio de Bolzano). roots Ya vimos que esta función calcula las raíces de un polinomio. roots([ coeficientes del polinomio]) los coeficientes del polinomio se pasan como un vector. Para el caso de nuestra función fraizgen_1 p(x)= x

    3 – x – 1 , los coeficientes son [1 0

    -1 -1]. >> roots([1 0 -1 -1]) ans = 1.3247 -0.6624 + 0.5623i -0.6624 - 0.5623i Calcula también las raíces imaginarias,

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    23

    Sistema de ecuaciones no lineales

    En el caso de un sistema de ecuaciones no lineales, el método mas usado es el de Newton, el

    cual es una extensión del método de Newton-Rhapson que vimos para el cálculo de la raíces de

    una ecuación no lineal. Sea: F1(x,y)=0 F2(x,y)=0 Recordando que a partir de la serie de Taylor podíamos deducir el método de Newton-Rhapson, aplicamos la serie a F1 y F2 partiendo de xo y yo. F1(x,y)= F1(xo,yo) + dx F1x (xo,yo) + dy F1y (xo,yo) + ….. F2(x,y)= F2(xo,yo) + dx F2x (xo,yo) + dy F2y (xo,yo) + ….. Donde: F1x = ∂F1(x,y) derivada parcial de F1 con respecto a x ∂x F2y = ∂F2(x,y) derivada parcial de F2 con respecto a y ∂y Como: dx = x – xo

    dy = y – yo

    Tomando hasta el primer término de la serie de Taylor

    F1(x,y) = F1(xo,yo) + (x – xo) F1x (xo,yo) + (y – yo) . F1y (xo,yo) (1) F2(x,y) = F2(xo,yo) + (x – xo) F2x (xo,yo) + (y – yo) . F2y (xo,yo) (2)

    Y recordando que : F1(x,y) = 0 F2(x,y) = 0

    Se despeja (y – yo) de la ecuación (2) igualada a 0 y se lo reemplaza en la (1) y se agrupan los

    términos con respecto a x y xo .

    Luego se despeja (x – xo) de (1) y se la reemplaza en (2) y se procede de igual forma, se llega a

    las expresiones para evaluar x e y en función de xo y yo.

    Para sintetizar las expresiones omitimos (x,y) así a F1(x,y) la escribimos F1.

    x = xo – ( F1. F2y – F2 , F1y ) / J

    y = yo + ( F1. F2x – F2 . F1x ) / J

    Y J es el Jacobiano del sistema o matriz jacobiana de F1 y F2: F1x F2x

    F1y F2y

    J = F1 x. F2y – F1y . F2x

    Así tenemos un método iterativo para ir evaluando x hasta que entre x y el xant y el y el yant sean

    casi iguales, como ocurría en el método de Newton-Raphson.

    Por ejemplo tenemos el sistema de dos ecuaciones no lineales:

    F1(x,y) = x2 + y

    2 - 4

    F2(x,y) = x . y - 1

    Sus derivadas parciales son:

    F1x = 2x

    F1y = 2y

    F2x = y

    F2y = x

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    24

    Para programar el método cambiamos los nombres de las variables.

    X1 = x y X2 = y DF1X1 es la derivada parcial de F1 en función de x (X1)

    Su programación no implica gran dificultad, es muy similar al método de Newton-Raphson, se

    deja al alumno la modificación para iterar hasta que la diferencias de los x e y con respecto a

    los valores anteriores sean menor a un error fijado.

    c Solución de un Sist. Ec. No lineales por el Método de Newton F1(X1,X2)=X1**2-4+X2**2 F2(X1,X2)=X1*X2-1 DF1X1(X1,X2)=2*X1 DF1X2(X1,X2)=2*X2 DF2X1(X1,X2)=X2 DF2X2(X1,X2)=X1 X1=1.5 X2=0.5 DO I=1,10 c FJAC=Jacobiano FJAC=DF1X1(X1,X2)*DF2X2(X1,X2)-DF1X2(X1,X2)*DF2X1(X1,X2) XN1=X1-(F1(X1,X2)*DF2X2(X1,X2)-F2(X1,X2)*DF1X2(X1,X2))/FJAC XN2=X2+(F1(X1,X2)*DF2X1(X1,X2)-F2(X1,X2)*DF1X1(X1,X2))/FJAC PRINT 10, X1,XN1,X2,XN2 10 FORMAT ('X1:',2F10.3,' X2:',2F10.3) X1=XN1 X2=XN2 END DO STOP END La salida del programa luego de 10 iteraciones es: X1: 1.500 2.000 X2: 0.500 0.500 X1: 2.000 1.933 X2: 0.500 0.517 X1: 1.933 1.932 X2: 0.517 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518

    La interpretación grafica la podemos realizar despejando X1 y X2 en las F1 y F2, que se observa en la planilla adjunta: SISTEMA DE ECUACIONES NO LINEALES 2.xls

    Uso de diferencias para el cálculo de las Fx y Fy.

    Vimos anteriormente que podíamos calcular con una precisión que dependía de dx y dy

    las derivadas parciales.

    A fin de simplificar el programa, podemos usar estos valores a fin de evitar tener que

    calcular las derivadas parciales con respecto a x e y.

    De esta manera solamente hay que definir las funciones.

    Utilizando la diferencia central para las derivadas:

    Fx = F(x+dx,y) – F(x-dx,y) (diferencia centrada de la derivada parcial en x)

    2 dx

    Se puede programar el método usando X1F= X1 + DX1 y X1B=X1 - DX1

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    25

    c Solución de un Sistema Ecuaciones no lineales por el Método de Newton c Se usa derivación numérica para el cálculo de derivadas parciales c los argumentos X1 y X2 ficticios de las definiciones de función c se reemplazan por X1,X2 o X1F X1B X2F X2B (verdaderos) c según corresponda F1(X1,X2)=X1**2-4+X2**2 F2(X1,X2)=X1*X2-1 DF1X1(X1,X2)=(F1(X1F,X2)-F1(X1B,X2))/2/DX1 DF1X2(X1,X2)=(F1(X1,X2F)-F1(X1,X2B))/2/DX2 DF2X1(X1,X2)=(F2(X1F,X2)-F2(X1B,X2))/2/DX1 DF2X2(X1,X2)=(F2(X1,X2F)-F2(X1,X2B))/2/DX2 DX1=0.01 DX2=0.01 X1=1.5 X2=0.5 DO I=1,10 c FJAC=Jacobiano X1F=X1+DX1 X1B=X1-DX1 X2F=X2+DX2 X2B=X2-DX2 FJAC=DF1X1(X1,X2)*DF2X2(X1,X2)-DF1X2(X1,X2)*DF2X1(X1,X2) XN1=X1-(F1(X1,X2)*DF2X2(X1,X2)-F2(X1,X2)*DF1X2(X1,X2))/FJAC XN2=X2+(F1(X1,X2)*DF2X1(X1,X2)-F2(X1,X2)*DF1X1(X1,X2))/FJAC PRINT 10, X1,XN1,X2,XN2 10 FORMAT ('X1:',2F10.3,' X2:',2F10.3) X1=XN1 X2=XN2 END DO STOP END X1: 1.500 2.000 X2: 0.500 0.500 X1: 2.000 1.933 X2: 0.500 0.517 X1: 1.933 1.932 X2: 0.517 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518 X1: 1.932 1.932 X2: 0.518 0.518

  • Análisis Numérico y Computación: (Carreras IRH – IA)

    26

    Sistema de ecuaciones no lineales

    Representación gráfica

    Dadas las ecuaciones Despejando en c/u X2 en función de X1

    F1(X1,X2)= X12+X2

    2- 4 = 0 X2= F1(X1) = RAIZ (4 - X1

    2)

    F2(X1,X2)= X1 * X2 - 1 = 0 X2= F2(X1) = 1 / X1

    X1 X2 F1(X1,X2) F2(X1,X2) X2=F1(X1) X2=F2(X1)

    0.400 0.400 -3.680 -0.840 1.960 2.500

    0.500 0.500 -3.500 -0.750 1.936 2.000

    0.517 0.500 -3.482 -0.741 1.932 1.933

    0.600 0.600 -3.280 -0.640 1.908 1.667

    0.700 0.700 -3.020 -0.510 1.873 1.429

    0.800 0.800 -2.720 -0.360 1.833 1.250

    0.900 0.900 -2.380 -0.190 1.786 1.111

    1.000 1.000 -2.000 0.000 1.732 1.000

    1.100 1.100 -1.580 0.210 1.670 0.909

    1.200 1.200 -1.120 0.440 1.600 0.833

    1.300 1.300 -0.620 0.690 1.520 0.769

    1.400 1.400 -0.080 0.960 1.428 0.714

    1.500 1.500 0.500 1.250 1.323 0.667

    1.600 1.600 1.120 1.560 1.200 0.625

    1.700 1.700 1.780 1.890 1.054 0.588

    1.800 1.800 2.480 2.240 0.872 0.556

    1.933 1.933 3.474 2.737 0.513 0.517

    2.000 2.000 4.000 3.000 0.000 0.500