Vous êtes sur la page 1sur 16

ECUACIONES ALGEBRAICAS - 1 - 1 -

ECUACIONES ALGEBRAICAS - 1

En este tema se estudian algunos de los métodos para resolver ecuaciones


algebraicas con una incógnita, es decir encontrar el valor de la variable
independiente que cumple con la igualdad.
Existen dos formas en las cuales puede estar la ecuación a resolver:
x=g(x) (2.1)
y
f(x)=0 (2.2)
Es decir se puede despejar una de las incógnitas e igualarla al resto de
la ecuación, o se pueden agrupar todos los miembros de la ecuación e igua-
larla a cero.

1.1. MÉTODO DE SUSTITUCIÓN DIRECTA

Para aplicar este método la ecuación a resolver debe ser colocada en la


forma x=g(x).
En este método simplemente se asume un valor de “x”, se reemplaza en la
ecuación despejada (g(x)) y si el resultado es igual al valor asumido, el
proceso concluye, caso contrario el valor calculado se convierte en el nue-
vo valor asumido y el proceso se repite.
Gráficamente la solución se encuentra en la intersección entre la recta
“x=y” y la función “g(x)”.

y x=y

y2 g(x)
solución
y1

x1 x2 x

Figura 2.1. Método de Sustitución Directa


El método sigue el proceso mostrado en la figura: Con el valor asumido,
x1, se calcula el valor de la función “y1”; “y1” se convierte en el nuevo va-
lor de prueba “x2”, con “x2” se calcula el valor de la función “y2”, que se
convierte en el nuevo valor de prueba “x3” y así sucesivamente hasta que el
valor calculado “yn” es igual al asumido “xn”.
Por ejemplo, para resolver la siguiente función (encontrar el valor de
“x” que cumple con la igualdad):
0.36
f (x )=( 52+3 √ x – 8 x 0.8) – x=0
Se coloca primero la ecuación en la forma x=g(x):
- 2 - Hernán Peñaranda V.

0.36
x=( 52+3 √ x – 8 x 0.8 ) =g ( x )
Se programa la función:
function r=gx(x) r=(52+3*sqrt(x)-8*x^0.8)^0.36; end
Entonces se asume un valor inicial para “x” (en este ejemplo asumiremos
un valor inicial igual a 1.1) y con el mismo se calcula el valor de la fun-
ción:
>> gx(1.1)
ans = 3.984055387788424
Como el valor asumido “1.1” no es igual al calculado “3.984...”, se repi-
te el proceso, pero empleando ahora como valor asumido el valor calculado
(el mismo que en Jasymca se encuentra en la variable “ans”):
>> gx(ans)
ans = 3.5520121320219027
Una vez más el valor asumido “3.984...” es diferente al calculado
“3.552..”, por lo que el proceso se repite hasta que el valor asumido y
calculado son iguales:
>> gx(ans)
ans = 3.6184795992473147
>> gx(ans)
ans = 3.608323565491999
>> gx(ans)
ans = 3.609876925738287
>> gx(ans)
ans = 3.609639376571533
>> gx(ans)
ans = 3.609675704867658
>> gx(ans)
ans = 3.609670149216255
>> gx(ans)
ans = 3.60967099883715
>> gx(ans)
ans = 3.6096708689053827
>> gx(ans)
ans = 3.609670888775732
>> gx(ans)
ans = 3.6096708857369775
>> gx(ans)
ans = 3.6096708862016915
>> gx(ans)
ans = 3.6096708861306235
>> gx(ans)
ans = 3.609670886141492
>> gx(ans)
ans = 3.6096708861398294
>> gx(ans)
ans = 3.609670886140083
>> gx(ans)
ans = 3.6096708861400444
>> gx(ans)
ans = 3.60967088614005
>> gx(ans)
ans = 3.60967088614005
ECUACIONES ALGEBRAICAS - 1 - 3 -

Por lo tanto, la solución de la ecuación es x = 3.60967088614005.


