Resumen: Entrega nº53 del curso Bases de la programación Nivel II.
Codificación aprenderaprogramar.com: CU00254A

 

 

 

PROBLEMAS CON ITERACIÓN PARA BÚSQUEDA DE SOLUCIONES. TANTEO DE SOLUCIONES

EJERCICIO

Transformar en pseudocódigo el siguiente ejercicio, relativo a la búsqueda por tanteo y conforme a unas reglas de la solución positiva de f(x) = 5x2 – 3x – 4 con precisión ± 0,01.

Anagrama aprenderaprogramar.com

 

 

Objetivo: Buscar el valor de x que siendo un número real positivo hace f(x) = 5x2 - 3x - 4 igual a cero de acuerdo con estas reglas.

1. Se admite la desviación de f(x) respecto al valor pedido de ± 0'01.

2. Hemos perdido toda nuestra memoria: no se admite el uso de fórmulas o estrategias de resolución gráficas o analíticas: debemos basarnos en un tanteo puro ordenado (no aleatorio) y constante.

3. Se sabe que la solución está entre 1 y 10, debiendo comenzar la búsqueda por uno de estos dos extremos.

 

Se pide: definir el esquema de búsqueda limitando el número máximo de iteraciones.

 

 

SOLUCIÓN

No vamos a construir menús ni entradas de datos para centrarnos en el único aspecto interesante que podemos encontrar: realizar una búsqueda por tanteo, en este caso limitados por las condiciones expuestas en el enunciado del problema. El control de datos de entrada lo tendría que hacer el programador modificando los valores asignados a variables colocadas en las primeras líneas del programa.

Pseudocódigo:

PROGRAMA TANTEO [Pseudocódigo aprenderaprogramar.com]

Variables

Enteras: liminf, limsup, Nmax

Reales: Valorfx, e, int, c, tmp1, tmp2

1. Inicio

2. e = 0,01 : liminf = 1 : limsup = 10

3. int = 0,001 : Nmax = 9000

4. Llamar Fdex(liminf) PorValor : tmp1 = Valorfx

5. Llamar Fdex(limsup) PorValor : tmp2 = Valorfx

6. Si ABS(tmp1) <= ABS(tmp2) Entonces

c = liminf

SiNo

c = limsup

int = - int

FinSi

7. Llamar Evaluacion(c) PorValor

8. Fin

 

Módulo Fdex(x: Reales)

Valorfx = 5 * x ^ 2 – 3 * x – 4

FinMódulo

 

Módulo Evaluacion(Valor: Reales)

Variables

Enteras: N

Booleanas: Hallado

1. Mientras N < Nmax y Hallado = Falso Hacer

N = N + 1

Llamar Fdex(Valor) PorValor

Si ABS(Valorfx) <= 0,01 Entonces

Hallado = Verdadero

Mostrar “El resultado es c =”, Valor

Mostrar “Iteraciones realizadas:”, N

SiNo

Valor = Valor + int

FinSi

Repetir

2. Si N >= Nmax Entonces

Mostrar “Se alcanzó el número máximo de iteraciones”

FinSi

FinMódulo

 

 

Diagrama de flujo:

ecuacion cuadratica por iteracion

 

 

diagrama de flujo

 

 

esquema solucion por tanteo

 

 

Comentarios: Las cuestiones que pueden resultar problemáticas son el sentido de la búsqueda según el punto de arranque y “el olvido” de aplicar valores absolutos cuando procede.

Tenemos un módulo que nos devuelve el resultado de una ecuación para un valor dado. En general, con los distintos lenguajes dispondremos de mayor número de posibilidades de las que hemos visto para la gestión de los módulos. En este caso usaríamos una función, módulo que devuelve un valor asociado a su llamada, sin necesidad de usar variables para transportar la información. Lo veremos más adelante.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

Descargar archivo: