Otro enfoque es el método de bisección. Vale la pena entender esta técnica porque es flexible y puede usarse para resolver una amplia variedad de problemas.
Aquí hay una implementación de bisección para este problema específico en Python 2.7:
x_lower = 3 # Establezca un límite inferior inicial para x: 3 ^ 3 = 27; 27 <64
x_upper = 4 # Establezca un límite superior inicial para x: 4 ^ 4 = 256; 256> 64
# Disminuya la distancia entre los límites hasta que sea lo suficientemente pequeña
mientras cierto:
# Salida conjetura actual para x a la consola
print ‘Adivinación actual para x:% f’% x_lower
print ’64 – guess ^ guess:% f ‘% (64 – x_lower ** x_lower)
impresión
- ¿Cómo cada función diferenciable es continua?
- Cómo probar [math] \ int_0 ^ {2 \ pi} \ sin (mt) \ cos (nt) \, dt = 0 [/ math] para cualquier número entero [math] n [/ math] y [math] m [ /matemáticas]
- Cómo integrar [math] \ int _ {- \ infty} ^ {\ infty} \, \ dfrac {e ^ {- ixp / \ hbar}} {x ^ 2 + a ^ 2} \, dx [/ math]
- ¿Cuál es la longitud del lado del cuadrado?
- Cómo encontrar los elementos de una base para un campo de división
Deje de refinar adivine si la diferencia entre el límite superior e inferior es pequeña
si x_upper – x_lower <10 ** – 6:
rotura
# Calcular el punto medio de los límites
punto medio = (x_lower + x_upper) / 2.
# Si el punto medio es menor que x, conviértalo en el nuevo límite inferior
si punto medio ** punto medio <64:
x_lower = punto medio
# De lo contrario, conviértalo en el nuevo límite superior
más:
x_upper = punto medio
Aquí está la salida del código:
Adivinación actual para x: 3.000000
64 – adivina ^ adivina: 37.000000
Adivinación actual para x: 3.000000
64 – adivina ^ adivina: 37.000000
Conjetura actual para x: 3.250000
64 – adivina ^ adivina: 17.908491
Conjetura actual para x: 3.375000
64 – adivinar ^ adivinar: 3.336984
Conjetura actual para x: 3.375000
64 – adivinar ^ adivinar: 3.336984
Conjetura actual para x: 3.375000
64 – adivinar ^ adivinar: 3.336984
Conjetura actual para x: 3.390625
64 – adivina ^ adivina: 1.197084
Conjetura actual para x: 3.398438
64 – adivinar ^ adivinar: 0.097264
Conjetura actual para x: 3.398438
64 – adivinar ^ adivinar: 0.097264
Conjetura actual para x: 3.398438
64 – adivinar ^ adivinar: 0.097264
Conjetura actual para x: 3.398438
64 – adivinar ^ adivinar: 0.097264
Conjetura actual para x: 3.398926
64 – adivina ^ adivina: 0.027851
Conjetura actual para x: 3.398926
64 – adivina ^ adivina: 0.027851
Conjetura actual para x: 3.399048
64 – adivinar ^ adivinar: 0.010485
Conjetura actual para x: 3.399109
64 – adivina ^ adivina: 0.001801
Conjetura actual para x: 3.399109
64 – adivina ^ adivina: 0.001801
Conjetura actual para x: 3.399109
64 – adivina ^ adivina: 0.001801
Conjetura actual para x: 3.399117
64 – adivina ^ adivina: 0.000715
Conjetura actual para x: 3.399120
64 – adivina ^ adivina: 0.000172
Conjetura actual para x: 3.399120
64 – adivina ^ adivina: 0.000172
Conjetura actual para x: 3.399121
64 – adivina ^ adivina: 0.000036
La última sección de la salida muestra que el algoritmo convergió a [math] \ mathbf {x \ approx 3.399121} [/ math].