Cuando como en este caso, el proceso se acerca a la solución con cada re-
petición (con cada iteración), se dice que el proceso es convergente, por
el contrario si en cada repetición se aleja de la solución se dice que es
divergente. El proceso puede ser también oscilatorio cuando el proceso ge-
nera valores que se encuentran a ambos lados de la solución.
Como ha quedado comprobado con el ejemplo, el método puede ser aplicado
fácilmente inclusive de forma manual, no obstante no tiene sentido repetir
“n” veces una operación cuando el proceso en su conjunto puede ser automa-
tizado mediante de un programa.
Antes de elaborar el programa se definirán los términos precisión y
exactitud. Precisión, es el número de dígitos con el que se calcula el re-
sultado, es decir el número de dígitos que pueden ser empleados con seguri-
dad en el resultado. Exactitud es número de ceros después del punto en el
valor de la función, es decir cuán cercana está la función de cero (de
cumplir con la igualdad).
La precisión se determina con la expresión booleana:

∣ ∣
x1
x2
−1 <1×10−n (2.3)

Donde “x1” y “x2” son los dos últimos valores calculados. Si esta expre-
sión es verdadera, el resultado tiene “n” dígitos de precisión.
La exactitud se determina con la expresión booleana:

∣ f ∣<1×10−n (2.4)

Donde “f” es el valor de la función igualada a cero. Si esta expresión es


verdadera, el resultado tiene “n” dígitos de exactitud.

1.1.1. Algoritmo y código

Al momento de automatizar el proceso, se debe tomar en cuenta que: a)


Casi siempre los cálculos numéricos son sólo aproximados, es decir que los
procesos iterativos se repiten hasta que se cumple una determinada preci-
sión y/o exactitud y no hasta que el resultado sea exacto y b) En ocasiones
los procesos puede ser divergente y/u oscilatorio, en cuyos caso el proceso
puede repetirse indefinidamente.
Para incluir en los programas el primer factor se debe verificar que se
cumpla o la ecuación (2.3) o la ecuación (2.4). Jasymca trabaja con 16 dí-
gitos de precisión, por lo que resulta seguro trabajar con una precisión y
exactitud de hasta 15 dígitos (esa será el error por defecto).
Para tomar en cuenta el segundo factor, se emplea un contador que al lle-
gar al límite de iteraciones fijado termina el proceso generando un error y
mostrando el último resultado calculado (el límite de iteraciones por de-
fecto para este método será 100).
El algoritmo del método, tomando en cuenta las anteriores consideraciones
se presenta en la siguiente página. El código elaborado en base al mismo es:
function x2=susdir(g,x1,err,li)
c=1;
while 1
x2=g(x1);
printf("%f: x= %f\n",c,x2);
if abs(x1/x2-1)<err break; end
- 4 - Hernán Peñaranda V.

if abs(x1-x2)<err break; end


if c++ == li printf("%f\n",x2); error("susdir, no conv.\n"); end
x1=x2;
end
end
susdir: Método de Sustitución Directa.

g: Función a resolver, forma x=g(x).


recibir g,x1,err,li x1: Valor asumido.
err: Error permitido.
li: Límite de iteraciones.
c=1

x 2 = g(x1)

[else] [|x 1/x 2-1| < err]

|x 1-x2| < err] devolver x 2

[else] [c = li]
devolver x2
c = c+1
mostrar x2 límite de
iteraciones
x1 = x2 alcanzado.
generar error

En el código la instrucción “printf” simplemente imprime los resultados


intermedios, lo que resulta útil para detectar errores. Tanto la precisión
como la exactitud se fijan en 15 dígitos y el método concluye cuando se
alcanza la precisión “|x1/x2-1|<1e-15” o la exactitud “|x1-x2|<1e-15”.
Una vez guardado y cargado el archivo en Jasymca, se puede probar el
mismo con la función “gx” resuelta manualmente:
>> susdir($gx,1.1,1e-15,100)
1.0: x= 3.984055387788424
2.0: x= 3.5520121320219027
3.0: x= 3.6184795992473147
4.0: x= 3.608323565491999
5.0: x= 3.609876925738287
6.0: x= 3.609639376571533
7.0: x= 3.609675704867658
8.0: x= 3.609670149216255
9.0: x= 3.60967099883715
10.0: x= 3.6096708689053827
11.0: x= 3.609670888775732
12.0: x= 3.6096708857369775
13.0: x= 3.6096708862016915
14.0: x= 3.6096708861306235
15.0: x= 3.609670886141492
16.0: x= 3.6096708861398294
17.0: x= 3.609670886140083
18.0: x= 3.6096708861400444
19.0: x= 3.60967088614005
20.0: x= 3.60967088614005
x2 = 3.60967088614005
Y como era de esperar, se obtienen los mismos resultados que en el
ejemplo manual. Una vez comprobado que el programa funciona correctamente,
ECUACIONES ALGEBRAICAS - 1 - 5 -

