Metodos Numericos en Calc-Java - 2011
Metodos Numericos en Calc-Java - 2011
Metodos Numericos en Calc-Java - 2011
11..IINNTTRROODDUUCCCCIIÓÓNN AA CCAALLCC--JJAAVVAA
11..11.. IInnttrroodduucccciióónn
Donde se nos informa que debemos completar algunos pasos para configurar
la interfaz del usuario, básicamente se trata de configurar tres teclas: las
teclas izquierda, derecha y de borrar (clear o “C”).
Para pasar a la siguiente pantalla simplemente pulsamos el botón corres-
pondiente a “ok”, con lo que aparece la siguiente pantalla:
INTRODUCCIÓN A CALC-JAVA - 3 -
Que simplemente nos informa que ya hemos concluido la primera etapa. En-
tonces pasamos a la siguiente pulsando el botón “ok”, con ello aparece la
siguiente pantalla:
INTRODUCCIÓN A CALC-JAVA - 5 -
Ahora el programa nos pide que pulsemos el botón que en nuestro celular
empleamos para borrar. Normalmente este botón tiene le letra “C” (de clear),
pero puede variar según los modelos y las marcas. Para concluir con esta
etapa simplemente pulsamos el botón que en nuestro celular empleamos para
borrar. Si su celular no cuenta con dicha tecla, entonces deberá pulsar la
tecla “#” (numeral). En cualquier de los dos casos aparece la siguiente pan-
talla:
Que simplemente nos informa que hemos concluido la segunda etapa. Enton-
ces pasamos a la tercera etapa pulsando el botón correspondiente a la tecla
“ok”, con lo que aparece la siguiente pantalla:
- 6 - Hernán Peñaranda V.
Para volver a un menú previo (o salir del menú principal) se pulsa la te-
cla de borrado.
Ahora que sabemos cómo navegar a través de los menús de Calc-Java estamos
en condiciones de calcular el resultado de algunas expresiones matemáticas.
Comenzaremos con algunas operaciones básicas. Para ello debemos tomar en
cuenta que cuando se trabaja con Calc-Java se trabaja en el modo “RPN” (No-
INTRODUCCIÓN A CALC-JAVA - 9 -
Ahora que tenemos los dos datos, elegimos la operación, es decir pulsamos
la tecla correspondiente al botón “+”, con lo que obtenemos el resultado:
Ahora sumamos esos dos valores para obtener el valor del numerador:
Finalmente dividimos estos dos valores (que son los valores del numerador
y denominador) para obtener el valor final de la expresión: /:
- 12 - Hernán Peñaranda V.
11..44..11.. EEjjeemmppllooss
sin(9.2) − cos(8.32)
1. 3
tan(6.89)
9.2/trig/normal/sin
8.32/trig/normal/sin
basic/-
6.89/trig/normal/tan
basic//
3/math/pow/x√y
Con lo que en Calc-Java se obtiene:
0.9893394872476779
7/trig/normal/sin; math/simple/”1/x”
9.2/trig/normal/cos; math/simple/”1/x”
+
3.4/trig/normal/tan; math/simple/”1/x”
+
math/pow/ln
9.3/math/pow/yx
INTRODUCCIÓN A CALC-JAVA - 13 -
Siendo el resultado:
32.46983884042057
sin(45°) − cos(70°)
4. 5
3.4 tan(80°)
trig/more/R->D->G
45/trig/normal/sin
70/trig/normal/cos
basic/-
3.4/ENTER
80/trig/normal/tan
basic/*
basic//
5/math/pow/x√y
Siendo el resultado:
0.4523214240258878
( 6.8*sin(125°) )
3
6. Entero más pequeño mayor o igual al resultado de:
(6 + 5)! 53
7. Resíduo de la división:
(3 + 4) 7
6/ENTER
5/+
math/prob/x!
5/ENTER
3/math/pow/yx
basic/*
3/ENTER
4/+
7/math/pow/yx
math/misc/mod
Siendo el resultado:
- 14 - Hernán Peñaranda V.
576506
(4(6 + 3))!
8.
e85.4
4/ENTER
6/ENTER
3/+
basic/*
math/prob/x!
85.4/math/pow/ex
math/simple/√
basic//
Siendo el resultado:
1.062088659949585e23
6
e6!+5
9. 4.3
3.456.75
6/math/prob/x!
5/ENTER
6/math/pow/yx
+
math/pow/ex
3.45/ENTER
6.75/ENTER
4.3/math/pow/yx
math/pow/yx
basic//
Siendo el resultado:
4.436305712367519e5118
(3 + 4!) − 63.2
10. 3
e6.5 + cos(6.7°)
trig/more/R->D->G (hasta que aparezca “DEG” en pantalla)
3/ENTER
4/math/prob/x!
+
6/ENTER
3.2/math/pow/yx
basic/-
6.5/math/pow/ex
6.7/trig/normal/cos
+
basic//
3/math/pow/x√y
Siendo el resultado:
-0.759450757226137
sinh(6.5) cosh(9.2) tanh(9.3)
11.
45.2 + 6.32.2 + 6!
6.5/trig/hyp/sinh
9.2/trig/hyp/cosh
INTRODUCCIÓN A CALC-JAVA - 15 -
basic/*
9.3/trig/hyp/tanh
basic/*
45.2/ENTER
6.3/ENTER
2.2/math/pow/yx
+
6/math/prob/x!
+
basic//
Siendo el resultado:
200.778365413566
11..44..22.. EEjjeerrcciicciiooss
log(6.75)
2. cos(30.2°)
6.2 + 36.7
7.2 + 9.67
3. sin -1
8.43
( sinh(4.3) )3.2 + ( cosh(2.3) )5.4
tan(9.8)
4. e
5. 3 ( 50!) ( 47 )
53 − 22 + 3!
6.
(7 − 3) 2
5!+ 34
10. Cociente de la división:
43
Para programar una función en Calc-Java se siguen los mismos pasos que
para encontrar el valor de una expresión matemática, sólo que en una función
se trabaja con valores cambiantes. Por esa razón, por el hecho de que cam-
bian, dichos valores se conocen como “variables”.
En Calc-Java, las variables pueden ser implementadas en dos formas: como
posiciones de memoria o como posiciones en la pila.
Supongamos que queremos programar la siguiente función:
f ( x) = x3 (2.1)
Es decir queremos crear una función que calcule el cubo de un número. Así
si “x” es 3, el valor de la función es:
f(3)=33=3*3*3=27
Si “x” es 2.1, el valor de la función es:
f(2.1)=2.13=2.1*2.1*2.1=9.261
Y así para cualquier valor de “x”. El propósito de elaborar un programa
es justamente el evitarnos el trabajo de realizar una y otra vez las mismas
operaciones. Cuando se elabora un programa, realizamos las operaciones una
sola vez (cuando elaboramos el programa) y luego es el programa quien se
encarga de ejecutarlas automáticamente las veces que se requiera.
Vemos entonces como podemos programar esta simple función en Calc-Java.
Haremos primero una versión del programa trabajando sólo con la pila. Cuando
se trabaja en la pila, los datos (en este caso el valor de “x”) deben encon-
trarse en la pila (en la primera o primeras posiciones de la pila). Aún en
un programa tan sencillo como el presente, es necesario tener clara la lógi-
ca que seguirá el programa. En este caso por ejemplo para calcular el cubo
de un número necesitamos multiplicar tres veces el mismo valor, dado que el
valor a multiplicar se encuentra en la pila, lo que debemos hacer es dupli-
car dos veces ese valor (con ENTER) y luego multiplicar los tres valores que
quedan en la pila.
Ahora que tenemos clara la lógica, elaboremos el programa. Para ello es-
cribimos en la pila un valor de prueba cualquiera, por ejemplo 1.1 (este es
el valor de x):
- 18 - Hernán Peñaranda V.
Con ello el programa estaría concluido. Podemos revisar los pasos que
hemos programado pasando a la ventana del monitor (basic/[->]):
PROGRAMACIÓN DE FUNCIONES EN CALC-JAVA - 21 -
Como se puede observar, la marca visual que nos indica que estamos en la
ventana del monitor es el triángulo verde que aparece en el mismo. Para re-
correr el programa en el monitor, se emplean las teclas de navegación arri-
ba, abajo, izquierda (para recorrer una página) y derecha (para avanzar una
página). A medida que recorremos el programa en el monitor, el marcador ver-
de nos va indicando en qué paso del programa nos encontramos, así en las
tres siguientes pantallas nos encontramos en los pasos 1, 3 y 4 respectiva-
mente.
Observe también que los botones que normalmente corresponden a las teclas
“ENTER” y “+”, ahora han cambiado a “SST” y “DEL” respectivamente.
“SST” ejecuta el paso en el que nos encontramos y pasa al siguiente.
“DEL” borra el paso en el que nos encontramos.
Por ejemplo, si vamos al segundo paso del programa y ejecutamos esa orden
(ENTER), el valor de la pila (el resultado del programa) se duplica. Si lue-
go ejecutamos la siguiente orden (la multiplicación), los dos valores de la
pila (el resultado del programa y su copia) se multiplican:
- 22 - Hernán Peñaranda V.
Una vez que los cálculos han sido detenidos es posible ampliar o reducir
la gráfica empleando el botón central del navegador para ampliar la gráfica
y la tecla 1 para reducirla. Cuando se presiona el botón central del navega-
dor aparece un recuadro blanco que puede ser reducido más aún pulsando otra
vez pulsando repetidas veces el botón central del navegador:
Este recuadro puede ser movido a través de la pantalla con las teclas de
navegación (arriba, abajo, izquierda, derecha), hasta el lugar que se quiere
ampliar. Mientras se mueve el recuadro la gráfica puede quedar con partes
borrosas, tal como se muestra en las siguientes figuras, sin embargo, ello
no tiene mayor importancia, pues como veremos, al ampliar la gráfica vuelve
a ser dibujada.
PROGRAMACIÓN DE FUNCIONES EN CALC-JAVA - 27 -
Ahora guardamos ese valor (el valor de “x”) en una posición de memoria
(en nuestro caso la memoria 0):
Y se repite dos veces más el proceso (para recuperar los otros dos valo-
res de “x”): special/mem/RCL/<0-3>/0; special/mem/RCL/<0-3>:
PROGRAMACIÓN DE FUNCIONES EN CALC-JAVA - 31 -
Y como era de esperar se obtienen los mismos resultados que con el pro-
grama anterior.
Ahora que ya sabemos crear un programa, elaboraremos un programa para una
función un tanto más elaborada:
(52 + 3 )
0.36
f ( x)= x − 8 x 0.8 − x= 0
Ahora debemos calcular el valor de “x0.8”, por lo que una vez más necesi-
tamos una copia del valor de “x”, que casualmente se encuentra otra vez en
la posición 2. Debe tomar en cuenta que la primera posición es la número 0 y
que las posiciones relativa en la pila cambian constantemente, por lo que es
sólo una casualidad que otra vez el valor de “x” (1.1) se encuentre en la
misma posición. Hacemos una copia del valor de “x” (special/stack/more/RCL
st#/<0-3>/2):
PROGRAMACIÓN DE FUNCIONES EN CALC-JAVA - 35 -
Vemos que la solución está muy cerca a 3.6, por lo que podríamos concluir
que esta es la solución aproximada de la función.
Para encontrar una solución más exacta, podemos recurrir al solucionador
(solve) de Calc-Java.
Para ello escribimos en la pila dos valores de “x” que sabemos se encuen-
tran a ambos lados de la solución, por ejemplo para esta ecuación dos valo-
res adecuados pueden ser 3 y 4 (3/ENTER; 4/ENTER), porque como vimos en la
gráfica, para 3 el valor de la función es positivo y para 4 negativo.
Ahora simplemente vamos a la opción “solve” y Calc-Java se encarga de en-
contrar el resultado más exacto:
- 38 - Hernán Peñaranda V.
22..11..11.. EEjjeemmppllooss
Para graficar la función entre x=-5 y x=0, escribimos primero esos dos
límites (-5/ENTER; 0/ENTER), luego calculamos los límites para “y” con estos
mismos valores de “x”: -5/mode/prog/run/fx1; 0/mode/prog/run/fx1. Una vez
que tenemos los cuatro límites elaboramos la gráfica (mo-
de/prog/draw/y=f(x)/fx1):
3. ) 5 x10 − 38 x9 + 21x8 − 5π x 6 − 3π x5 − 5 x 2 + 8 x − =
Programe la función: f ( x= 3 0 . Luego
encuentre los valores de la función para x= 1.5. Grafique la función
entre “x=-1->1, y=-20->10” y entre “x=6->8, y=-6e7->6e8”. En base a la
gráfica estime la solución aproximada de la función. Calcule luego una
solución más exacta con “solve”. Derive la función para “x=-0.5” e in-
tegre la función entre 7.0 y 7.8, con 12 dígitos de precisión.
El programa para esta función, trabajando con “x” en la pila, es el si-
guiente: 1.1/mode/prog/new/<>/fx6:
1 5
2 stack/RCL st# 1
3 10
4 math/pow/yx
5 *
6 38
7 stack/RCL st#2
8 9
9 math/pow/yx
10 *
- 48 - Hernán Peñaranda V.
11 -
12 21
13 stack/RCL st# 2
14 8
15 math/pow/yx
16 *
17 +
18 5
19 trig/π
20 *
21 stack/RCL/st# 2
22 6
23 math/pow/yx
24 *
25 -
26 3
27 trig/π
28 *
29 stack/RCL st#2
30 5
31 math/pow/yx
32 *
33 -
34 5
35 stack/RCL st# 2
36 x2
37 *
38 -
39 8
40 stack/move dn# 2
41 *
42 +
43 3
44 -
45 [prg end]
Haciendo correr el programa con 0.6, “f(0.5)”, se obtiene:
0.5/mode/prog/run/fx6 => -0.7772659248357457
Graficamos la función entre -1->1, -20->10:
-1/ENTER; 1/ENTER; -20/ENTER; 20/ENTER; mode/prog/draw/y=f(x)/fx6:
PROGRAMACIÓN DE FUNCIONES EN CALC-JAVA - 49 -
y1.2 + 4 z =
14.3
x + y2 + z2 =14.0
Si todas las ecuaciones del sistema pueden ser colocadas en función de
una sola variable, como ocurre en el presente caso, entonces es posible re-
solver el sistema de ecuaciones no lineales de la misma forma en que se re-
suelve una ecuación con una sola variable. En este sistema por ejemplo, si
conocemos “x” podemos calcular “y” con la primera ecuación, luego con “y”
podemos calcular “z” con la segunda, por lo tanto el sistema puede ser es-
crito como una función de una sola variable:
- 50 - Hernán Peñaranda V.
f ( x) =x + y 2 + z 2 − 14.0 =0
3 x 2.1 − 7.0
y=
5
14.3 − y1.2
z=
4
En este caso, puesto que además queremos conocer los valores de “y” y “z”
(las tres soluciones) deberemos trabajar con posiciones de memoria.
Como siempre antes de comenzar a realizar el programa se debe colocar un
valor de prueba en la pila (digamos 1.1.). La lógica que se debe seguir es
la siguiente: a) Con el valor de “x” calcular el valor de “y”; b) Con el
valor de “y” calcular el valor de “z”; c) Con los valores de “x”, “y” y “z”
calculados, calcular el valor de la función “f(x)”.
Además debemos decidir cuáles serán las posiciones de memoria para cada
una de las variables. Para este ejemplo las posiciones de memoria serán: “0
para x”, “1 para y” y “2 para z”.
El programa elaborado siguiendo la lógica descrita es el siguiente
(1.1/mode/prog/new/<>/fx3/OK):
1 mem/STO 0
2 Clear
3 3
4 mem/RCL 0
5 2.1
6 math/pow/yx
7 *
8 7
9 -
10 5
11 /
12 mem/STO 1
13 clear
14 14.3
15 mem/RCL 1
16 1.2
17 math/pow/yx
18 -
19 4
20 /
21 mem/STO 2
22 clear
23 mem/RCL 0
24 mem/RCL 1
25 x2
26 +
27 mem/RCL 2
28 x2
29 +
30 14
31 -
32 [prg end]
Calculamos algún valor de la función, por ejemplo para x=1.5:
1.5/mode/prog/run/fx3, con el cual obtenemos: 0.2769102679153484. Los valo-
res respectivos de “y” y “z” para este valor de “x” son:
Valor de x: special/mem/RCL/<0-3>/1 => 0.005862654389754292
Valor de y: special/mem/RCL/<0-3>/2 => 3.574475611498679
PROGRAMACIÓN DE FUNCIONES EN CALC-JAVA - 51 -
x1 / 2 + z 2 = 35
8
y + e z / 2 − = 30
z
w + z 2 − 2 z = 31
x + w + y = 39
Primero colocamos una de las ecuaciones del sistema en la forma f(x)=0
y las otras en función de “x”:
f ( x) = x + w + y − 39 = 0
=z 35 − x
8
y = 30 + − e z /2
z
w = 31 − z 2 + 2 z
La lógica para programar esta función es: a) Con el valor conocido de “x”
se calcula “z”; b) Con el valor de “z” se calcula “y”; c) Con el valor de
“z” se calcula “w”; d) Con los valores calculados de “y” y “w” se calcula el
valor de la función de x “f(x)”.
Las posiciones de memoria para este programa son: 0: x; 1: y; 2: z; 3: w.
El programa elaborado siguiendo la lógica descrita y las posiciones de
memoria indicadas es el siguiente (1.1/mode/prog/new/<>/fx4):
1 mem/STO 0
2 Clear
3 35
4 mem/RCL 0
5 √x
6 -
7 √x
8 mem/STO 2
9 clear
10 30
11 8
12 mem/RCL 2
13 /
14 +
15 mem/RCL 2
16 2
17 /
18 math/pow/ex
-
19
20 mem/STO 1
PROGRAMACIÓN DE FUNCIONES EN CALC-JAVA - 53 -
21 clear
22 31
23 mem/RCL 2
24 x2
25 -
26 2
27 mem/RCL 2
28 *
29 +
30 mem/STO 3
31 clear
32 mem/RCL 0
33 mem/RCL 3
34 +
35 mem/RCL 1
36 +
37 39
38 -
39 [prg end]
Probamos el programa con algún valor, por ejemplo 10.2:
10.2/mode/prog/run/fx4 => -3.682698837202406.
Ahora graficamos la función entre los límites dados: 0/ENTER; 20/ENTER;
-20/ENTER; 20/ENTER; mode/prog/draw/y=f(x)/fx4:
Como se puede observar, una solución aproximada podría ser 13. Encontre-
mos entonces una solución más exacta con “solve”: 12/ENTER; 14/ENTER; mo-
de/prog/more/solve/fx4 => 13.18918859759894. Siendo los valores de “y”: spe-
cial/RCL/<0-3>/1 => 14.97763572398031, “z”= special/RCL/<0-3>/2 =>
5.600741714286865, “w” = special/RCL/<0-3>/3 => 10.83317567842075.
De esa manera habríamos encontrado las cuatro soluciones de este sistema.
22..11..22.. EEjjeerrcciicciiooss
2 x 2 + 5 xy − 4 x = 115
x+ y
e 5 + x 2 y 2 − 70 y = 15
6. Programe el sistema de ecuaciones no lineales que se presenta al pie de
la pregunta como una función de una sola variable: “x”. Luego grafique
la función entre los límites que considere adecuados. En base a la
gráfica estime las soluciones aproximadas que se encuentran en ese in-
tervalo. Luego, con “solve” encuentre las soluciones más exactas, en-
contrando también el respectivo valor de “y” y “z”.
15 y + 20 x 2 − x 3 = 1500
x
9 z − 1.5 x 2 + e 2 = 300
y 2 − z 3 − 5 x = 166.81
ECUACIONES ALGEBRAICAS CON UNA INCÓGNITA - 1 - 55 -
(52 + 3 )
0.36
f ( x)= x − 8 x 0.8 − x= 0
Lo primero que hacemos es despejar una de las “x”, en este caso la más
sencilla de despejar es la última:
( )
0.36
x = 52 + 3 x − 8 x 0.8 =g ( x)
Como se puede observar los dos últimos valores calculados son iguales,
por lo tanto esa es la solución de la ecuación (que es el mismo resultado
encontrado con “solve” en el tema anterior).
Gráficamente, cuando la función está en la forma “x=g(x)”, la solución se
encuentra en la intersección entre la línea “x=y” (a 45 grados) y la función
despejada “g(x)”, tal como se muestra en la siguiente gráfica, donde además
se muestra cómo, a partir de un valor inicial asumido “x 1 ”, el método se va
acercando, con cada iteración, a la solución:
y x=y
y2 g(x)
solución
y1
x1 x2 x
33..11..11.. PPrrooggrraammaa
LBL (label = etiqueta) nos permite fijar un punto dentro del programa al
cual podemos saltar desde cualquier otra parte del mismo. Se emplea en con-
junción con GTO (go to = ir a) que justamente permite hacer el salto mencio-
nado. En un programa Calc-Java se puede incluir un máximo de 16 etiquetas
(del 0 al 15). RTN (return = retorno) permite volver de un sector del pro-
grama, al cual se saltó con GSB (go subroutine = ir a subrutina) de manera
que el programa continúe con la siguiente instrucción ubicada después del
GSB que hizo la llamada.
Tanto GTO, como GSB permiten saltar a un sector etiquetado del programa,
pero GSB, continúa con la siguiente instrucción del programa una vez que en
el sector etiquetado se ejecuta la instrucción RTN.
El menú “x?y” tiene las instrucciones que permiten comparar dos valores
de la pila:
ECUACIONES ALGEBRAICAS CON UNA INCÓGNITA - 1 - 59 -
En estas instrucciones, al igual que en todas las que implican dos valo-
res, “x” es el último valor de la pila y “y” el penúltimo. En todas estas
instrucciones si el resultado de la comparación es verdadero, se ejecuta la
siguiente instrucción del programa, caso contrario se salta la siguiente
instrucción y se ejecuta la subsiguiente.
En el menú “x?0” se tienen las instrucciones que permiten comparar un va-
lor que se encuentra en la pila con 0:
33..11..22.. EEjjeemmppllooss
Donde se puede ver que la solución se encuentra entre -1 y -2, por lo que
un valor inicial adecuado podría ser -1.5.
Ahora básicamente editamos el programa con el método de Sustitución Dire-
cta (mode/prog/append/sd), cambiamos la precisión, límite de iteraciones,
valor inicial y reemplazamos el bloque etiquetado con LBL 0, con el programa
empleado para obtener la gráfica, sólo que en lugar de un resultado imagina-
rio devolvemos un resultado real. Las partes modificadas del programa “sd”
son las siguientes:
1 1e-9 ;Precisión (err)
2 100.00001 ;Límite de iteraciones (100)
3 mem/STO 15 ;Contador almacenado en la memoria 15
4 clear ;Borrado del valor del contador
5 -1.5 ;Valor asumido de x: x 1
…
34 prog/flow/LBL 0 ;Inicio del bloque con la función a resolver
35 ENTER
36 3
37 math/pow/yx
38 2
39 stack/move dn# 2
40 x2
41 *
- 64 - Hernán Peñaranda V.
42 +
43 4
44 +
45 3
46 /
47 +/-
48 prog/flow/RTN ;Fin la función a resolver
49 [prg end]
Haciendo correr el programa se obtiene:
mode/prog/run/gx => -1.65062919001334
Que es la solución de la función con 9 dígitos de precisión.
2. Como segundo ejemplo, emplearemos el programa elaborado para resolver
el sistema de tres ecuaciones que se presenta al pie de la pregunta,
con 10 dígitos de precisión y un límite de 70 iteraciones. Para estimar
el valor inicial del método debe graficar previamente la ecuación igua-
lada a “x” entre x=1, x=2, y=-5, y=5.
3x 2.1 − 5 y = 7.0
y 1.2 + 4 z = 14.3
x + y 2 + z 2 = 14.0
Primero colocamos una de las ecuaciones del sistema en la forma x=g(x), y
las otras en función de la variable independiente:
x = g ( x) = 14.0 − y 2 − z 2
3 x 2.1 − 7.0
y=
5
14.3 − y1.2
z=
4
Programamos esta función, devolviendo el resultado (valor de “x” y
“g(x)”) como un número complejo: mode/prog/new/gx2
1 3
2 stack/RCL st# 1
3 2.1
4 math/pow/yx
5 *
6 7
7 -
8 5
9 /
10 mem/STO 1
11 clear
12 14.3
13 mem/RCL 1
14 1.2
15 math/pow/yx
16 -
17 4
18 /
19 mem/STO 2
20 clear
21 14
22 mem/RCL 1
23 x2
ECUACIONES ALGEBRAICAS CON UNA INCÓGNITA - 1 - 65 -
24 -
25 mem/RCL 2
26 x2
27 -
28 trig/coord/r*cplx
29 [prg end]
Graficamos esta función (y la ampliamos luego para ver con más claridad
el lugar de las soluciones):
mode/prog/draw/y=f(x)/gx2:
Vemos entonces que las soluciones se encuentran entre 1.7 y 1.8 y entre
1.9 y 2.0, por lo que valores iniciales aproximados para el método de Susti-
tución Directa podrían ser 1.74 y 1.95.
Ahora modificamos el programa “sd” (Sustitución Directa) para cambiar la
precisión, el límite de iteraciones, los valores iniciales (comenzando con
1.74) y la función a resolver. Las partes modificadas del programa son:
1 1e-10 ;Precisión (err)
2 70.00001 ;Límite de iteraciones (70)
3 mem/STO 15 ;Contador almacenado en la memoria 15
4 clear ;Borrado del valor del contador
5 1.74 ;Valor asumido de x: x 1
…
6 prog/flow/LBL 0 ;Inicio del bloque con la función a resolver
7 3
8 stack/move dn# 1
9 2.1
10 math/pow/yx
11 *
12 7
13 -
14 5
15 /
16 mem/STO 1
17 clear
18 14.3
19 mem/RCL 1
20 1.2
21 math/pow/yx
22 -
23 4
- 66 - Hernán Peñaranda V.
24 /
25 mem/STO 2
26 clear
27 14
28 mem/RCL 1
29 x2
30 -
31 mem/RCL 2
32 x2
33 -
34 prog/flow/RTN ;Fin la función a resolver
35 [prg end]
Haciendo correr el programa se obtiene:
mode/prog/run/sd => 1.943797085076064
Es decir el método converge hacia la segunda solución, no la primera como
se quería. Empleando un valor inicial igual a 1.95, es decir cambiado el
valor del paso 5, se obtiene:
mode/prog/run/sd => 1.943797085067777
Es decir la misma solución que el caso anterior (por supuesto con los 10
dígitos de precisión especificados). Analizando la gráfica y tomando en
cuenta la forma en que opera el método de Sustitución Directa, podemos ver
que si se da un valor inicial por debajo de la primera raíz, en cada itera-
ción el método se alejará más y más de la solución (es decir diverge de la
solución) y si se da un valor por encima de la primera raíz igualmente se
aleja de esta raíz y converge hacia la segunda, es por eso que en ambos ca-
sos se obtiene la segunda solución y no la primera.
En consecuencia, en este caso en particular, el método de Sustitución Di-
recta no puede encontrar la primera raíz (o solución). Como ya se dijo, el
método de sustitución directa es un método inestable y no es raro encontrar
casos como este cuando se trabaja con el mismo.
3. Como tercer ejemplo, emplearemos “sd” para resolver la función que se
presenta al pie de la pregunta, calculando el resultado con 12 dígitos
de precisión y un límite de 50 iteraciones. Para estimar el valor ini-
cial del método se graficará la función igualada a “x 1 ” entre los lími-
tes: 0, 1, 0 y 1. Se requiere conocer también los valores de “y 1 ”,
“L 1 ”, y “V 1 ”. Los valores de “L 0 ”, “x 0 ”, “V 0 ” y “y 0 ” son: “L 0 =300”,
“x 0 =0”, “V 0 =100”, “y 0 =0.2”.
f ( x1=
) L1 * x1 + V1 * y1 − C=
0 0
Lc
L1 =
1 − x1
V=
1 M − L1
y1 = 1.420 x1
=
Lc L0 (1 − x0 )
M= L0 + V0
=
C0 L0 x0 + V0 y0
Primero colocamos función (f(x1)) en la forma x=g(x), despejando “x 1 ” de
la función:
C0 − V1 * y1
=x1 g=
( x1 )
L1
ECUACIONES ALGEBRAICAS CON UNA INCÓGNITA - 1 - 67 -
46 mem/STO 9
47 clear
48 mem/RCL 6
49 mem/RCL 9
50 -
51 mem/STO 10
52 clear
53 mem/RCL 5
54 mem/RCL 10
55 mem/RCL 8
56 *
57 -
58 mem/RCL 9
59 /
60 mem/RCL 0
61 stack/xy
62 trig/coord/r*cplx
63 [prg end]
Graficando esta función se obtiene:
0/ENTER; 1/ENTER; 0/ENTER; 1/ENTER; mode/prog/draw/y=f(x)/gx3
Como se puede ver en este caso también existen dos soluciones: una entre
0 y 0.1 y otra entre 0.7 y 0.8, sin embargo, por la forma de la curva pode-
mos prever que el método sólo convergerá hacia la primera raíz (o solución)
pero nunca a la segunda. De todas formas probaremos el método con dos valo-
res iniciales aproximados, que pueden ser: 0.5 y 0.75, comenzando con 0.75
(que debería converger a la segunda solución).
Las modificaciones hechas al programa “sd” (es decir cambiar el error, el
límite de iteraciones, el valor inicial asumido y la función a resolver) son
las siguientes:
1 1e-12 ;Precisión (err)
2 50.00001 ;Límite de iteraciones (50)
3 mem/STO 15 ;Contador almacenado en la memoria 15
4 clear ;Borrado del valor del contador
5 0.75 ;Valor asumido de x: x 1
…
34 prog/flow/LBL 0 ;Inicio del bloque con la función a resolver
35 mem/STO 0
36 clear
37 300
ECUACIONES ALGEBRAICAS CON UNA INCÓGNITA - 1 - 69 -
38 mem/STO 1
39 clear
40 0
41 mem/STO 2
42 clear
43 100
44 mem/STO 3
45 clear
46 0.2
47 mem/STO 4
48 clear
49 mem/RCL 1
50 mem/RCL 2
51 *
52 mem/RCL 3
53 mem/RCL 4
54 *
55 +
56 mem/STO 5
57 clear
58 mem/RCL 1
59 mem/RCL 3
60 +
61 mem/STO 6
62 clear
63 mem/RCL 1
64 1
65 mem/RCL 2
66 -
67 *
68 mem/STO 7
69 clear
70 1.42
71 mem/RCL 0
72 *
73 mem/STO 8
74 clear
75 mem/RCL 7
76 1
77 mem/RCL 0
78 -
79 /
80 mem/STO 9
81 clear
82 mem/RCL 6
83 mem/RCL 9
84 -
85 mem/STO 10
86 clear
87 mem/RCL 5
88 mem/RCL 10
89 mem/RCL 8
90 *
91 -
92 mem/RCL 9
93 /
94 prog/flow/RTN ;Fin la función a resolver
95 [prg end]
- 70 - Hernán Peñaranda V.
33..11..33.. EEjjeerrcciicciiooss
Puntos iniciales
Nuevo valor
de prueba
x6 x
4
0 x1 x2 x5 x3
Valores iniciales
x
Solución
Nuevo punto
f ( x1 )= a + bx1 (4.1)
f ( x2 )= a + bx2 (4.2)
Restando ambas ecuaciones y efectuando algunas operaciones obtenemos la
expresión para la constante b:
f ( x1 ) − f ( x2 )
f ( x1 ) − f ( x2 )= b( x1 − x2 ) ⇒ b= (4.3)
x1 − x2
Sustituyendo ahora esta expresión en le ecuación (4.1), y efectuando al-
gunas operaciones obtenemos la expresión para la constante a:
f ( x1 ) − f ( x2 )
f ( x1 )= a + x1
x1 − x2
(4.4)
f ( x1 ) x1 − f ( x1 ) x2 − f ( x1 ) x1 + f ( x2 ) x1 f ( x2 ) x1 − f ( x1 ) x2
=⇒a =
x1 − x2 x1 − x2
Reemplazando estas expresiones en la ecuación general de la línea recta y
tomando en cuenta que en la intersección la función es cero mientras que el
nuevo valor de “x” se denomina x 3 , se tiene:
f ( x2 ) x1 − f ( x1 ) x2 f ( x1 ) − f ( x2 )
f ( x3 ) = + x3 = 0 (4.5)
x1 − x2 x1 − x2
Por consiguiente la ecuación que permite calcular el nuevo valor de prue-
ba para el método de La Secante es:
f ( x2 ) x1 − f ( x1 ) x2
x3 = (4.6)
f ( x2 ) − f ( x1 )
(52 + 3 )
0.36
f ( x)= x − 8 x 0.8 − x= 0
Con estos valores calculamos el nuevo valor de x: x 3 , pero dado que repe-
tiremos esta operación varias veces es conveniente programarlas:
mode/prog/new/<>/x3:
mode/prog/run/fx1:
Que ya tiene 6 dígitos de exactitud, pero que aún no son suficientes, por
lo que repetimos más el proceso borrando primero los dos valores superiores
de la pila (antiguos valores de “x” y “f(x)”):
Con estos valores los nuevos valores de “x” y “f(x)” (x 3 y f(x 3 )) son:
44..22..11.. PPrrooggrraammaa
44..22..22.. EEjjeemmppllooss
De esta gráfica podemos deducir que la solución está entre -1 y -2, por
lo que podemos emplear dichos valores como valores iniciales para encontrar
una solución más exacta con el método de la secante.
Cambiamos primero los datos correspondientes al error, límite de itera-
ciones y valore iniciales asumidos:
Solución que podemos comparar con la que se obtiene con “solve” de Calc-
Java (-1/ENTER, -2/ENTER; mode/prog/more/solve/fx):
3x 2.1 − 5 y = 7.0
y 1.2 + 4 z = 14.3
x + y 2 + z 2 = 14.0
Primero colocamos una de las ecuaciones del sistema en la forma f(x)=0, y
las otras en función de la variable independiente:
f ( x) =x + y 2 + z 2 − 14.0 =0
3 x 2.1 − 7.0
y=
5
14.3 − y1.2
z=
4
Programamos esta función, para graficarla y obtener así los valores ini-
ciales para el método: mode/prog/new/fx
ECUACIONES ALGEBRAICAS CON UNA INCÓGNITA - 2 - 79 -
Vemos entonces que las soluciones se encuentran entre 1.7 y 1.75 (aproxi-
madamente en 1.73) y entre 1.9 y 2.0 (aproximadamente 1.95), por lo que
valores iniciales para el método de la Secante podrían ser 1.7 y 1.75.
Ahora modificamos el programa “ms” (Método de la Secante) para cambiar la
precisión, el límite de iteraciones y los valores iniciales. Primero encon-
tramos la solución comprendida entre 1.7 y 1.75.
El error, límite de iteraciones y valores iniciales son:
La función es:
- 80 - Hernán Peñaranda V.
1 1
(
= ln RE f + 14 −
f
k
)
5.6
k
=
1
(
) 5.6 1
f ( f ) ln RE f + 14 − =
k k
−
f
0
Y la programamos: (mode/prog/new/ff:)
Dado que los límites en x van desde 0 hasta 0.01, los valore de “x” de la
gráfica están multiplicados por 1x103, por lo tanto la solución aproximada
es 5x10-3 (no, 5), o podemos decir que está comprendida entre 4x10-3 y 6x10-3.
Emplearemos estos valores como valores iniciales del método de la Secante.
El error, número de iteraciones y valore iniciales son:
- 82 - Hernán Peñaranda V.
La función es:
Claro que ahora resulta mucho más sencillo hacer correr el programa para
otros valores de “RE” y “k”, sólo guardando nuevos valores en las posiciones
0 y 1 respectivamente.
44..22..33.. EEjjeerrcciicciiooss
f(x1)
f(x2)
Solución
α
x
0 x2 x1
f (x )
x1 − x2 = 1
f '( x1 )
f ( x1 )
x=
2 x1 − (5.1)
f '( x1 )
Como se puede observar, la ecuación es sencilla, pero involucra el cálcu-
lo de la derivada de la función. Ya vimos que Calc-Java permite calcular la
derivada numérica de una función, sin embargo, como también vimos, Calc-Java
no permite llamar a una función desde el interior de otra, lo que impide
aprovechar en la práctica esta función de la calculadora.
- 86 - Hernán Peñaranda V.
x= n
Donde "x" es la raíz cuadrada del número "n". Elevamos ambos términos al
cuadrado y llevamos esta función a la forma "f(x)=0":
f ( x) = x 2 − n = 0
Cuya derivada es:
f '( x) = 2 x
Aplicando la ecuación del método Newton (ecuación 5.1) a esta ecuación
resulta la expresión:
Y como se puede ver se obtienen en ambos casos los mismos resultados que
con la función de la calculadora.
Sin embargo, y como ya se mencionó, el cálculo de la derivada analítica
suele requerir mucho tiempo y en algunos casos es inclusive imposible de
- 88 - Hernán Peñaranda V.
d y f ( x + h) − f ( x − h) f ( x + h) − f ( x − h)
≈ =
dx ( x + h) − ( x − h) 2h
Que es la fórmula de "diferencia central" para calcular la derivada pri-
mera.
Si en lugar de tomar dos valores a ambos lados de "x" se toma uno al lado
izquierdo: "x-h" se tiene:
d y f ( x ) − f ( x − h) f ( x ) − f ( x − h)
≈ =
dx ( x) − ( x − h) h
Que es la fórmula de "diferencia hacia atrás" para calcular la deriva
primera.
Si en lugar de tomar un valor al lado izquierdo de "x" se toma uno al la-
do derecho: "x+h", se tiene:
d y f ( x + h) − f ( x ) f ( x + h) − f ( x )
≈ =
dx ( x + h) − ( x) h
Que es la fórmula de "diferencia hacia adelante" para calcular la deriva-
da primera.
En general mientras más valores se tomen a ambos lados de "x" más exacto
es el resultado calculado, es por ello que de estas tres fórmulas, la más
exacta es la de diferencia central, porque toma dos valores.
La deducción de las fórmulas para las derivadas de segundo, tercer y
otros órdenes superiores sigue el mismo principio, pero en lugar de la fun-
ción original se emplean las fórmulas para las derivadas de orden inferior
deducidas previamente. Así para obtener la derivada segunda se emplea las
fórmulas de la derivada primera, para la tercer las fórmulas de la derivada
segunda y así sucesivamente.
ECUACIONES ALGEBRAICAS CON UNA INCÓGNITA - 3 - 89 -
f ( x + h) - f ( x − h)
f'(x) =
2h
f ( x + h) - 2 (fx) + f ( x − h)
f''(x) = 2
h
f ( x + 2h) − 2 f ( x + h) + 2 f ( x − h) − f ( x − 2h)
f '''( x) = (5.3)
2h 3
f ( x + 2h) − 4 f ( x + h) + 6 f ( x ) − 4 f ( x − h) + f ( x − 2h)
f''''(x) = 4
h
-f ( x + 2h) + 8 f ( x + h) + 8 f ( x − h) + f ( x − 2h)
f'(x) =
12h
− f ( x + 2h) + 16 f ( x + h) + 30 f ( x) + 16 f ( x − h) − f ( x − 2h)
f''(x) = (5.4)
12 h 2
f ( x + 3h) + 8 f ( x + 2h) − 13 f ( x + h) + 13 f ( x − h) − 8 f ( x − 2h) + f ( x − 3h)
f'''(x) =
8h3
− f ( x + 3h) + 12 f ( x + 2h) − 39 f ( x + h) + 56 f ( x) − 39 f ( x − h) − 12 f ( x − 2h) − f ( x − 3h)
f ''''( x) =
6 h4
f ( x + h) − f ( x )
f'(x) =
h
f ( x + 2h) − 2 f ( x + h) + f ( x )
f''(x) = 2
h
(5.5)
f ( x + h) − 3 f ( x + 2h) + 3 f ( x + h) − f ( x )
f'''(x) = 3
h
f ( x + 4h) − 4 f ( x + 3h) + 6 f ( x + 2h) − 4 f ( x + h) + f ( x)
f''''(x) = 4
h
− f ( x + 2h) + 4 f ( x + h) − 3 f ( x )
f'(x) =
2h
-f ( x + 3h) + 4 f ( x + 2h) − 5 f ( x + h) + 2 f ( x)
f''(x) = 2
h
- 90 - Hernán Peñaranda V.
f ( x ) − f ( x − h)
f'(x) =
h
f ( x ) − 2 f ( x − h) + f ( x − h)
f''(x) = 2
h
(5.7)
f ( x) − 3 f ( x − h) + 4 f ( x − 2h) − f ( x − 3h)
f'''(x) = 3
h
f ( x) − 5 f ( x − h) + 6 f ( x − 2h) − 4 f ( x − 3h) + f ( x − 4h)
f''''(x) = 4
h
3 f ( x ) − 4 f ( x − h) + f ( x − 2h)
f'(x) =
2h
2 f ( x) − 5 f ( x − h) + 4 f ( x − 2h) − f ( x − 3h)
f''(x) = 2
h
(5.8)
5 f ( x) − 18 f ( x − h) + 24 f ( x − 2h) − 14 f ( x − 3h) + 3 f ( x − 4h)
f'''(x) =
2h 3
3 f ( x) − 14 f ( x − h) + 26 f ( x − 2h) − 24 f ( x − 3h) + 11 f ( x − 4h) − 2 f ( x − 5h)
f''''(x) = 4
h
En teoría, cuanto mayor es el orden de la fórmula más exacto es el resul-
tado, no obstante, en la práctica las fórmulas de orden elevado implican un
mayor número de operaciones, lo que a su vez implica una mayor acumulación
de error debido al redondeo. Por esta razón en la práctica suelen emplearse
las fórmulas de primer o segundo orden. Igualmente en teoría, mientras menor
sea el valor de “h” más exacto es el resultado (porque más cerca está del
límite 0), una vez más esto no es cierto debido a los errores de redondeo,
pues mientras más pequeño el número mayor es el error de redondeo cometido.
Para el método de Newton-Raphson emplearemos la fórmula de diferencia
central para el cálculo de la derivada numérica. Como incremento “h” emplea-
remos el valor de "x" multiplicado por 1x10-6, es decir: h = x*10-6, valor
que por lo general es lo suficientemente pequeño como para permitir un
cálculo bastante aproximado de la derivada.
(52 + 3 )
0.36
f ( x)= x − 8 x 0.8 − x= 0
Y el nuevo valor de x:
55..22..11.. PPrrooggrraammaa
55..22..22.. EEjjeemmppllooss
Que sería la tercera solución. Podemos comparar estos resultados con los
obtenidos con “solve” de Calc-Java:
Tal como se puede ver, en todos los casos los resultados obtenidos con
Newton Raphson tienen un error menor al especificado (10 dígitos).
2. Como segundo ejemplo encontraremos las soluciones de la función:
f ( x) = x5 − 3 x3 − 2 x 2 + 2 = 0 , con un error de 12 dígitos y un límite de 40 ite-
raciones. Para estimar los valores iniciales graficaremos la ecuación
entre: x=1.6, x=2.1, y=-0.5, y=1.
Programamos la función, para graficarla y obtener así los valores inicia-
les: mode/prog/new/fx
Una vez más las soluciones obtenidas con Newton – Raphson tienen mayor
exactitud que la especificada. Solo el segundo resultado difiere del obteni-
do con “solve”.
3. La ecuación de Beattie – Bridgeman, que se presenta al pie de la pre-
gunta, permite calcular con bastante confiabilidad, el volumen de flui-
dos para los cuales se conocen las constantes: A 0 , B 0 , a, b y c. En es-
ta ecuación “V” es el volumen del fluido (en litros), “P” es la presión
(en atm) y “T” la temperatura (en K). Para el isobutano, las constantes
ECUACIONES ALGEBRAICAS CON UNA INCÓGNITA - 3 - 99 -
β γ δ 1
V= RT + + 2 + 3
V V V P
Rc
β= RTB0 − A0 − 2
T
RB c
γ = − RTB0 b + aA0 − 20
T
RB0 bc
δ=
T2
atm.l
R = 0.0827
K .gmol
Primero escribimos la ecuación del método de Beattie – Bridgeman en la
forma f(V)=0:
β γ δ 1
f (V )= RT + + 2 + 3 − V
V V V P
Para posibilitar que el programa sea empleado con otros compuestos dife-
rentes al isobutano, las constantes de la ecuación de Beattie – Bridgeman se
guardarán en las memorias 0 al 4, en el orden: A 0 = mem 0; B 0 = mem 1; a =
mem 2; b = mem 3; c = mem 4. Igualmente, por conveniencia, se guardará el
valor de la constante “R” en la posición de memoria 5. Dichos valores deben
ser guardados en esas posiciones de memoria antes de llamar al método:
16.6037/special/mem/STO 0
0.2354/special/mem/STO 1
0.11171/special/mem/STO 2
0.07697/special/mem/STO 3
300e4/special/mem/STO 4
0.0827/special/mem/STO 5
Tal como se especifica en el enunciado, los valores de “T” y “P” deben
estar en las posiciones 1 y 0 de la pila al momento de llamar al programa,
pero para evitar el cometer errores al trabajar con la pila (pues el método
de Newton – Raphson modifica la misma), se guardarán internamente en las
posiciones de memoria 7 y 6 respectivamente.
Las partes del programa de Newton – Raphson que han sido modificadas para
resolver este problema son las siguientes (los números de los pasos respec-
tivos cambian porque lo primero que se hace es guardar los valores de “P” y
“T” en las memorias 6 y 7):
- 100 - Hernán Peñaranda V.
Se obtiene:
55..22..33.. EEjjeerrcciicciiooss
66..EECCUUAACCIIOONNEESS PPOOLLIINNOOMMIIAALLEESS –– 11
Con los métodos estudiados en los temas anteriores se puede encontrar
(una a la vez) las soluciones reales de la ecuación polinomial de la forma:
P3 ( x) = x 3 + x 2 − 3 x − 3 = 0
Llevamos a cabo dos divisiones sintéticas consecutivas, tal como se mues-
tra a continuación:
x1 = 2 1 1 -3 -3
2 6 6
1 3 3 3 ← valor de la función: f(2)
2 10
1 5 13 ← derivada de la función: f'(2)
Como puede observar en este ejemplo, si “a” son los coeficientes del po-
linomio original, los coeficientes resultantes de la división sintética: “b”
se calculan con:
b1 = a1
bi = ai + bi −1 x1 i = 2 → n + 1 (6.2)
resíduo = b
n +1
Donde "n" es el grado del polinomio. Entonces para llevar a cabo la divi-
sión sintética lo que se debe hacer es programar la ecuación (6.2), pero
ello implica trabajar con matrices (más propiamente con matrices unidimen-
sionales o vectores) por lo que primero veremos algunas de las instrucciones
que tienen que ver con matrices.
La mayoría de las instrucciones que tienen que ver con el manejo de ma-
trices en Calc – Java se encuentran en el menú “math/matrix”:
- 104 - Hernán Peñaranda V.
Así por ejemplo, para crear una matriz vacía de 12 filas por 7 columnas,
escribimos estos dos datos en la pila y luego ejecutamos la instrucción
“new”: math/matrix/create/new, con lo que en la pila queda:
Que es la forma en la cual Calc – Java presenta las matrices. Para ver el
contenido de una matriz (en este caso una matriz con ceros), se puede acti-
var el monitor de matrices: mode/monitor/matrix/7:
Donde el número de filas a mostrar (en este caso 7) depende del tamaño de
pantalla que se tenga disponible. Como se puede observar, el monitor de ma-
ECUACIONES POLINOMIALES - 1 - 105 -
De esa manera podemos cambiar o recuperar los valores de una matriz, isn
embargo, este procedimiento se usa normalmente sólo para corregir u obtener
alguno de los valores de la matriz. Para crear una matriz con una serie de
valores es más eficiente recurrir a las opciones ->row, para crear un vector
fila (donde cada elemento se encuentra en una columna diferente), ->col,
para crear un vector columna (donde cada elemento se encuentra en una fila
diferente) y ->M para crear una matriz.
Por ejemplo para crear un vector fila con los elementos 1 2 3 y 4, escri-
bimos dichos números en la pila, luego ejecutamos la instrucción:
math/matrix/create/->row/[2-4]/[1x4]:
- 106 - Hernán Peñaranda V.
De manera similar podemos crear una matriz, por ejemplo una matriz de 3
filas por cuatro columnas con los números del 1 al 12 (math/matrix/create/-
>M/4/[3x4]:
Donde como se puede observar quedan dos matrices una con las dos primeras
filas y la segunda con la última fila. Para extraer el segundo elemento (la
segunda columna) de la segunda matriz, escribimos el número 2 y luego ejecu-
tamos la instrucción col x (math/matrix/parts/col x ):
De manera similar opera row x y a yx , sólo que con row x se obtiene una fila
(en lugar de una columna) y con a yx , se obtiene el elemento que se encuen-
tra en la fila y “y” en la columna “x”. Una vez dividida una matriz con
“split”, podemos volver a unirla con “stack” (del menú “combine”), por ejem-
plo podemos unir la matriz que se encuentra en la pila (borrando previamente
el número 10):
Por otro lado, los operadores básicos (suma, multiplicación, resta y di-
visión) funcionan también con matrices, por lo que es posible sumar, multi-
plicar y dividir matrices directamente con dichos operadores. Es posible
ECUACIONES POLINOMIALES - 1 - 109 -
también multiplicar y dividir una matriz entre un escalar. Por ejemplo pode-
mos multiplicar la matriz anterior por 6.7:
66..11..11.. EEjjeerrcciicciiooss
66..22..11.. PPrrooggrraammaa
P3 ( x) = x 3 + x 2 − 3 x − 3 = 0
Para estimar los valores iniciales y al no contar por el momento con un
método numérico adecuado, programamos el polinomio y graficamos el mismo:
Y con -1 y 2 obtenemos:
Que son las tres soluciones reales de la ecuación cúbica y que pueden ser
corroborados con “solve” obteniéndose en los tres casos los mismos resulta-
dos. A continuación resolvemos unos cuantos ejemplos más con el método de
Newton – Raphson para ecuaciones polinomiales.
66..22..22.. EEjjeemmppllooss
P4 =
( x) 128 x 4 − 256 x 3 + 160 x 2 − 32 x=
+1 0
Para los valores iniciales programamos primero y graficamos el polino-
mio:
ECUACIONES POLINOMIALES - 1 - 115 -
Entonces podemos tomar como valores iniciales: 0.05, 0.3, 0.7 y 1. Con
estos valores obtenemos:
Que son las 4 soluciones reales del polinomio y que pueden ser verifi-
cadas con “solve”.
2. Encuentre las soluciones reales del polinomio que se presenta al final
de la pregunta. Obtenga los valores iniciales graficando el polinomio.
P8 ( x) =x8 − 60 x 7 + 1554 x 6 − 22680 x 5 + 203889 x 4 − 1155420 x 3 + 4028156 x 2 − 7893840 x + 6652800 =0
Al igual que el caso anterior, primero programamos y graficamos el po-
linomio para obtener los valores iniciales aproximados.
valores cercanos, tomaremos como valores iniciales 3.7, 4.7, 5.7, 6.7,
7.7, 8.7, 9.8 y 10.7:
Que son las soluciones exactas y que pueden ser verificadas también con
“solve”.
66..22..33.. EEjjeerrcciicciiooss
P3 ( x) =
5 x 3 − 250 x 2 + 4000 x − 20000 =0
6. Encuentre las soluciones reales del polinomio que se presenta al pie de
la pregunta. Obtenga los valores iniciales de la gráfica del polinomio.
P9 ( x) = 5 x 9 − 8 x 7 + 4 x 6 − 2 x 5 + x 4 − 6 x 3 + 3 x 2 − 2 x − 80 = 0
7. Encuentre las soluciones reales del polinomio que se presenta al pie de
la pregunta. Obtenga los valores iniciales de la gráfica del polinomio.
P10 ( x=
) 12 x10 − 8 x 9 + 6 x 7 − 3 x 3 + 5 x 2 − 3 x − 10= 0
8. Encuentre las soluciones reales del polinomio que se presenta al pie de
la pregunta. Obtenga los valores iniciales de la gráfica del polinomio.
P8 ( x) =x8 − 7 x 7 + 11x 6 + 41x 5 − 183 x 4 + 231x 3 + 21x 2 − 265 x + 150 =0
ECUACIONES POLINOMIALES - 2 - 119 -
77..EECCUUAACCIIOONNEESS PPOOLLIINNOOMMIIAALLEESS –– 22
En este tema continuamos el estudio de los métodos que nos permiten re-
solver ecuaciones polinomiales.
En el anterior tema los valores iniciales fueron estimados graficando la
función, sin embargo, dicho procedimiento, sólo nos permite encontrar las
soluciones reales. En este tema veremos un método que nos permite estimar
valores iniciales para encontrar tanto soluciones reales como imaginarias.
Antes sin embargo revisaremos algunos de los métodos, estudiados en álge-
bra, para encontrar las soluciones reales e imaginarias de ecuaciones de
segundo y tercer grado.
−b ± b 2 − 4ac
x1,2 = (7.1)
2a
Donde “a”, “b” y “c” son los coeficientes de la ecuación cuadrática:
ax2+bx+c=0.
Puesto que Calc – Java nos permite trabajar con valores imaginarios pode-
mos aplicar directamente la anterior ecuación sin tener que hacer ninguna
consideración especial (casos reales, iguales o imaginarios). Sin embargo,
una solución más eficiente, propuesta por Roar Lauritzsen (el creador de
Calc-Java: http://midp-calc.sourceforge.net/Calc.html), aprovecha el hecho
de que en la solución de una ecuación cuadrática también se cumple que:
c
x1 x2 = (7.2)
a
Lo que propone es calcular primero el valor de la expresión:
b + signo(b) b 2 − 4ac
q= (7.3)
−2
Que, debido a que multiplica el valor de la raíz por el signo de “b”,
siempre nos devuelve la suma de ambos valores, sin importar que “b” sea po-
sitivo o negativo.
Resulta claro entonces que si esta expresión se divide entre “a” obtene-
mos una de las soluciones (pues simplemente se reproduce una de las solucio-
nes de la ecuación (7.1):
q
x1 = (7.4)
a
La segunda solución se obtiene entonces de las ecuaciones (7.2) y (7.4):
c c c
=
x2 = = (7.5)
x1a q a q
a
Estas son las expresiones que emplearemos para calcular las soluciones de
la ecuación cuadrática.
- 120 - Hernán Peñaranda V.
77..11..11.. PPrrooggrraammaa
77..11..22.. EEjjeerrcciicciiooss
b1 x3 + b2 x 2 + b3 x + b4 =
0 (7.6)
Sea llevada a la forma:
x3 + a1 x 2 + a2 x + a3 =
0 (7.7)
Lo que se consigue simplemente dividiendo todos los coeficientes entre el
primero. Entonces se calculan los siguientes valores:
3a2 − a12
Q= (7.8)
9
9a1a2 − 27 a3 − 2a13
R= (7.9)
54
S =3 R + Q3 + R 2 (7.10)
S =3 R − Q3 + R 2 (7.11)
77..22..11.. PPrrooggrraammaa
El programa elaborado requiere que esté en la pila un vector con los co-
eficientes de la ecuación cúbica: [a 1 , a 2 , a 3 , a 4 ]:
- 122 - Hernán Peñaranda V.
ECUACIONES POLINOMIALES - 2 - 123 -
Siendo las soluciones “1”, “2” y “3” que son las soluciones correctas.
Probamos ahora el programa con la ecuación: x3-22x2+145x-300=0, que tiene
dos soluciones iguales y una diferente:
77..22..22.. EEjjeerrcciicciiooss
ai + 2
di = {i =1 → n − 1 (7.17)
ai +1
Una vez calculados los valores iniciales, los valores sucesivos se calcu-
lan con las ecuaciones:
q=
1 d1 + p1
qi = di − di −1 + pi i = 2 → n − 1 (7.18)
q= pn − d n −1
n
qi +1
ei = di {i =1 → n − 1 (7.19)
qi
Si al efectuar estos cálculos los valores de e i son cero o cercanos a ce-
ro el proceso concluye, caso contrario “p” se iguala a “q” (p=q) y “d” a “e”
ECUACIONES POLINOMIALES - 2 - 125 -
77..33..11.. PPrrooggrraammaa
P4 =
( x) 128 x 4 − 256 x 3 + 160 x 2 − 32 x=
+1 0 (7.21)
Creamos la matriz:
Que son los elementos del vector “d”. Ahora continuamos elaborando el
programa y calculamos el vector “p” con la ecuación (7.17). Ello implica la
ejecución de un ciclo iterativo que va desde 1 hasta “n-1”. Como contador de
dicho ciclo emplearemos la memoria 15, sólo que por conveniencia, en lugar
de repetir el ciclo desde 1 hasta “n-1”, repetiremos el mismo desde 2 hasta
“n”.
En consecuencia debemos almacenar el número “2.nnn01” en la memoria 15,
“2” es el valor inicial, “nnn” es el límite final (grado del polinomio) y
“01” el incremento. Sin embargo, dado que “Calc-Java” emplea automáticamente
como incremento “01”, aprovecharemos ese hecho y almacenaremos en la memoria
15 sólo el número “2.nnn” (sin el incremento), que en el caso del polinomio
empleado como ejemplo (de grado 4), es “2.004”. Ello se consigue dividiendo
el grado del polinomio entre 1000 y sumando 2 al resultado:
Si ahora salimos del programa y hacemos correr el mismo con los coefi-
cientes de la matriz (7-21) (o hacemos correr el programa paso a paso con
SST), obtendremos lo siguiente:
Haciendo correr este programa, con la matriz original, los valores de “e”
resultantes son:
- 130 - Hernán Peñaranda V.
Donde como se puede ver el último valor es muy cercano a cero, mientras
que el primero sólo tiene 3 dígitos después del cero. Los valores de “q”
son:
Que son las cuatro soluciones aproximadas del polinomio. Soluciones que
pueden compararse con las obtenidas por ejemplo con Mathematica:
x1 -> 0.03806023374435662
x2 -> 0.3086582838174551
x3 -> 0.6913417161825449
x4 -> 0.9619397662556433
Como ya se dedujo en base a los valores de “e” el último resultado es el
más exacto, el penúltimo tiene 6 dígitos de precisión y los dos primeros
apenas 2. No obstante, y como ya se dijo, QD, normalmente se emplea sólo
para obtener valores iniciales, siendo los resultados más exactos calculados
con otro método como el de Newton.
Por ejemplo empleando estos valores, como valores iniciales del método de
Newton obtenemos:
Las mismas que pueden ser comparadas con soluciones obtenidas con Mat-
hematica:
x1 -> -5.499999617445176
x2 -> -4.500000028717094
x3 -> -1.2000010574445465
x4 -> 1.6000099379320165
x5 -> 2.0999898188577903
x6 -> 3.399993893724658
x7 -> 5.10001457316836
x8 -> 6.299992479923989
Como una vez más se puede comprobar, los valores iniciales del método QD,
son lo suficientemente aproximados como para permitir encontrar soluciones
más precisas con el método de Newton. En realidad si bajamos más aún el
error permitido, por ejemplo a 1e-3:
Que son los mismos resultados obtenidos previamente con los valores ini-
ciales más precisos. Por consiguiente si el objetivo es obtener valores ini-
ciales para luego encontrar valores más precisos con otros métodos como el
ECUACIONES POLINOMIALES - 2 - 133 -
de Newton, una precisión de 1e-3 para el método QD suele ser más que sufi-
ciente.
No obstante y sobre todo cuando se tienen raíces complejas, una precisión
de esta magnitud puede dar lugar a resultados erróneos (raíces reales en
lugar de imaginarias). Por esta razón mantendremos la precisión de 1e-7 en
el método QD, a pesar de que en la mayoría de los casos una precisión menor
como 1e-3 suele ser suficiente.
Ahora que ya sabemos cómo afecta la precisión en el número de iteracio-
nes, borramos las líneas añadidas para ese fin y con ello habríamos progra-
mado las ecuaciones del método QD.
Veamos qué sucede cuando el polinomio tiene raíces (soluciones) comple-
jas, como ocurre con el siguiente polinomio:
P4 ( x) = x 4 − 6 x 3 + 12 x 2 − 19 x + 12 = 0 (7.22)
Que son las dos soluciones complejas (aproximadas) del polinomio. Emple-
ando estas soluciones aproximadas (tanto reales como complejas), como valo-
res iniciales del método de Newton, obtenemos:
x 4 − 12 x3 + 70 x 2 − 204 x + 325 =
0 (7.23)
El vector que se manda a “qd” es:
ciones 3 y 4, por lo tanto, en este caso todas las soluciones son complejas.
Siendo los valores de “q”:
Haciendo correr el programa con los datos del último polinomio se obtie-
ne:
Que son las soluciones complejas aproximadas del polinomio y que concuer-
dan (como era de esperar) con las soluciones calculadas previamente.
Sin embargo existen todavía algunas consideraciones adicionales que es
necesario hacer en el método “QD”. Así, analizando las ecuaciones (7.16) y
(7.17), se puede inferir fácilmente que si alguno de los coeficientes del
polinomio es cero, se produciría una división entre cero, por lo que en esos
casos es necesario realizar un cambio de variable. Otra situación en la que
suele ser necesario un cambio de variables es cuando dos o más coeficientes
están igualmente espaciados, pues también se puede producir una división
entre cero.
El cambio de variable más sencillo y conveniente es aquel en el que se
cambia la variable “x” por “x-1”. Para ello simplemente se divide (división
sintética) el polinomio entre “x-1” y el polinomio resultante nuevamente
entre “x-1” y así sucesivamente, siendo los residuos de cada división los
coeficientes del nuevo polinomio. Este cambio de variable resulta convenien-
te, porque una vez encontradas las raíces con la nueva variable, las solu-
ciones de la variable original se obtienen simplemente sumando 1 a estos
resultados.
Por ejemplo para resolver el siguiente polinomio, donde el segundo coefi-
ciente es cero:
P4 ( x) = x 4 − 3 x 2 + x − 5 = 0
Llevamos a cabo cuatro divisiones sintéticas:
- 138 - Hernán Peñaranda V.
Siendo estos (en orden invertido) los coeficientes del polinomio con el
cambio de variable:
Resultados que pueden ser comparados con los obtenidos por ejemplo con
Mathematica:
x1 -> -2.136282774791117
x2 -> 0.09318111352445112 - 1.0916179909226145*I
x3 -> 0.09318111352445112 + 1.0916179909226145*I
x4 -> 1.9499205477422152
Siendo esencialmente los mismos.
Una vez más se hace evidente que el cálculo de los nuevos coeficientes
(por división sintética) es un proceso moroso, por lo que es conveniente
automatizar el mismo. Ello implica copiar el programa de división sintética
dentro del nuevo programa (debido a que no se puede llamar a un programa
desde otro).
La parte del programa que automatiza el proceso es la siguiente:
Se obtiene:
Que, como era de esperar, son los mismos coeficientes calculados manual-
mente.
77..33..22.. EEjjeemmppllooss
A “qd” se obtiene:
ECUACIONES POLINOMIALES - 2 - 141 -
Que son prácticamente las mismas soluciones que se obtienen con Mat-
hematica:
x -> -3.0242705767252844},
x -> -0.5228743503887914 - 0.3042365473603303*I
x -> -0.5228743503887914 + 0.3042365473603303*I
x -> 1.1991219732407075 - 1.639261227675233*I
x -> 1.1991219732407075 + 1.639261227675233*I
x -> 2.644710677521432 - 1.6490342269104785*I
x -> 2.644710677521432 + 1.6490342269104785*I
x -> 3.3823539759785883
2. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Newton:
x8 − 60 x 7 + 1554 x 6 − 22680 x 5 + 203889 x 4 − 1155420 x 3 + 4028156 x 2 − 7893840 x + 6652800 =
0
Mandamos la siguiente matriz a “qd”:
Como se puede ver, en este caso todas la soluciones son reales. Con es-
tos valores y el método de Newton encontramos soluciones más precisas:
Como se puede ver, en este caso todas las soluciones son complejas. Da-
do que en este caso se ha hecho el cambio de variable, para obtener las
soluciones del polinomio original debemos sumar un vector unidad con 20
elementos a este resultado:
- 144 - Hernán Peñaranda V.
Las mismas que pueden ser comparadas con las obtenidas con Mathematica:
x -> -1.2267594726950024 - 0.5072243780954078*I
x -> -1.2267594726950024 + 0.5072243780954078*I
x -> -1.0046274884716349 - 0.2516657831531895*I
x -> -1.0046274884716349 + 0.2516657831531895*I
x -> -0.6468413411942394 - 0.653223016792479*I
x -> -0.6468413411942394 + 0.653223016792479*I
x -> -0.5042572534484376 - 1.0401650199885866*I
x -> -0.5042572534484376 + 1.0401650199885866*I
x -> -0.0801755107936667 - 0.8836022869123685*I
x -> -0.0801755107936667 + 0.8836022869123685*I
x -> 0.14178009847543452 - 0.9931852771909448*I
x -> 0.14178009847543452 + 0.9931852771909448*I
ECUACIONES POLINOMIALES - 2 - 145 -
77..33..33.. EEjjeerrcciicciiooss
11. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Newton:
P4 ( x) = x 4 − 16 x 3 + 72 x 2 − 96 x + 24 = 0
12. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Newton:
P9 ( x) = 5 x 9 − 8 x 7 + 4 x 6 − 2 x 5 + x 4 − 6 x 3 + 3 x 2 − 2 x − 80 = 0
13. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Newton:
P10 ( x=
) 12 x10 − 8 x 9 + 6 x 7 − 3 x 3 + 5 x 2 − 3 x − 10= 0
14. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Newton:
P6 ( x) = x 6 + x 5 − 8 x 4 + 231x 3 + 21x 2 − 265 x + 150 = 0
15. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Newton:
P8 ( x) = x8 + x 7 − 9 x 6 + 13 x 5 + 21x 4 − 125 x 3 + 77 x 2 + 111x − 90 = 0
ECUACIONES POLINOMIALES - 3 - 147 -
88..EECCUUAACCIIOONNEESS PPOOLLIINNOOMMIIAALLEESS –– 33
En este tema continuamos el estudio de los métodos que nos permiten re-
solver ecuaciones polinomiales y en esta ocasión completamos dicho estudio
con uno de los métodos más empleados para resolver ecuaciones de este tipo:
el método de Bairstow.
Puesto que en dicho método se emplea a la división sintética doble, estu-
diaremos primero dicho proceso.
b1 = a1
b= a + c r
bi =ai + bi −1r + bi − 2 s 2 2 1
(8.2)
i= 3 → n+1
resíduo= bn ( x − r ) + bn +1
- 148 - Hernán Peñaranda V.
88..11..11.. PPrrooggrraammaa
Obtenemos:
Que son los mismos resultados obtenidos manualmente. Ahora llevando a ca-
bo una segunda división sintética obtenemos:
88..11..22.. EEjjeemmppllooss
P5 ( x) = x5 − 3 x 4 − 10 x3 + 10 x 2 + 44 x + 48 = 0
Mandamos a “bairs” los siguientes datos:
- 150 - Hernán Peñaranda V.
88..11..33.. EEjjeerrcciicciiooss
P10 ( x=
) 12 x10 − 8 x 9 + 6 x 7 − 3 x 3 + 5 x 2 − 3 x − 10= 0
Pn ( x)
= Qn − 2 ( x)( x 2 + rx + s ) + resíduo
= 0 (8.3)
x2 + r + s
Entonces, el método de Bairstow busca los valores de “r” y “s” que hacen
el residuo cero (o casi cero). Cuando esto sucede la ecuación (3) queda
igualada a cero y se cumple que:
Qn − 2 ( x) = 0
(8.4)
x 2 + rx + s =0
Entonces dos de las raíces (soluciones) pueden ser calculadas resolviendo
la ecuación de segundo grado. Posteriormente es posible encontrar otras dos
raíces repitiendo el procedimiento con el polinomio Q n-2 y continuar de esa
manera hasta determinar todas las raíces del polinomio original. Aunque como
ya se dijo este procedimiento tiene el inconveniente de ir propagando el
error cometido en los cálculos previos.
La división del polinomio P n (x) entre la ecuación de segundo grado es
simplemente la división sintética doble. Como ya se dijo, el objetivo del
método de Bairstow es hacer cero el residuo: b n (x-r)+b n+1 . Para ello, se ex-
panden en series de Taylor los coeficientes b n y b n+1 como funciones de "r" y
"s":
2
∂b (r , s ) ∂b (r , s ) 1 ∂b (r , s ) ∂b (r , s )
bn (r + ∆r , s + ∆s ) =bn (r , s ) + n ∆r + n ∆s + n ∆r + n ∆s + ...∞ =0
∂r ∂s 2! ∂r ∂s
2
∂bn +1 (r , s ) ∂b (r , s ) 1 ∂b (r , s ) ∂b (r , s )
bn +1 (r + ∆r , s + ∆s ) =bn +1 (r , s ) + ∆r + n +1 ∆s + n +1 ∆r + n +1 ∆s + ...∞ =0
∂r ∂s 2! ∂r ∂s
(8.5)
Donde “∆r” y “∆s” son los valores que deben restarse a “r” y “s” para que
tanto “b n ” como “b n+1 ” se igualen a cero. Por supuesto, no es posible en la
práctica resolver este sistema (que es más complicado aún que el problema
original), por eso sólo se toman los términos de primer orden con lo que el
sistema se simplifica a:
∂bn ∂b
bn + ∆r + n ∆s = 0
∂r ∂s
(8.6)
∂b ∂b
bn +1 + n +1 ∆r + n +1 ∆s =
0
∂r ∂s
Entonces si se calculan las derivadas de la ecuación (8.6), la misma es
simplemente un sistema de dos ecuaciones lineales con 2 incógnitas.
Las derivadas parciales pueden ser calculadas realizando una segunda di-
visión sintética del polinomio residual (sin incluir el último coeficiente)
entre la ecuación cuadrática x2+rx+s. Si denominamos “c” a los coeficientes
resultantes de esta segunda división, entonces las derivadas parciales son:
∂bi
= ci −1
∂r
(8.7)
∂bi
= ci − 2
∂s
Reemplazando estas relaciones la ecuación (8.6) resulta:
cn −1 * ∆r + cn − 2 * ∆s =−bn
(8.8)
cn * ∆r + cn −1 * ∆s =−bn +1
ECUACIONES POLINOMIALES - 3 - 153 -
Sin embargo, puesto que estos valores han sido calculados despreciando
los términos de segundo orden y superiores, son solamente valores aproxima-
dos, que al ser sumados a "r" y "s" no igualan "b n " y "b n+1 " a cero, aunque
si los aproximan a este valor.
Por lo tanto, el cálculo de los valores de "r" y "s" que hacen "b n " y
"b n+1 " cero, es iterativo: comenzando con valores iniciales asumidos se cal-
cula por división sintética, los coeficientes “b” y se verifica si “b n ” y
“b n+1 ” son cero (o casi cero), de ser así el proceso termina habiéndose en-
contrado los valores de "r" y "s" que hacen cero el residuo, caso contrario
se calculan los coeficientes “c”, mediante otra división sintética, y con
los mismos los valores de “∆r” y “∆s”. Si estos valores son cercanos a cero
el proceso concluye, caso contrario se calculan nuevos valores de “r” y “s”:
r=r+∆r, s=s+∆s y se repite el proceso.
88..22..11.. PPrrooggrraammaa
Que son los valores iniciales de “r” y “s”. Ahora se determina el grado
de la matriz y se guarda en la memoria 14:
Que son los valores finales de “r” y “s” (con el error establecido de
1x10-12). Ahora con estos valores y la ecuación cuadrática: x2-rx-s=0, calcu-
lamos dos de las soluciones del polinomio. Para ello volvemos a copiar el
programa “cuad” a partir de este punto, sin embargo, dado que el primer co-
eficiente siempre es 1 (es decir “a” siempre tiene un valor igual a 1), po-
demos simplificar un poco más el cálculo de la ecuación cuadrática como si-
gue (borrando por supuesto el “STOP”):
88..22..22.. EEjjeemmppllooss
Que son las mismas soluciones obtenidas con el método de Newton Raphson
en el tema anterior.
Para las dos primeras soluciones imaginarias mandamos a “qd”:
Que son las mismas soluciones calculadas con el método de Newton. Pro-
cediendo de manera similar obtenemos las otras soluciones:
Que son las mismas soluciones obtenidas con Newton, sólo que en este
caso se han reordenado un poco a fin de encontrar siempre pares conju-
gados en el caso de las soluciones complejas.
4. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Bairstow:
Que básicamente son las mismas soluciones obtenidas con Newton. Proce-
diendo de similar manera con los otros valores calculamos las restantes
soluciones:
Que esencialmente son las mismas soluciones obtenidas con Newton, sólo
que un tanto reordenadas porque el método de la raíz cuadrada siempre
devuelve las soluciones ordenadas ascendentemente.
5. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Bairstow:
2 x 20 + 3 x17 − 4 x15 + 12 x12 − 9 x8 + 6 x 6 − 2 x 4 − 4 x 3 + 3 x 2 − x + 9 =0
Como este polinomio tiene coeficientes cero, mandamos primero el vector
de coeficientes del polinomio “cvar”:
- 160 - Hernán Peñaranda V.
Pero para obtener las soluciones del polinomio original debemos sumar
el vector unidad (con 20 elementos) a este resultado, obteniendo así:
Que una vez más son esencialmente las mismas soluciones encontradas con
Newton en el tema anterior.
En todos estos ejemplos se han resuelto ecuaciones de grado par, cuando
se presenta una ecuación de grado impar no todas las soluciones pueden
ser calculadas con Bairstow, por lo que por lo menos una de ellas (una
de las soluciones reales) debe ser calculada con el método de Newton
Raphson.
88..22..33.. EEjjeerrcciicciiooss
P4 ( x) = x 4 − 16 x 3 + 72 x 2 − 96 x + 24 = 0
4. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Bairstow y una con Newton:
P9 ( x) = 5 x 9 − 8 x 7 + 4 x 6 − 2 x 5 + x 4 − 6 x 3 + 3 x 2 − 2 x − 80 = 0
5. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Bairstow:
P10 ( x=
) 12 x10 − 8 x 9 + 6 x 7 − 3 x 3 + 5 x 2 − 3 x − 10= 0
6. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Bairstow:
P6 ( x) = x 6 + x 5 − 8 x 4 + 231x 3 + 21x 2 − 265 x + 150 = 0
7. Encuentre las soluciones reales e imaginarias del polinomio que se pre-
senta al pie de la pregunta. Obtenga los valores iniciales con QD y las
soluciones más exactas con Bairstow:
P8 ( x) = x8 + x 7 − 9 x 6 + 13 x 5 + 21x 4 − 125 x 3 + 77 x 2 + 111x − 90 = 0
SISTEMAS DE ECUACIONES LINEALES 1 - 165 -
99..11..11.. EEjjeemmppllooss
3y 1 + 2y 2 - y 3 + 2y 4 = -2
y1 + 4y 2 + 2y 4 = 2
2y 1 + y 2 + 2y 3 - y4 = 3
y1 + y2 - y3 + 3y 4 = 4
3z 1 + 2z 2 - z 3 + 2z 4 = 2
z1 + 4z 2 + 2z 4 = 2
2z 1 + z 2 + 2z 3 - z4 = 1
z1 + z2 - z3 + 3z 4 = 0
Como estos tres sistemas tienen los mismos coeficientes pueden ser re-
sueltos al mismo tiempo multiplicando la inversa de la matriz de los
coeficientes por la matriz de las constantes.
Calculamos primero la matriz inversa de los coeficientes:
99..11..22.. EEjjeerrcciicciiooss
30y 1 + 1y 2 + 2y 3 + 6y 4 + 5y 5 – 3y 6 = 14
y1 + 2y 2 + 33y 3 + 5y 4 – y5 + 2y 6 = 1
3y 1 + 5y 2 + 7y 3 – 45y 4 + 4y 5 + y6 = 3
4y 1 + 3y 2 + 2y 3 + 3y 4 + 40y 5 – 4y 6 = 2
5y 1 + 6y 2 – 3y 3 – 4y 4 + 3y 5 + 36y 6 = 2
2y 1 + 25y 2 + y3 – y4 + 2y 5 – 5y 6 = 7
- 170 - Hernán Peñaranda V.
30z 1 + 1z 2 + 2z 3 + 6z 4 + 5z 5 – 3z 6 = 4
z1 + 2z 2 + 33z 3 + 5z 4 – z5 + 2z 6 = 27
3z 1 + 5z 2 + 7z 3 – 45z 4 + 4z 5 + z6 = 27
4z 1 + 3z 2 + 2z 3 + 3z 4 + 40z 5 – 4z 6 = 13
5z 1 + 6z 2 – 3z 3 – 4z 4 + 3z 5 + 36z 6 = 14
2z 1 + 25z 2 + z3 – z4 + 2z 5 – 5z 6 = 14
El método de eliminación de Gauss – Jordán, que como se sabe por los es-
tudios de álgebra, es una modificación del método de Gauss, encuentra las
soluciones del sistema reduciendo la matriz de los coeficientes a una matriz
unidad. Así si aplicamos el método de eliminación de Gauss-Jordán al si-
guiente sistema de ecuaciones:
a1,1 x1 + a1,2 x2 + a1,3 x3 + a1,4 x4 =
c1
a2,1 x1 + a2,2 x2 + a2,3 x3 + a2,4 x4 =
c2
(9.4)
a3,1 x1 + a3,2 x2 + a3,3 x3 + a3,4 x4 =
c3
a4,1 x1 + a4,2 x2 + a4,3 x3 + a4,4 x4 =
c4
x1 + 0 + 0 + 0 =
c1'
0 + x2 + 0 + 0 =
c2'
(9.5)
0 + 0 + x3 + 0 =
c3'
0 + 0 + 0 + x4 =
c4'
Donde las soluciones del sistema son los valores del vector c’. En forma
matricial, el proceso puede ser representado de la siguiente forma:
'
a1,1 a1,2 a1,3 a1,4 a1,5 1 0 0 0 a1,5
'
a2,1 a2,2 a2,3 a2,4 a2,5 GAUSS − JORDAN 0 1 0 0 a2,5
→ '
(9.6)
a3,1 a3,2 a3,3 a3,4 a3,5 0 0 1 0 a3,5
'
a4,1 a4,2 a4,3 a4,4 a4,5 0 0 0 1 a4,5
ap
ap = (9.7)
a p, p
Donde "a i " es la fila "i" de la matriz "a". Donde “p” varía desde 1 hasta
“m”.
99..22..11.. PPrrooggrraammaa
99..33.. PPiivvoottaajjee
99..33..11.. PPrrooggrraammaa
99..33..22.. EEjjeemmppllooss
Este es uno de los casos que no puede ser resuelto si no se lleva a ca-
bo el pivotaje parcial, pues al ser el primer elemento de la primera
fila cero, se produciría una división entre cero.
Primero creamos la matriz aumentada:
u + 2v + 3w = 11
5u − 9v + 2 w = 2
3u + v − 4w = 4
r + 2 s + 3t =1
5r − 9 s + 2t = 2
3r + s − 4t = 3
- 176 - Hernán Peñaranda V.
Como los tres sistemas tienen los mismos coeficientes, pueden ser re-
sueltos al mismo tiempo, para ello, creamos la matriz aumentada con
tres columnas adicionales: una para cada sistema:
99..33..33.. EEjjeerrcciicciiooss
Como se sabe del estudio del álgebra de matrices, los determinantes per-
miten encontrar las soluciones de sistemas de ecuaciones lineales, siendo el
método más conocido el de Kramer, sin embargo, dicho método resulta práctico
sólo para resolver dos sistemas de ecuaciones lineales, pues para tres o más
ecuaciones el número de operaciones que requiere es excesivo, inclusive para
una computadora.
Existen sin embargo otros métodos (como el de eliminación de Gauss) que
permiten calcular de forma más eficiente el determinante. Calc-Java cuenta
con una función para el cálculo de determinantes: “det”, que se encuentra en
el menú math\matrix\math\:
Procedemos de manera similar con la segunda solución, solo que ahora re-
emplazamos la segunda columna con la columna de las constantes:
special/mem/RCL/<0-3>/0
-1
math/matrix/parts/split
-1
math/matrix/parts/split
special/stack/xy
clear
special/mem/RCL/<0-3>/1
special/stack/xy
math/matrix/combine/concat
math/matrix/combine/concat
math/matrix/parts/split
clear
special/mem/RCL/<0-3>/1
math/matrix/combine/concat
1100..11..11.. EEjjeerrcciicciiooss
Donde, como era de esperar, los valores iniciales asumidos (ceros) y los
calculados son muy diferentes. Volviendo a hacer correr el programa con es-
tos nuevos valores se obtiene:
Que todavía son diferentes a los valores asumidos, pero donde ya se puede
observar una cierta similitud. Haciendo correr el programa cuatro veces más,
se obtienen los siguientes valores:
SISTEMAS DE ECUACIONES LINEALES 2 - 183 -
Como se puede observar con cada iteración los valores calculados son más
cercanos. Haciendo correr el programa 7 veces más (hasta que los valores
calculados son iguales a los asumidos) se obtiene:
Que son las soluciones del sistema de ecuaciones: x 1 =3; x 2 =4; x 3 =5.
1100..22..11.. PPrrooggrraammaa
1100..22..22.. EEjjeemmppllooss
Por lo tanto las soluciones del sistema son: x 1 =-2; x 2 =4; x 3 =3; x 4 =-7.
2. Encuentre las soluciones de los siguientes sistemas de ecuaciones li-
neales empleando el método Gauss – Seidel:
2x 1 +3x 2 +15x 3 +x 9 -2x 10 =32
12x 1 +2x 2 +x 3 +x 4 -x 8 -x 9 -2x 10 =-50
x 1 +10x 2 -x 5 -x 7 +2x 8 +2x 9 =21
x 1 +2x 2 +16x 4 +x 5 +x 6 +x 7 -x 8 -2x 9 =80
x 3 +x 4 +14x 5 +x 8 +x 9 +x 10 =131
-2x 1 +x 5 +16x 6 =155
-3x 1 +2x 2 +2x 3 +18x 7 -2x 10 =136
x 1 +x 2 +x 3 -x 4 -2x 5 -3x 6 +2x 7 +20x 8 +3x 9 +2x 10 =104
x 6 +x 7 +x 8 +11x 9 =131
SISTEMAS DE ECUACIONES LINEALES 2 - 187 -
Que la mostramos en esa forma debido a que Calc-Java sólo permite mos-
trar una columna a la vez. El vector de las constantes es:
Haciendo correr el programa “gs” con estos datos se obtienen las solu-
ciones:
- 188 - Hernán Peñaranda V.
1100..22..33.. EEjjeerrcciicciiooss
x2 + 2 y 2 =
22
−2 x 2 + xy − 3 y =
−11
Puede ser reordenado como función de una sola incógnita:
f ( x) = x 2 + 2 y 2 − 22 = 0
2 x 2 − 11
y=
x−3
Y una vez reordenado puede ser resuelto con cualquiera de los métodos em-
pleados en los temas mencionados. Por ejemplo para encontrar las soluciones
con “solve” de Calc-Java, creamos primero la función:
- 192 - Hernán Peñaranda V.
En este caso existen cuatro soluciones: una cerca a -3.5, otra cerca a -
0.5, otra cerca a 2 y otra cerca a 2.5. En la mayoría de los casos prácticos
se tiene una idea de la magnitud que debe tener el resultado, por lo que en
general sólo se busca una de las posibles soluciones. Así por ejemplo, cuan-
do el resultado corresponde a una magnitud física como peso, distancia, vo-
lumen, etc., se sabe que dicho resultado no puede ser negativo, por lo que
se descartan las soluciones negativas.
En este caso, para practicar, encontraremos las cuatro posibles solucio-
nes, primero encontramos las soluciones cerca a -3.5:
Se obtiene:
Para el tercero:
- 194 - Hernán Peñaranda V.
Y para el cuarto:
1111..11..11.. EEjjeemmppllooss
3 x 2.1 − 5 y =7.0
y1.2 + 4 z = 14.3
x + y2 + z2 = 14.0
Primero se coloca el sistema de ecuaciones en función de una sola va-
riable:
f ( x) =x + y 2 + z 2 − 14.0 =0
3 x 2.1 − 7.0
y=
5
14.3 − y1.2
z=
4
Ahora se programa esta función al final del método de la secante, guar-
dando los valores de “x”, “y” y “z” en las memorias 0, 1 y 2 respecti-
vamente:
SISTEMAS DE ECUACIONES NO LINEALES - 195 -
Se obtiene:
2 x 2 + 5 xy − 4 x =
115
x+ y
e 5 + x 2 y 2 − 70 y =
15
Primero se coloca la ecuación en la forma “f(x)=0”
x+ y
f ( x)= e 5 + x 2 y 2 − 70 y − 15= 0
115 − 2 x 2 + 4 x
y=
5x
Dado que en este caso no se tiene idea del lugar de las soluciones, es
conveniente graficar primero la función, para lo cual debe ser primero
programada:
- 196 - Hernán Peñaranda V.
Para la tercera:
Para la cuarta:
Para la quinta:
1111..11..22.. EEjjeerrcciicciiooss
15 y + 20 x 2 − x 3 = 1500
x
9 z − 1.5 x 2 + e 2 = 300
y 2 − z 3 − 5 x = 166.81
2. Encuentre las soluciones del siguiente sistema de ecuaciones no linea-
les con el método de Newton – Raphson:
SISTEMAS DE ECUACIONES NO LINEALES - 199 -
x1 / 2 + z 2 = 35
8
y + e z / 2 − = 30
z
w + z 2 − 2 z = 31
x + w + y = 39
3. Encuentre las soluciones del siguiente sistema de ecuaciones no linea-
les con el método de la secante:
5 xy1.3
x 2.1 + 3 yz − = 70
z 5.6
x 2.2 + x 0.3 − 3 y = 25
3 xy − x1.5 + 3 y1.3 − 8 z =
8
Siendo x 1 , x 2 y x 3 , los valores asumidos para las tres variables del sis-
tema. Expandiendo las tres ecuaciones en series de Taylor (todas las funcio-
nes se evalúan en x 1 , x 2 y x 3 ) obtenemos:
∂f 1 ∂f 1 ∂f 1
f 1 ( x1 + ∆x1 , x 2 + ∆x 2 , x 3 + ∆x 3 ) = f 1 + ∆x1 + ∆x 2 + ∆x 3 + ...∞ = 0
∂x1 ∂x 2 ∂x 3
∂f 2 ∂f 2 ∂f 2
f 2 ( x1 + ∆x1 , x 2 + ∆x 2 , x 3 + ∆x 3 ) = f 2 + ∆x1 + ∆x 2 + ∆x 3 + ...∞ = 0 (11.2)
∂x1 ∂x 2 ∂x 3
∂f 3 ∂f 3 ∂f 3
f 3 ( x1 + ∆x1 , x 2 + ∆x 2 , x 3 + ∆x 3 ) = f 3 + ∆x1 + ∆x 2 + ∆x 3 + ...∞ = 0
∂x1 ∂x 2 ∂x 3
x 2 + 2 y 2 = 22
− 2 x 2 + xy − 3 y = −11
SISTEMAS DE ECUACIONES NO LINEALES - 201 -
f1 = x1 2 + 2 x 2 2 − 22 = 0
f 2 = −2 x1 2 + x1 x 2 − 3 x 2 + 11 = 0
Ahora se asumen dos valores iniciales, en este caso serán: x 1 =1.5 y x 2 =2.
Con estos valores se calcula el valor de las dos ecuaciones del sistema y se
les cambia el signo:
− f1 =− f1 ( x1 , x2 ) =− f1 (1.5, 2) = 11.75
− f2 =− f 2 ( x1 , x2 ) =− f 2 (1.5, 2) =−3.5
Como estos valores no son ceros, o cercanos a cero, se sabe que no son
las soluciones, por lo que se procede a calcular las derivadas parciales que
conforman el sistema de ecuaciones lineales (2 en el ejemplo):
−6 −6
=h x=
1 *10 =
1.5*10 0.0000015
= *10−6 2*10
h x2= = −6
0.000002
= *10−6 2*10
h x2= = −6
0.000003327272727272763
∂f1 f1 ( x1 , x2 + h ) − f1 ( x1 , x2 − h )
= = 13.30909090909069
∂x2 2h
∂f 2 f 2 ( x1 , x2 + h ) − f 2 ( x1 , x2 − h )
= = −1.122727272727289
∂x2 2h
Resolviendo el sistema de ecuaciones lineales y añadiendo los resultados
del mismo a las variables asumidas, los nuevos valores de las incógnitas
son:
y1= x1 + ∆x1= 2.013181556745032
y2= x2 + ∆x2= 3.013508518859119
Que se convierten en los nuevos valores de prueba.
Con estos nuevos valores de prueba los valores de las ecuaciones son:
− f1 =− f1 ( x1 , x2 ) =0.2153671668914142
− f2 =− f 2 ( x1 , x2 ) =−0.07958574615284283
Que están más cercanos a cero que los anteriores, pero que todavía son
valores muy grandes, por lo que el proceso debe continuar. Las nuevas deri-
vadas son:
−6
=h x=
1 *10 0.000002013181556745032
= *10−6 2*10
h x2= = −6
0.000003013508518859119
∂f1 f1 ( x1 , x2 + h ) − f1 ( x1 , x2 − h )
= = 12.05403407543596
∂x2 2h
∂f 2 f 2 ( x1 , x2 + h ) − f 2 ( x1 , x2 − h )
= = −0.986818443255216
∂x2 2h
SISTEMAS DE ECUACIONES NO LINEALES - 203 -
= *10−6 2*10
h x2= = −6
0.000003000035801790688
∂f1 f1 ( x1 , x2 + h ) − f1 ( x1 , x2 − h )
= = 12.00014320716307
∂x2 2h
∂f 2 f 2 ( x1 , x2 + h ) − f 2 ( x1 , x2 − h )
= = −0.9999733860076268
∂x2 2h
= *10−6 2*10
h x2= = −6
0.000003000000000258998
∂f1 f1 ( x1 , x2 + h ) − f1 ( x1 , x2 − h )
= = 12.00000000103571
∂x2 2h
∂f 2 f 2 ( x1 , x2 + h ) − f 2 ( x1 , x2 − h )
= = −0.9999999999591921
∂x2 2h
Resolviendo el sistema de ecuaciones lineales y añadiendo los resultados
del mismo a las variables asumidas, los nuevos valores de las incógnitas
son:
y1= x1 + ∆x1= 2
y2= x2 + ∆x2= 3
Que se convierten en los nuevos valores de prueba.
Reemplazando estos nuevos valores en las ecuaciones se obtiene:
− f1 =− f1 ( x1 , x2 ) =0
− f2 =− f 2 ( x1 , x2 ) =0
Lo que nos indica que dichos valores constituyen las soluciones exactas,
por lo tanto las soluciones del sistema son: x 1 =2 y x 3 =3.
1111..22..11.. PPrrooggrraammaa
Que son las mismas soluciones del ejemplo manual. Por supuesto si se em-
plean otros valores iniciales es posible que el método converja a otras so-
luciones. Por ejemplo, haciendo correr el programa con los valores:
SISTEMAS DE ECUACIONES NO LINEALES - 207 -
Se obtiene:
Que son otra de las soluciones, de las cuatro existentes entre x=-5 y x=5
(mostradas gráficamente y calculadas en el anterior acápite).
En el programa se trabaja con una exactitud de 12 dígitos, que por lo ge-
neral es suficiente para la mayoría de los cálculos ingenieriles, sin embar-
go, dicha exactitud puede ser cambiada ya sea para incrementarla o para re-
ducirla modificando el valor de la línea 30.
1111..22..22.. EEjjeemmpplloo
Se obtiene:
1111..22..33.. EEjjeerrcciicciiooss
4 − x2 + y2 = 0
1− ex − y = 8
5. Encuentre las soluciones del siguiente sistema de ecuaciones no linea-
les empleando el método de la gradiente (valores iniciales: x=1.1,
y=1.2).
ex − y = 0
xy − e x = 0
SISTEMAS DE ECUACIONES NO LINEALES - 209 -
xyz − x 2 + y 2 = 1.34
xy − z 2 = 0.09
e x − e y + z = 0.41
8. Encuentre las soluciones del siguiente sistema de ecuaciones no linea-
les empleando el método de la gradiente (valores iniciales: x1= 1 , x 2 =1,
x 3 =1, x 4 =x, x 5 =1, x 6 =1, x 7 =1, x 8 =1, x 9 =1, x 10 =1 y x 11 =10).
x1 + x 4 = 3
2 x1 + x 2 + x 4 + x 7 + x8 + x 9 + 2 x10 = 10 + r
x 2 + 2 x5 + x6 + x7 = 8
2 x 3 + x 5 = 4r
x1 x 5 = a1 x 2 x 4
x 6 x 21 / 2 = a 2 ( x 2 x 4 x11 )1 / 2
x 7 x 41 / 2 = a 3 ( x1 x 4 x11 )1 / 2
x8 x 4 = a 4 x 2 x11
x 9 x 4 = a5 x1( x 3 x11 )1 / 2
x10 x 4 2 = a 6 x 4 2 x11
x11 = x1 + x 2 + x 3 + x 4 + x 5 + x 6 + x 7 + x8 + x9 + x10
a1 = 0.193; a 2 = 0.002597; a 3 = 0.003448;
a 4 = 0.00001799; a 5 = 0.002155; a 6 = 0.00004836;
r = 4.056734