Está en la página 1de 6

ANLISIS NUMRICO

2.4

ICM ESPOL

Races reales de sistemas de ecuaciones no-lineales

En general este es un problema difcil, por lo que es conveniente intentar reducir el nmero de
ecuaciones y en caso de llegar a una ecuacin, poder aplicar alguno de los mtodos conocidos.
Si no es posible reducir el sistema, entonces se intenta resolverlo con algn mtodo especial
para sistemas de ecuaciones no-lineales.
Debido a que el estudio de la convergencia de estos mtodos es complicado, se prefiere utilizar
algn mtodo eficiente, de tal manera que numricamente pueda determinarse la convergencia o
divergencia con los resultados numricos obtenidos.
Una buena estrategia consiste en extender el mtodo de Newton, cuya convergencia es de
segundo orden, al caso de sistemas de ecuaciones no lineales. Esto permite determinar la
convergencia o divergencia rpidamente. En esta seccin se describe un ejemplo de un sistema
de dos ecuaciones no lineales. La solucin se la obtendr posteriormente con el mtodo
propuesto.
Dos ecuaciones con dos variables an pueden visualizarse en un plano. Las races reales son
las intersecciones de sus grficos.

Ejemplo Calcule las races reales del sistema:


2
2
f(x, y) = (x 2) + (y 1) 3 = 0
x+y
g(x, y) = x e 3 = 0
La siguiente figura obtenida con MATLAB muestra el grfico de las dos ecuaciones.

Fig. 9.1
El grfico se obtuvo con los siguientes comandos y el editor de grficos de MATLAB:
>> f='(x-2)^2+(y-1)^2-3';
>> g='x*exp(x+y)-3';
>> ezplot(f,[0,4,-2,4]), grid on, hold on
>> ezplot(g,[0,4,-2,4])

Ing. Luis Rodrguez Ojeda, msC.

ANLISIS NUMRICO

ICM ESPOL

2.4.1

Obtencin de una frmula iterativa de segundo orden para calcular races de dos
ecuaciones no lineales

Sean

f(x,y) = 0, g(x,y) = 0 dos ecuaciones no-lineales con variables x, y.

Sean r, s valores reales tales que f(r,s) = 0, g(r,s) = 0, entonces r, s constituyen una raz real
del sistema y es de inters calcular su valor.
Suponer que f, g son funciones diferenciables en alguna regin cercana a r, s.
Con el desarrollo de la serie de Taylor expandimos f, g desde un punto xi, yi Por simplicidad se
usar la siguiente notacin: fi = f(xi, yi), fi+1 = f(xi+1, yi+1)

fi
f
2
2
+ (yi+1 yi) i + O(xi+1 xi) + O(yi+1 yi)
x
y
g
g
2
2
gi+1 = gi + (xi+1 xi) i + (yi+1 yi) i + O(xi+1 xi) + O(yi+1 yi)
x
y
En los ltimos trminos de ambos desarrollos no se han escrito las derivadas, sino nicamente
los componentes de inters, usando la notacin O( ).
fi+1 = fi + (xi+1 xi)

Se realizan algunas suposiciones, las cuales son aceptables en una regin muy cercana a r, s:

xi cercano a r
yi cercano a s

Si el mtodo tiene convergencia cuadrtica entonces xi+1, yi+1 sern muy cercanos a r, s:
xi+1 r
yi+1 s
Por lo tanto se puede suponer que:
f(xi+1, yi+1) 0
g(xi+1, yi+1) 0
Por otra parte, si xi, yi son valores cercanos a xi+1, yi+1, las diferencias xi+1 - xi , yi+1 - yi sern
pequeas, y al elevarse al cuadrado se obtendrn valores mucho mas pequeos y se los omite.
Por ltimo, se definen estas diferencias:
h = xi+1 xi
k = yi+1 yi
Sustituyendo todo en el desarrollo propuesto se obtiene como aproximacin el sistema lineal:
f
f
0 = fi + h i + k i
x
y
gi
g
0 = gi + h
+k i
x
y

Ing. Luis Rodrguez Ojeda, msC.

ANLISIS NUMRICO

ICM ESPOL

Que se puede escribir:

fi
f
k i fi
x
y

gi
gi
h
k
gi
x
y
h

fi
x

gi

fi
y h fi

gi k gi

fi
h x
k g

i

fi
y

gi

fi
g
i

Estas ecuaciones lineales, provienen de suposiciones y simplificaciones, y definen un mtodo


para obtener la solucin en forma aproximada.
f, g y sus derivadas se deben evaluar en un punto dado xi, yi. Al resolver el sistema se obtienen
valores de h, k y con estos valores y se obtienen nuevos valores de xi+1, yi+1
La notacin matricial se puede extender a sistemas con ms ecuaciones no lineales. La matriz
de las derivadas parciales se denomina Jacobiano del sistema.
En forma general la convergencia del mtodo de Newton para sistemas no lineales requiere que:
a) f, g as como sus derivadas sean continuas en la regin en la que se aplica el mtodo y
que debe estar cerca de la raz.
a) El determinante del Jacobiano no se anule en esta regin
b) El valor inicial se elija cerca de la raz que se intenta calcular
2.4.2

Clculo de races reales de un sistema de dos ecuaciones no-lineales

Algoritmo:
1) Elegir los valores iniciales para xi, yi cercanos a la raz r, s que se desea calcular
2) Evaluar f, g, y sus derivadas con los valores de xi, yi. Sustituir y obtener los valores de h, k
resolviendo el sistema de ecuaciones lineales
fi
fi
fi
fi
y
x
gi
fi fi
gi
gi
gi
x y h f
y

x
i


k
h
fi
fi
fi
fi
gi gi k gi