la impresión de los resultados intermedios puede ser cancelada. Para ello


simplemente se añade el símbolo de porcentaje (%) al principio de la la
orden “printf”. El símbolo de % en Jasymca sirve para escribir comentarios.
La característica más importante de un comentario es que no se ejecuta (no
es interpretada como código), por lo que puede ser empleada para anular
temporalmente partes de un programa o para aclarar (comentar) algunas
partes del mismo. Con esta modificación el programa queda en la forma:
function x2=susdir(g,x1,err,li)
c=1;
while 1
x2=g(x1);
%printf("%f: x= %f\n",c,x2);
if abs(x1/x2-1)<err break; end
if abs(x1-x2)<err break; end
if c++ == li printf("%f\n",x2); error("susdir, no conv.\n"); end
x1=x2;
end
end
Ahora, volviendo a cargar el archivo y llamando a “susdir” con “gx” se
obtiene directamente el resultado final:
>> susdir($gx,1.1,1e-15,100)
x2 = 3.60967088614005
Si en cualquier momento se quiere volver a ver los resultados interme-
dios, simplemente se quita el símbolo de porcentaje de “printf”.
Se puede ver gráficamente el lugar aproximado de la solución graficando
la función “x=g(x)” y la recta “x=y”:
>> hold on
Current plot held.
>> x1=1:0.1:7; y1=gx(x1); plot(x1,y1); plot(x1,x1)
- 6 - Hernán Peñaranda V.

Lamentablemente la instrucción “hold on” no funciona en los celulares,


por lo que no es posible hacer gráficas compuestas. En ese caso, no queda
otra alternativa que programar la función igualada a cero, lo que obliga a
crear dos funciones: una para “g(x)” (que es la que se manda a “susdir”,
como ya se hizo) y otra para “f(x)” (que se emplea para graficar la fun-
ción):
>> function r=fx(x) r=(53+3*sqrt(x)-8*x^0.8)^0.36-x; end
>> x1=1:0.1:7; y1=fx(x1); plot(x1,y1)

1.1.2. Ejemplos

1. Encuentre una de las soluciones de la siguiente función empleando el mé-


todo de Sustitución Directa.
−1
f ( x )=cos (x )+( 1+ x 2) =0
Primero se lleva la ecuación a la forma x=g(x):

(
x=acos −( 1+ x
2 −1
) )=g ( x)
En estos ejemplos se asumirá que no se puede ejecutar la instrucción
“hold on”, por lo que se programarán las dos funciones:
>> function r=fx1(x) r=cos(x)+1/(1+x^2); end
>> function r=gx1(x) r=acos(-1/(1+x^2)); end
Se grafica “fx1”:
>> x1=-10:0.1:10; y1=fx1(x1); plot(x1,y1)
El resultado (la gráfica) se presenta en la siguiente página y como se
puede ver existen varias soluciones. Tomando como valor inicial el que se
muestra en la figura (x=1.83) y llamando al método de sustitución directa
(con “gx1”), se obtiene:
ECUACIONES ALGEBRAICAS - 1 - 7 -

>> susdir($gx1,1.83,1e-15,100)
x2 = 1.8073753791824754
Que es la solución buscada.
2. Encuentre las soluciones del siguiente sistema de ecuaciones no linea-
les:

3 x 2.1 – 5 y=7.0
1.2
y +4 z=14.3
x+ y 2 +z 2=14.0
Primero llevamos el sistema de ecuaciones a las formas “f(x)=0” y
“x=g(x)”:
2.1
3 x −7.0
y=
5
14.3− y 1.2
z=
4
f (x )=x+ y +z 2 −14.0=0
2

3 x 2.1−7.0
y=
5
14.3− y 1.2
z=
4
x=14− y − z 2=g ( x)
2

