Si la asignación de valores a la variable x se hace de manera aleatoria, es decir, asignando valores sin seguir patrones o tendencias, la probabilidad de acertar el resultado es muy limitada, pues será cuestión de suerte encontrar la solución. Además, la probabilidad de encontrar la solución estará condicionada por la tolerancia definida: para grandes tolerancias (o mayor error permitido), seguramente se llegará a la respuesta con menor cantidad de cálculos (menor tiempo y esfuerzo) pero esta será poco precisa. Para tolerancias más pequeñas (o menor error permitido), probablemente se requiera mayor cantidad de cálculos (mayor tiempo y esfuerzo) pero se tendrá mayor precisión.
Para aumentar la probabilidad de llegar al resultado sin depender de la suerte para lograrlo (independiente de la tolerancia o error permitido que se defina), puede utilizarse un algoritmo de solución, es decir, una serie o secuencia lógica de pasos que den un “orden” a los cálculos mientras se busca la solución del problema.
Por ejemplo, en lugar de asignar valores aleatorios a la variable por tanteo y error, puede intentarse implementar los pasos que se describen en la tabla 1.1, donde se puede observar que, para llegar a la solución, inicialmente se ejecutaron los pasos 1 al 4 del algoritmo y luego se repitió del paso 2 al 4 en tres ocasiones. Cada una de esas repeticiones en los pasos del algoritmo se llama iteración o etapa de cálculo.
Tabla 1.1 Ejemplo de un algoritmo para agilizar el tanteo y error en busca de una solución para la ecuación 1.1
Paso | Acción | Ejemplo de ejecución |
1 | Asigne arbitrariamente un valor inicial a la variable x | Para efectos ilustrativos suponga x = 2 |
2 | Evalúe la función (ecuación 1.1) en el valor asignado a la variable | |
3 | Compare el resultado del paso 2 con el valor esperado para la función (dentro de una tolerancia permitida τ) | Para efectos ilustrativos suponga τ = 2 x 10–1 = 0.20 ± τ = [0 – 0.2, 0 + 0.2] |
4 | Si el resultado en el paso 3 es F(x) > (0 + τ), asigne un nuevo valor a x que sea menor que el utilizado en la etapa anterior y repita a partir del paso 2.Si el resultado es F(x) < (0 – τ), asigne un nuevo valor a x que sea mayor que el utilizado en la etapa anterior y repita a partir del paso 2.Si el resultado es F(x) | 6 > (0 + 0.2); por lo tanto, el nuevo x debe ser un valor < 2. Para efectos ilustrativos suponga x = 1 |
Repita 2 | Evalúe la función en el valor asignado a la variable | |
Repita 3 | Compare el resultado con el valor esperado para la función (dentro de la tolerancia permitida) | 0 ± τ = [0 – 0.2, 0 + 0.2] |
Repita 4 | Si F(x) > (0 + τ), asigne un nuevo valor a x que sea menor que el utilizado en la etapa anterior y repita a partir del paso 2.Si el resultado es F(x) < (0 – τ), asigne un nuevo valor a x que sea mayor que el utilizado en la etapa anterior y repita a partir del paso 2.Si el resultado es F(x) | –3 < (0 – 0.2); por lo tanto, el nuevo x debe ser un valor > 1. Para efectos ilustrativos suponga x = 1.5 |
Repita 2 | Evalúe la función en el valor asignado a la variable | |
Repita 3 | Compare el resultado del valor esperado para la función (dentro de la tolerancia permitida) | 0 ± τ = [0 – 0.2, 0 + 0.2] |
Repita 4 | Si F(x) > (0 + τ), asigne un nuevo valor a x que sea menor que el utilizado en la etapa anterior y repita a partir del paso 2.Si el resultado es F(x) < (0 – τ), asigne un nuevo valor a x que sea mayor que el utilizado en la etapa anterior y repita a partir del paso 2.Si el resultado es F(x) | 0.75 > (0 + 0.2); por lo tanto, el nuevo x debe ser un valor < 1.5. Para efectos ilustrativos suponga x = 1.4 |
Repita 2 | Evalúe la función en el valor asignado a la variable | |
Repita 3 | Compare el resultado con el valor esperado para la función (dentro de la tolerancia permitida) | 0 ± τ = [0 – 0.2, 0 + 0.2] |
Repita 4 | Si F(x) > (0 + τ), asigne un nuevo valor a x que sea menor que el utilizado en la etapa anterior y repita a partir del paso 2.Si el resultado es F(x) < (0 – τ), asigne un nuevo valor a x que sea mayor que el utilizado en la etapa anterior y repita a partir del paso 2.Si el resultado es F(x) | –0.12 |
Para facilitar el análisis del comportamiento o progreso del algoritmo de la tabla 1.1, en la tabla 1.2 se registran los resultados de la función al evaluarla en cada iteración.
Adicionalmente, se registra si cumple o no el resultado dentro de la tolerancia definida y se calculan el error relativo (diferencia entre dos valores consecutivos asignados a la variable x) y el %error absoluto (ecuación 1.6), suponiendo como valor real el que se alcanza en la tercera iteración (x = 1.4).
Tabla 1.2 Evolución o comportamiento del algoritmo de la tabla 1.1
Iteración o etapa de cálculo | x | F(x) | ¿Cumple tolerancia? | Error relativo | %error absoluto |
0 | 2 | 6 | No | 43% | |
1 | 1 | –3 | No | 1 | 29% |
2 | 1.5 | 0.75 | No | 0.5 | 7% |
3 | 1.4 | –0.12 | Sí | 0.1 | 0% |
Como se muestra en las tablas 1.1 y 1.2, para este ejemplo se llega en la tercera iteración a un resultado dentro de la tolerancia definida (τ = 0.2). Si se definen tolerancias más pequeñas (recuerde que en un lenguaje estricto el resultado para F(x) debería ser = 0 pero con la tolerancia asignada F(x) = –0.12), necesariamente se requeriría mayor precisión en el valor asignado a la variable (que en este caso es x = 1.4) y sería necesario continuar realizando iteraciones adicionales hasta llegar al resultado con la precisión (o dentro de la tolerancia) requerida.
Nótese que en la tabla 1.1 los valores asignados a la variable en el paso 1 (x = 2), en el paso 4 (x = 1) y en cada una de las repeticiones del paso 4 (x = 1.5 y x = 1.4) se asignaron a propósito para llegar al resultado mostrado, pero con el mismo algoritmo pudieron asignarse valores diferentes, ocasionando al final más o menos iteraciones para llegar a un resultado válido dentro de la tolerancia, o no llegar a un resultado válido incluso después de un muy alto número de iteraciones. En los métodos numéricos que se abordan en el capítulo 2 para la solución de ecuaciones no lineales en una variable (como la ecuación 1.1), los algoritmos respectivos incluyen de manera clara el procedimiento para asignar el valor a la variable x en cada iteración.
De acuerdo con la tabla 1.1, en cada iteración el resultado se va acercando al valor deseado, lo cual se evidencia con la disminución del %error en cada iteración. Cuando ello ocurre, se puede afirmar que el procedimiento, el método o la estrategia utilizados convergen a la solución numérica. Cuando no ocurre, es decir, cuando al aumentar el número de iteraciones no se logra una aproximación al resultado real, se dice que el método o procedimiento no converge. Entre diferentes métodos, algoritmos o estrategias que convergen a la solución, aquel que lo consigue más rápido (en menor cantidad de iteraciones) se dice que es más estable que los otros con los cuales se está comparando.
Hay situaciones en las cuales al incrementar el número de iteraciones el error relativo se hace muy pequeño y tiende a cero, pero,