Problemas con iteración para búsqueda de soluciones. Ejercicio resuelto. Diagramas de flujo. (CU00254A)

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.

Donar o colaborar

Este sitio se mantiene abierto gracias al apoyo de muchas personas. Si crees que merece la pena apoyar económicamente este sitio web puedes realizar una donación o colaborar. Contacta con nosotros.

¿Puedo yo aprender?

Seas o no del área informática, si quieres aprender a programar te ofrecemos una solución guiada y personalizada: realizar un curso tutorizado on-line. Con este tipo de curso, podrás aprender a programar de forma ágil y amena.

Acceder a detalles y precios de los cursos tutorizados on-line

Política sobre cookies

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, de acuerdo a tus hábitos de navegación.

Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra Política de Cookies.

En Facebook!

Ahora puedes seguirnos en Facebook. Noticias, novedades y mucho más ¡Te esperamos!

RANKING APR2+

Ranking de lenguajes y entornos de programación aprenderaprogramar.com
 

SEPTIEMBRE - OCTUBRE 2017

1. Java / J2EE
2. Entornos Oracle
3. Entornos SQL Server
4. .NET, C#
5. JavaScript, jQuery
6. HTML, CSS
7. Php, MySql
8. Android, iOS


Acceder a detalles sobre el ranking de programación aprenderaprogramar.com

FOROS APR2+

Pregunta, responde, consulta, lee, intercambia...

Participa!!! Entra en los foros aprenderaprogramar.com.

             Copyright 2006-2017 aprenderaprogramar.com                La web abierta a cualquier persona interesada en la programación