Dado que en este caso se pide las tres soluciones, se programan como fun-
ciones “y”, “z”, así como las funciones “f(x)” y “g(x)”:
>> function r=fy(x) r=(3*x^2.1-7)/5; end
- 8 - Hernán Peñaranda V.

>> function r=fz(y) r=(14.3-y^1.2)/4; end


>> function r=fx2(x) y=fy(x); z=fz(y); r=x+y^2+z^2-14; end
>> function r=gx2(x) y=fy(x); z=fz(y); r=14-y^2-z^2; end
Ahora se elabora la gráfica:
>> x2=1.5:0.03:2; y2=fx2(x2); plot(x2,y2)

Donde como se puede ver existen dos soluciones, una cerca a 1.727 y otra
cerca a 1.943. Empleando estos valores como valores iniciales en el método
de sustitución directa se obtiene:
>> susdir($gx2,1.727,1e-15,100)
x2 = 1.9437970850630633
>> susdir($gx2,1.943,1e-15,100)
x2 = 1.9437970850630628
Como se puede ver, en este caso el método de sustitución directa sólo
converge hacia la segunda solución. La anterior entonces es una de las so-
luciones del sistema, el valor de “x”. Los valores de “y” y “z” se obtienen
de las funciones respectivas:
>> fy(ans)
ans = 1.022803520608523
>> fz(ans)
ans = 3.3181434377024375
3. Encuentre la o las soluciones de la siguiente función con una precisión
o error de 12 dígitos y un límite de 30 iteraciones.
f ( x 1 )=L1⋅x1 +V 1⋅y 1 – C 0=0
L
L1 = c
1− x1
ECUACIONES ALGEBRAICAS - 1 - 9 -

V 1=M – L 1
y1 =1.42 x1
Lc =L0 (1−x 0 )
M = L0+V 0
C 0= L0 x 0+V 0 y 0
L0=300 ; x 0 =0 ;
V 0 =100 ; y 0 =0.2
Se programa la función. Al igual que en los ejemplos anteriores se pro-
graman las dos formas “f(x)=0” (para la gráfica) y “x=g(x)” (para el méto-
do), siendo la función para la segunda forma:
C 0−V 1⋅y 1
x 1= =g ( x 1)
L1
function r=fx3(x1)
L0=300; x0=0; V0=100; y0=0.2;
C0=L0*x0+V0*y0;
M=L0+V0;
Lc=L0*(1-x0);
y1=1.42*x1;
L1=Lc/(1-x1);
V1=M-L1;
r=L1*x1+V1*y1-C0;
end

function r=gx3(x1)
L0=300; x0=0; V0=100; y0=0.2;
C0=L0*x0+V0*y0;
M=L0+V0;
Lc=L0*(1-x0);
y1=1.42*x1;
L1=Lc/(1-x1);
V1=M-L1;
r=(C0-V1*y1)/L1;
end
Se elabora la gráfica de la función para obtener valores iniciales apro-
ximados:
>> x3=0:0.01:0.8; y3=fx3(x3); plot(x3,y3)
El resultado (la gráfica) se muestra en la siguiente página y como se
puede ver existen dos soluciones: una cerca a 0.04366 y otra cerca a
0.7673. Empleando estos valores iniciales con el método de sustitución di-
recta se obtiene:
>> susdir($gx3,0.04366,1e-12,30)
x2 = 0.04587771997405932
>> susdir($gx3,0.7673,1e-12,30)
0.04587772006722565
susdir, no conv.
Como se puede ver, en el primer caso se obtiene la solución (con 12 dígi-
tos de precisión), mientras que en el segundo no converge en las 30 itera-
ciones establecidas como límite. Como se puede observar, por el último va-
lor devuelto, en el segundo caso el método converge hacia la primera solu-
ción, no a la segunda.
- 10 - Hernán Peñaranda V.

1.1.3. Ejercicios

1. Encuentre la solución de la siguiente ecuación, aplicando manualmente el


método de Sustitución Directa.

f (x )=x 3+2 x 2+3 x+4=0


2. Encuentre la o las soluciones de la siguiente función. Estime los valo-
res iniciales mediante la gráfica de la función.

