Está en la página 1de 4

Optimización de funciones por el método de

bisección
Montserrat Gaytán A00569562
Michel Hidalgo
Agustín Pérez A00571013
Alejandro Pérez A00571014
M2025 Métodos Numéricos

1. INTRODUCCIÓN
La ciencia y la tecnología describen los fenómenos reales mediante modelos matemáticos. El
estudio de estos modelos permite un conocimiento más profundo del fenómeno, así como de su
evolución futura. La matemática aplicada es la rama de las matemáticas que se dedica a buscar
y aplicar las herramientas más adecuadas a los problemas basados en estos modelos.
Desafortunadamente, no siempre es posible aplicar métodos analíticos clásicos por diferentes
razones:

 No se adecúan al modelo concreto.


 Su aplicación resulta excesivamente compleja.
 La solución formal es tan complicada que hace imposible cualquier interpretación
posterior.
 Simplemente no existen métodos analíticos capaces de proporcionar soluciones al
problema.

En estos casos son útiles las técnicas numéricas, que mediante una labor de cálculo más o
menos intensa, conducen a soluciones aproximadas que son siempre numérica. El importante
esfuerzo de cálculo que implica la mayoría de estos métodos hace que su uso esté íntimamente
ligado al empleo de computadores. De hecho, sin el desarrollo que se ha producido en el campo
de la informática resultaría difícilmente imaginable el nivel actual de utilización de las técnicas
numéricas en ámbitos cada día más diversos.

Los máximos y mínimos en una función f son los valores más grandes (máximos) o más
pequeños (mínimos) que toma la función, ya sea en una región (extremos relativos) o en todo
su dominio (extremos absolutos).
Los extremos relativos de una función f son los valores más grandes (máximos) o más
pequeños (mínimos) de una región del dominio.
1. Derivar la función, obteniendo f’(x).
2. Hallar las raíces de la derivada, es decir, los valores de x tales que la derivada sea 0.

1
3. Se calcula la imagen de los extremos del intervalo (f(a) y f(b)). También se calcula la imagen de
las raíces.

El máximo y mínimo absolutos de f serán:

2. OPTIMIZACIÓN DE FUNCIONES
CÓDIGO:
julia> function mini(xlow,xhigh,f)
xl=xlow ; xh=xhigh
R=((sqrt(5)-1)/2)
for i=1:2100
int=(xh-xl)
d=R*int
x1=xl+d
x2=xh-d
if f(x2)<f(x1)
min=xl
xh=xl
xl=x2
else
min=x2
xl=x1
xh=xh
end
if isapproxd(xl,xh) true
ymin=f(min)
println("El mínimo valor está en x=$min, y=$ymin")&& break end
end
end
mini (generic function with 1 method)

julia> xlow=-1
xhigh=6
f(x)=(x^2+5)/(x+2)
f (generic function with 1 method)

julia> mini(xlow, xhigh, f)


El mínimo valor está en x=0.9999999520215898, y=2.0000000000000004

2
EXPLICACIÓN DEL CÓDIGO
La manera en la que funciona nuestro código está basada en la teoría del “Golden-section”, la
cual es una simple y técnica general para optimizar funciones de una variable. Esta técnica
consiste en que se calcule una distancia entre los intervalos suficiente para poder saber en qué
intervalo se encuentra el máximo o el mínimo. Esta distancia se calcula con el “Golden ratio”,
porque permite encontrar los puntos óptimos de una manera eficiente.
Ya que se tiene esta distancia lo que se hace es calcular un intervalo temporal para poder evaluar
la función a optimizar en estos nuevos valores de x, esto puede hacer que se presenten dos
casos:
1. Si f(x1) < f(x2), entonces nuestro probable mínimo es x2, y ahora nuestro intervalo cambia
y nuestra x más chica se vuelve x1 y nuestra x más grande se queda igual.
2. Si f(x2) < f(x1), entonces nuestro probable mínimo es xl, y ahora nuestro intervalo cambia
y nuestra x más grande se vuelve xl y nuestra x más chica se vuelve x2.
Este proceso se repite tantas veces sean necesarias hasta encontrar nuestro mínimo de la
función, tenemos un máximo de 2100 iteraciones, valor establecido en clase, y en caso de que
nuestros valores de la x más chica y la x más grande sean lo suficientemente cercanos (función
isappoxd) con 8 dígitos el for se termina y hemos encontrado el valor del mínimo de nuestra
función.

3
GRÁFICA DE LA FUNCIÓN UTILIZADA
using PyPlot
ymin=-20 ; ymax=80 ; xmin=-2 ; xmax=6 ; points=200
Y=Array{Float64}(points) ; X=Array{Float64}(points)
for i=1:points
x = (xmax-xmin)*(i-1)/(points-1) + xmin
X[i] = x ; Y[i] = (x^2+5)/(x+2)
end
ylim(ymin,ymax) ; plot(X,Y, color="blue", linewidth=1.0)

3. CONCLUSIONES
Éste código nos permitirá en un futuro, obtener el valor mínimo de cualquier función en un
intervalo dado. En el mundo industrial es muy común el uso de máximos y mínimos; para
minimizar cosos, para ahorrar materiales, para optimizar espacio, para optimizar tiempos, para
la mejora de la calidad y la productividad etc., por lo que el programa nos será de gran utilidad
una vez que estemos ejerciendo nuestra carrera.
Primero que nada, ésta tarea nos ayudó mucho a reforzarnos como equipo, ya que fue muy
retadora. Nos ayudó también a ser un tanto autodidactas, porque tuvimos que realizar una
investigación previa para poder realizar el código.

También podría gustarte