Deseamos construir una ventana rectangular que tenga una luz de 1 metro cuadrado, en una pared de tres metros de largo por 2.20 metros de alto, y queremos gastar el mínimo posible en la madera del marco. ¿Qué dimensiones de daremos a éste?
Empecemos con estos pequeños procedimiento para calcular el perímetro y el área de un rectángulo:
para per :b :h
devuelve :b + :b + :h + :h
fin
para area :b :h
devuelve :b * :h / 2
fin
Experimentemos con diferentes bases y alturas. Con una base de 1 metro y una altura de 2 metros. El perímetro es 6 y el área de la ventana es efectivamente 1m2.
muestra per 1 2
6
muestra area 1 2
1
Reduciendo la longitud de la altura a 1 metro. El perímetro se reduce, pero ahora la ventana ya no tiene 1 metro cuadrado de luz, solamente 0.5 m2.
muestra per 1 1
4
muestra area 1 1
0.5
¿Para una altura fija de 1.1 metros, cuánto debe tener la base, para que el área sea de 1m2?
muestra area 1 1.1
0.55
muestra area 2 1.1
1.1
muestra area 1.8 1.1
0.99
muestra area 1.9 1.1
1.045
Podemos usar resuelve. Buscamos un valor entre 0 y 3, ya que 3 es el largo de la pared.
muestra resuelve [invoca [1 - area ? 1.1]] [0 3]
1.81818181818182
muestra area 1.81818181818182 1.1
1
Podemos poner este código en un procedimiento que nos diga qué base debe tener una ventana de 1m2 de área, para un altura dada:
para base :h
devuelve resuelve [invoca [1 - area ? :h]] [0 3]
fin
muestra base 2
1
muestra base 1
2
muestra base 1.1
1.81818181818182
¿Cuál es el perímetro de la ventana de 1m2 de área cuando su altura es de 1.1 metros?
muestra per (base 1.1) 1.1
5.83636363636364
¿Cuál es el perímetro de la ventana de 1m2 de área cuando su altura es de 2 metros?
muestra per (base 2) 2
6
Creemos un procedimiento que dándole una altura nos calcule el perímetro de nuestra ventana:
para per.h :h
devuelve per (base :h) :h
fin
¿Cómo va variando el perímetro de la ventana de 1m2 de área para diferentes posibles valores de altura?
borrapantalla graflineas [] recorrido [per.h ?] dominio [1 2.2 100]
Con la gráfica podemos ubicar con cierta precisión el valor de altura para un perímetro mínimo. Podemos hacer acercamientos:
borrapantalla graflineas [] recorrido [per.h ?] dominio [1.3 1.5 100]
borrapantalla graflineas [[Xmod: [fix: 5]] [Ymod: [fix: 5]]] ~
recorrido [per.h ?] dominio [1.40 1.42 100]
Pero, si recordamos un poco de cálculo sabremos que la derivada en el mínimo es 0. Grafiquemos la curva derivada de nuestra curva de altura versus perímetro:
borrapantalla graflineas [[Ymax: 2]] ~
recorrido [deriva "per.h lista 1 ?] dominio [1 2.2 100]
Nuevamente podemos probar valores para la altura y tratar de encontrar aquel que nos dé un valor de derivada igual a 0:
muestra deriva "per.h [1 1.3]
-0.366872658552708
muestra deriva "per.h [1 1.5]
0.222217283936743
muestra deriva "per.h [1 1.4]
-0.0408228342564598
muestra deriva "per.h [1 1.412]
-0.0062819194749153
muestra deriva "per.h [1 1.416]
0.00503703212348938
Pero también podemos usar resuelve:
muestra resuelve [deriva "per.h lista 1] [1 2.2]
1.41421577208004
haz "altura resuelve [deriva "per.h lista 1] [1 2.2]
¿Cuál es el perímetro mínimo encontrado con esta altura?
muestra per.h :altura
5.65685424949929
Resulta que el perímetro mínimo se logra con una ventana cuadrada:
muestra base :altura
1.4142113526696
Este es un documento libre.
Autor: Daniel Ajoy
Esta obra está bajo una Licencia Creative Commons Atribución-CompartirIgual 3.0 Unported.
Resolviendo un problema de maximización usando Logo
Área máxima de triángulo rectángulo