f ( x )=2x+1 – e x =0
3. Encuentre la o las soluciones de la siguiente función. Estime los valo-
res iniciales mediante la gráfica de la función.

2 x 2+5 x y – 4 x=115
x+ y
e 5
+ x 2 y 2 – 70 y=15
4. Encuentre la o las soluciones de la siguiente función con 9 dígitos de
precisión (o exactitud) y un límite de 50 iteraciones. Estime los valo-
res iniciales mediante la gráfica de la función.

15 y + 20 x 2 − x 3 = 1500
x
2
9 z − 1.5 x + = 300
e 2
2 3
y − z − 5 x = 166.81

4.1. MÉTODO DE WEGSTEIN

El método de Wegstein busca acelerar el proceso de convergencia del méto-


do de Sustitución Directa, para ello lleva a cabo una interpolación o ex-
trapolación lineal empleando los dos primeros puntos del método de Sustitu-
ción Directa, tal como se puede ver en la siguiente figura:
ECUACIONES ALGEBRAICAS - 1 - 11 -

g x = g(x)

g2 g3
g(x)
g1

x1 x2 x3 x
Numéricamente el nuevo valor de “x” (x 3) se calcula tomando en cuenta la
ecuación de la línea recta:

g =a+b x (2.5)
Por lo tanto la pendiente de la recta que pasa a través de los dos puntos
(b) es:
g 1=a+b x1
g2=a+b x 2
g 1−g 2
b= (2.6)
x 1−x 2
Entonces el valor de la ordenada en el origen (a) es:
g1 – g2
g 1=a+ x
x1 – x2 1
g1 x1 – g2 x1
a=g 1 –
x1 – x2
g2 x1 – g1 x2
a= (2.7)
x 1−x 2
En consecuencia la ecuación de la línea recta que pasa a través de los
dos puntos es:
g 2 x1 – g 1 x 2 g 1−g 2
g= + x (2.8)
x 1−x 2 x 1− x 2
En la intersección x y g son iguales, por lo tanto:

g 2 x 1 – g 1 x 2 g 1−g 2
x 3= + x
x 1−x 2 x 1−x 2 3
- 12 - Hernán Peñaranda V.

(
x3 1 –
g1 – g 2
x1 – x 2
=
)g 2 x1 – g1 x2
x1 – x2

x3
( x 1 – x 2 – g 1+g 2
x1 −x 2 )g x –g x
= 2 1 1 2
x1 −x 2
g2 x1 – g1 x2
x 3= (2.9)
g 2 – g 1+x 1−x 2
Que es la ecuación de Wegstein. Con esta ecuación se calcula “x3” y con
“x3” se calcula el valor de la función (g 3=g(x3)). Si x3 y g3 son iguales el
proceso concluye, caso contrario se repite.
Si bien el método de Wegstein acelera el proceso de convergencia y mejora
la probabilidad de convergencia, tiene el inconveniente de no ser muy pre-
ciso, no por el método en sí, sino por los errores de redondeo que se gene-
ran al aplicar la ecuación 2.9.
Por ejemplo, para resolver la siguiente función:
0.36
x=( 52+3 √ x – 8 x 0.8 ) =g ( x )
Cuyo programa (elaborado ya en el método anterior) es:
function r=gx(x) r=(52+3*sqrt(x)-8*x^0.8)^0.36; end
Primero se calculan los valore iniciales (asumiendo un valor inicial
igual a 1.1):
>> x1=1.1, g1=gx(x1), x2=g1, g2=gx(x2)
x1 = 1.1
g1 = 3.984055387788424
x2 = 3.984055387788424
g2 = 3.5520121320219027
Luego se calculan los valores de “x3” y “g3”:
>> x3=(g2*x1-g1*x2)/(g2-g1+x1-x2), g3=gx(x3)
x3 = 3.6083015838499186
g3 = 3.609880287208415
Como sólo son iguales en los 3 primeros dígitos, se repite el proceso:
>> x1=x2; x2=x3; g1=g2; g2=g3; x3=(g2*x1-g1*x2)/(g2-g1+x1-x2), g3=gx(x3)
x3 = 3.6096696044949996
g3 = 3.6096710821408844
Ahora son iguales en 5 dígitos. Repitiendo el proceso tres veces más re-
sulta:
>> x1=x2; x2=x3; g1=g2; g2=g3; x3=(g2*x1-g1*x2)/(g2-g1+x1-x2), g3=gx(x3)
x3 = 3.609670886144548
g3 = 3.6096708861393614
>> x1=x2; x2=x3; g1=g2; g2=g3; x3=(g2*x1-g1*x2)/(g2-g1+x1-x2), g3=gx(x3)
x3 = 3.6096708860692996
g3 = 3.6096708861508695
>> x1=x2; x2=x3; g1=g2; g2=g3; x3=(g2*x1-g1*x2)/(g2-g1+x1-x2), g3=gx(x3)
x3 = 3.60968068878674
g3 = 3.6096693870297387
Como se puede observar en la tercera repetición la precisión incrementa a
11 dígitos (11 dígitos son iguales), pero en la cuarta disminuye a 10 y en
ECUACIONES ALGEBRAICAS - 1 - 13 -

