Metti a punto un programma per calcolare, con il metodo della bisezione, lo zero di una funzione continua (ossia l'input a cui essa associa 0) in un intervallo ai cui estremi essa assuma valori di segno opposto. Fai in modo che il programma via via stampi i successivi intervalli che si restringono attorno allo zero.

Ecco un possibile programma in R (illustrato per risolvere x²=2):
g <- function (x) x^2-2
a <- 1; b <- 2
for(i in 1:20) {h <- (b-a)/2;
  ifelse(g(a)*g(a+h)>0,a <- a+h,b <- b-h);
  print(c(a,b,g(a+h)),10)}
e le uscite:
[1] 1.00 1.50 0.25
[1] 1.25 1.50 0.25
[1] 1.375 1.500 0.250
[1] 1.37500000 1.43750000 0.06640625
...
[1] 1.414213181e+00 1.414215088e+00 4.314817488e-06
[1] 1.414213181e+00 1.414214134e+00 1.617417183e-06

Possiamo utilizzare anche WolframAlpha:

solve x^2 - 2 = 0 using bisection method for 1 <= x <= 2 with 3 digits precision
    x = 1.41
solve x^2 - 2 = 0 using bisection method for 1 <= x <= 2 with 30 digits precision
    x = 1.41421356237309504880168872421
   

Si noti che non sarebbe facile introdurre una sensata condizione di "arresto automatico". Nella seconda delle sequenze di uscite sotto riportate si vede che cosa si ottiene per una funzione per cui ci attendiamo come zero 1/2. I problemi sorgono in quanto essa tende a 0 molto velocemente.
g <- function (x) (2*x-1)^61; a <- 0; b <- 3
for(i in 1:20) {h<- (b-a)/2; ifelse(g(a)*g(a+h)>0,a<- a+h,b<- b-h); print(c(a,b,g(a+h)),10)}
[1] 0.000000000e+00 1.500000000e+00 2.305843009e+18
[1] 0.00000000e+00 7.50000000e-01 4.33680869e-19
...
[1] 4.980468750e-01 5.009765625e-01 5.426657103e-166
[1] 4.980468750e-01 4.995117188e-01 -2.353437368e-184
...
[1] 4.989624023e-01 4.989652634e-01 -1.851181727e-164

Per la scelta di calcolare la media con a+(b-a)/2 invece che con (a+b)/2: Strutture numeriche e non neGli Oggetti Matematici

QUI trovi script che implementano questo procedimento.


Commenti se si usasse il QBasic.
Ecco un possibile programma in QBASIC  [per una versione in JavaScript clicca qui ed esamina il codice sorgente Html usando il pulsante destro del mouse; vedi nota per cambiare la funzione;  oppure usa il seguente file per il programma Poligon; vedi l'help per il significato delle "costanti" in Poligon].
Per eseguire il programma in QBasic (che puoi aprire da QUI) copia le righe seguenti (da "nmax" a "return" compreso) e incollale nella finestra di lista del QBasic usando il bottone in altro a sinistra della finestra in cui Windows visualizza il QBasic (vedi QUI).

PRINT "Premi Crtl+C quando vuoi finire"
Via:
INPUT "a,b"; a, b
x = a: GOSUB Funz: s1 = SGN(y)
x = b: GOSUB Funz: s2 = SGN(y)
IF s2 <> -s1 THEN PRINT "in a e b F non ha segno opposto": GOTO Via

Ripeti:
x = a + (b - a) / 2
GOSUB Funz
IF SGN(y) = s1 THEN a = x ELSE b = x
PRINT a; TAB(15); b; TAB(50); "f(m)="; y; TAB(55);
INPUT "Premi ACapo", www
GOTO Ripeti

Funz:
'y = x ^ 5 - x ^ 4 - x ^ 3 + 1  'prova con [a,b]=[1.2,2]
'y = SIN(x)  ' prova con [a,b] = [3,4]
y = x ^ 2 - 2  ' prova con [a,b] = [1,2]
'y = (3 * x - 1) ^ 19  ' prova con [0,1]
RETURN
Attualmente il programma è predisposto per risolvere x2-2=0. Cambiando il sottoprogramma Funz (inserendo una nuova funzione o togliendo il simbolo di commento, apice, in modo da rendere attiva una delle altre righe del sottoprogramma) si possono trovare zeri di altre funzioni, scegliendo opportunamente l'intervallo iniziale.
Nella prima delle sequenze di uscite sotto riportate si vede che cosa si ottiene per la funzione preimpostata: l'intervallo delle uscite si concentra attorna alla soluzione che sabbiamo essere √2.
Si noti che non sarebbe facile introdurre una sensata condizione di "arresto automatico". Nella seconda delle sequenze di uscite sotto riportate si vede che cosa si ottiene per una funzione per cui ci attendiamo come zero 1/3. I problemi sorgono in quanto si tratta di un f(x) che tende a 0 molto velocemente per x → 1/3.
                               y = x^2-2
Premi Crtl+C quando vuoi finire
a,b? 1,2
 1             1.5           f(m)= .25                Premi ACapo
 1.25          1.5           f(m)=-.4375              Premi ACapo
 1.375         1.5           f(m)=-.109375            Premi ACapo
 1.375         1.4375        f(m)= 6.640625E-02       Premi ACapo
  ...
 1.414213      1.414215      f(m)=-1.079981E-06       Premi ACapo
 1.414213      1.414214      f(m)= 1.617417E-06       Premi ACapo
 1.414213      1.414214      f(m)= 2.687177E-07       Premi ACapo
 1.414213      1.414214      f(m)=-4.056319E-07       Premi ACapo
 1.414214      1.414214      f(m)=-6.845708E-08       Premi ACapo

                               y = (3*x-1)^19
a,b? 0,1
 0             .5            f(m)= 1.907349E-06       Premi ACapo
 .25           .5            f(m)=-3.637979E-12       Premi ACapo
 .25           .375          f(m)= 6.938894E-18       Premi ACapo
 .3125         .375          f(m)=-1.323489E-23       Premi ACapo
 .3125         .34375        f(m)= 2.524355E-29       Premi ACapo
 .328125       .34375        f(m)=-4.814825E-35       Premi ACapo
 .328125       .3359375      f(m)= 9.18355E-41        Premi ACapo
 .328125       .3320313      f(m)= 0                  Premi ACapo
 .3300781      .3320313      f(m)=-6.372368E-39       Premi ACapo
 .3310547      .3320313      f(m)=-7.264331E-42       Premi ACapo
 .331543       .3320313      f(m)=-7.426882E-44       Premi ACapo
 .3317871      .3320313      f(m)=-4.203895E-45       Premi ACapo
 .3317871      .3319092      f(m)= 0                  Premi ACapo
 .3318481      .3319092      f(m)=-2.802597E-45       Premi ACapo
 .3318787      .3319092      f(m)=-1.401298E-45       Premi ACapo
 .3318787      .3318939      f(m)= 0                  Premi ACapo
 .3318787      .3318863      f(m)= 0                  Premi ACapo
 .3318787      .3318825      f(m)= 0                  Premi ACapo
 .3318806      .3318825      f(m)=-1.401298E-45       Premi ACapo
 .3318806      .3318815      f(m)= 0                  Premi ACapo
 .3318806      .331881       f(m)= 0                  Premi ACapo
 .3318806      .3318808      f(m)= 0                  Premi ACapo
 .3318806      .3318807      f(m)= 0                  Premi ACapo
 .3318806      .3318807      f(m)=-1.401298E-45       Premi ACapo
                 cambiando a e b:
a,b? 0.333,0.334
 .3335         .334          f(m)= 0                  Premi ACapo
 .33375        .334          f(m)= 0                  Premi ACapo
    ...
 .3339999      .334          f(m)= 0                  Premi ACapo
 .334          .334          f(m)= 0                  Premi ACapo