x y
x y
x y
gi gi
gi gi
x y
x y
3) Obtener los nuevos valores de xi, yi de la definicin de h y k
h xi 1 xi
xi 1 xi h

k yi1 yi
yi1 yi k
Los pasos 2), y 3) se repiten hasta que las diferencias entre dos valores consecutivos de x, y
sean muy pequeas (convergencia), o hasta que se observe numricamente la divergencia

Ing. Luis Rodrguez Ojeda, msC.

ANLISIS NUMRICO

ICM ESPOL

.
Ejemplo. Realizar una iteracin con el mtodo de Newton para resolver el sistema no lineal
2
2
f(x, y) = (x 2) + (y 1) 3 = 0
x+y
g(x, y) = x e 3 = 0
Sistema de ecuaciones lineales correspondiente
fi fi
x y h f
2yi 2 h [(xi 2)2 (yi 1)2 3]
2xi 4

x y
x y
gi gi k gi
e i i (1 xi ) xi e i i k
(xi exi yi 3)

Valores iniciales tomados del grfico


x0 0.5, y0 1.5
Primera iteracin: i = 0
2(1.5) 2 h [(0.5 2)2 (1.5 1)2 3]
2(0.5) 4

0.5 1.5

(1 0.5) 0.5e0.5 1.5 k
(0.5e0.5 1.5 3)
e

1 h 0.5
3
11.0836 3.6945 k 0.6945

Solucin del sistema

De donde

2.4.3

h 0.1147
k 0.1560

x1 x0 h 0.5 0.1147 0.3853


y1 y0 k 1.5 0.1560 1.6560

(nuevos valores calculados)

Instrumentacin computacional en MATLAB del mtodo de Newton


para un sistema dos ecuaciones no-lineales

Se escribe una funcin para que sea usada iterativamente. La convergencia se la controlar
desde la ventana de comandos. La funcin recibe f, g y un valor para (x,y) y entrega una nueva
aproximacin para (x,y). Las definiciones de f, g deben ingresar como expresiones entre
comillas para poder obtener sus derivadas. La evaluacin requiere el uso de la funcin eval.

function [x, y] = newton2(f, g, x, y)


fx=diff(f,'x');
fy=diff(f,'y');
gx=diff(g,'x');
gy=diff(g,'y');
d=eval(fx)*eval(gy)-eval(gx)*eval(fy);
h=(-eval(f)*eval(gy)+eval(g)*eval(fy))/d;
k=(-eval(fx)*eval(g)+eval(gx)*eval(f))/d;
x=x+h;
y=y+k;

Ing. Luis Rodrguez Ojeda, msC.

ANLISIS NUMRICO

ICM ESPOL

Ejemplo. Use la funcin newton2 para encontrar una raz real del sistema
2
2
f(x, y) = (x 2) + (y 1) 3 = 0
x+y
g(x, y) = x e 3 = 0
El grfico de estas dos ecuaciones est en una pgina anterior
>> format long
>> f= '(x-2)^2 + (y-1)^2-3';
(Definicin de las ecuaciones)
>> g= 'x*exp(x+y)-3';
>> x=0.5;
(Valores iniciales tomados del grfico)
>> y=1.5;
>> [x, y]=newton2(f,g,x,y)
(Se envan x, y y se reciben los nuevos valores)
x=
0.385335283236613
y=
1.656005849709838
>> [x, y]=newton2(f,g,x,y)
x=
0.391864405883674
y=
1.643505096490861
>> [x, y]=newton2(f,g,x,y)
x=
0.391903529622575
y=
1.643448324819762
>> [x, y]=newton2(f,g,x,y)
x=
0.391903530498490
y=
1.643448323314919
>> [x, y]=newton2(f,g,x,y)
x=
0.391903530498490
y=
1.643448323314918
El comando se reutiliza retrocediendo con el cursor. Se observa la rpida convergencia.
Para verificar que son races reales de las ecuaciones deben evaluarse f, g
>> eval(f)
ans =
-4.440892098500626e-016
>> eval(g)
ans =
8.881784197001252e-016
Los valores obtenidos son muy pequeos, por lo cual se aceptan las races calculadas

Ing. Luis Rodrguez Ojeda, msC.

ANLISIS NUMRICO

ICM ESPOL

Para calcular la otra raz, tomamos del grfico los valores iniciales cercanos a esta raz
>> x=1.5;
>> y=-0.5;
>> [x, y]=newton2(f,g,x,y)
x=
1.426819161757163
y=
-0.642273053919054
>> [x, y]=newton2(f,g,x,y)
x=
1.391067906070677
y=
-0.622002086736185
>> [x, y]=newton2(f,g,x,y)
x=
1.390289467200878
y=
-0.621189172487424
>> [x, y]=newton2(f,g,x,y)
x=
1.390289190253727
y=
-0.621188677630974
>> [x, y]=newton2(f,g,x,y)
x=
1.390289190253667
y=
-0.621188677630852
>> [x, y]=newton2(f,g,x,y)
x=
1.390289190253668
y=
-0.621188677630852
>> eval(f)
ans =
4.440892098500626e-016
>> eval(g)
ans =
4.440892098500626e-016
2.4.4

(Comprobar si es una solucin del sistema)

Uso de funciones especiales de MATLAB para resolver sistemas no-lineales

La funcin solve de MATLAB se puede usar para resolver sistemas no lineales como el ejemplo
anterior:
>> [x,y] = solve('(x-2)^2 + (y-1)^2 = 3', 'x*exp(x+y) = 3')
x=
1.3902891902536674744306589782101
y=
-0.62118867763085228825257239065302
El mtodo solve proporciona solamente una de las dos soluciones. Con esto concluimos que no
siempre los programas computacionales disponibles producen las respuestas esperadas.

Ing. Luis Rodrguez Ojeda, msC.

También podría gustarte