la quinta ¡a 5!. Esto se debe, como se dijo, a los errores de redondeo que
se generan al aplicar la ecuación de Wegstein.
Si se vuelve a aplicar una vez más el método se obtiene:
>> x1=x2; x2=x3; g1=g2; g2=g3; x3=(g2*x1-g1*x2)/(g2-g1+x1-x2), g3=gx(x3)
x3 = 3.609670886126088
g3 = 3.6096708861421853
Que una vez más tiene 11 dígitos de precisión. Este comportamiento “osci-
latorio” se repite indefinidamente y el método nunca alcanza una precisión
superior a los 11 dígitos. En general, por este hecho, el método de
Wegstein sólo puede ser empleado para obtener soluciones con unos 10 dígi-
tos de precisión, siendo suficiente para ello unas 30 iteraciones.

4.1.1. Algoritmo y código

El algoritmo del método es el siguiente:


wegstein: Método de Wegstein.

g: función a resolver (x=g(x)).


recibir g,x1,err,li x1: Valor asumido.
err: Error permitido.
li: Límite de iteraciones.
c =1

g1 = g(x1)

x2 = g1

g2 = g(x2)

x3=(g2*x1-g1*x2)/(g2-g1+x 1-x2)

g3 = g(x3)

[else] [|x3/g3-1| < err]

[|x3-g3| < err]

[else] [c = li]

c = c+1
No
mostrar x3 converge
x 1 = x2

generar error devolver g 3


g1 = g2

x 2 = x3

g2 = g3

Se debe recordar que en este método la precisión está limitada a unos 9 o


10 dígitos. El código elaborado en base al algoritmo es:
function g3=wegstein(g,x1,err,li)
c=1; g1=g(x1); x2=g1; g2=g(x2);
while 1
x3=(g2*x1-g1*x2)/(g2-g1+x1-x2);
g3=g(x3);
printf("x3=%f; g3=%f\n",x3,g3);
if abs(x3/g3-1)<err break; end
if abs(x3-g3)<err break; end
- 14 - Hernán Peñaranda V.

if c++ == li error("error wegstein: %f\n",g3); end


x1=x2; x2=x3; g1=g2; g2=g3;
end
end
Igual que en “susdir”, la instrucción “printf” sólo sirve para probar la
correcta implementación del programa, mostrando los resultados intermedios.
Resolviendo la función anterior con este programa (con 10 dígitos de preci-
sión) se obtiene:
>> wegstein($gx,1.1,1e-10,30)
x3=3.6083015838499186; g3=3.609880287208415
x3=3.6096696044949996; g3=3.6096710821408844
x3=3.609670886144548; g3=3.6096708861393614
g3 = 3.6096708861393614
Una vez comprobada la correcta implementación del algoritmo, se puede
anular la impresión intermedia de resultados anteponiendo un % (comentario)
a “printf”.

4.1.2. Ejemplos

4. Resuelva el ejemplo 1, del método de sustitución directa, por el método


de Wegstein.

(
x=acos −( 1+ x
2 −1
) )=g ( x)
La función a resolver es:
>> function r=gx1(x) r=acos(-1/(1+x^2)); end
La función a graficar, así como la gráfica son las mismas que en el
ejemplo 1. Empleando el valor inicial de dicho ejemplo, pero con un error
igual a 1e-10, se obtiene:
>> wegstein($gx1,1.83,1e-10,30)
g3 = 1.8073753791849345
5. Resuelva el ejemplo 2, del método de sustitución directa, por el método
de Wegstein.

3 x 2.1−7.0
y=
5
14.3− y 1.2
z=
4
x=14− y − z 2=g ( x)
2

La función a resolver es:


>> function r=gx2(x) y=fy(x); z=fz(y); r=14-y^2-z^2; end
Siendo las funciones “fy” y “fz”:
>> function r=fy(x) r=(3*x^2.1-7)/5; end
>> function r=fz(y) r=(14.3-y^1.2)/4; end
La función a graficar, así como la gráfica son las mismas que en dicho
ejemplo. Empleando los valores iniciales del mencionado ejemplo, pero con
un error igual a 1e-9, se obtiene:
>> wegstein($gx2,1.727,1e-9,30)
g3 = 1.72652614807131
>> wegstein($gx2,1.943,1e-9,30)
ECUACIONES ALGEBRAICAS - 1 - 15 -

g3 = 1.9437970850870676
En este caso, aún cuando la precisión es menor, el método de Wegstein
converge hacia las dos soluciones y no solo una como ocurre con el método
de sustitución directa.
6. Resuelva el ejemplo 3, del método de sustitución directa, por el método
de Wegstein.
C 0−V 1⋅y 1
x 1= =g ( x 1)
L1
L
L1 = c
1−x 1
V 1 =M – L1
y 1=1.42 x 1
L c= L0 (1− x 0)
M =L 0+V 0
C 0=L 0 x 0 +V 0 y 0
L 0=300 ; x 0=0 ;
V 0=100 ; y 0=0.2
El programa de la función a resolver es:
function r=gx3(x1)
L0=300; x0=0; V0=100; y0=0.2;
C0=L0*x0+V0*y0;
M=L0+V0;
Lc=L0*(1-x0);
y1=1.42*x1;
L1=Lc/(1-x1);
V1=M-L1;
r=(C0-V1*y1)/L1;
end
El programa de la función a graficar, así como la gráfica obtenida son
las mismas que en dicho ejemplo. Empleando los valores iniciales del men-
cionado ejemplo se obtiene:
>> wegstein($gx3,0.04366,1e-10,30)
g3 = 0.04587771997387189
>> wegstein($gx3,0.7673,1e-10,30)
g3 = 0.7675025617885648
Una vez más, aun cuando la precisión es menor, el método de Wegstein con-
verge hacia las dos soluciones existentes (y no a una como ocurre con el
método de sustitución directa).

4.1.3. Ejercicios

5. Encuentre la solución de la siguiente ecuación, aplicando manualmente el


método de Wegstein.

f (z )=ln (z )+e z+3 – z 3.1 – 42=0


6. Encuentre la solución de la siguiente ecuación, con 9 dígitos de preci-
sión, empleando el método de Wegstein (muestre los valores intermedios).
Estime el valor inicial elaborando la gráfica de la función.
- 16 - Hernán Peñaranda V.

f (z )=ln (z )+e z+3 – z 3.1 – 42=0


7. Encuentre la solución de la siguiente ecuación, con 10 dígitos de preci-
sión, empleando el método de Wegstein. Estime el valor inicial elaboran-
do la gráfica de la función.

f (x )=x 3−1.95x 2−6.77x+9.44=0


8. Encuentre la solución de la siguiente ecuación, con 7 dígitos de preci-
sión, empleando el método de Wegstein. Estime el valor inicial elaboran-
do la gráfica de la función.
P⋅V V Ω b
f (V )= – + a F
R⋅T V – b Ωb V +b
Ω RT c
b= a
Pc
1 2
F=
Tr[1+( 0.480+1.574 ω−0.176 ω 2 ) (1−T 0.5
r ) ]
T
T r=
Tc
−1
Ωa=[ 9 ( 2 1/ 3−1 ) ]
21 /3−1
Ωb =
3
T =400 ; P =20 ; T c =190.6 ;
P c =45.4 ; ω=0.008 ; R=0.08206

Vous aimerez peut-être aussi