La grandezza B è legata alla grandezza A secondo la relazione: B = A3 - 6 A2 + 11 A. Nel caso in cui A = 2 ± 1 quanto vale B, ovvero qual è l'intervallo costituito dai valori di B al variare di A tra 2 – 1 e 2 + 1?

Per A = 1 e per A = 3 B  vale 6, ma ciò non significa che in tutto l'intervallo valga 6: ciò accadrebbe solo se ivi B fosse costante, e questo non può essere in quanto B varia come una funzione cubica di A.
Dobbiamo studiare l'andamento di questa funzione.
d(A3 - 6 A2 + 11 A) / dA = 3A2 - 12A + 11. È una quadratica con coefficiente direttivo positivo. La nostra funzione ha quindi pendenza negativa tra le due eventuali soluzioni di 3A2-12A+11 = 0; cerchiamole.
12/6 - √(122-3·4·11)/6 = 2 - 2√(62-3·11)/6 = 2 - √3/3 = 2 - 1/√3,
2 + 1/√3
B assume valore massimo in 2 - 1/√3 e valore minimo in 2 + 1/√3. Con la calcolatrice o ad es. con R calcolo questi valori:
x <- c(2+1/sqrt(3),2-1/sqrt(3)); x^3-6*x^2+11*x
  5.6151   6.3849

e concludo che per A in [1,3] B sta in [5.615…, 6.384…] che è contenuto in [5.6, 6.4].
Posso dire che per A = 2 ± 1  B = 6.0 ± 0.4.

Posso risolvere facilmente il problema anche con questi script, e trovare per A l'intervallo [1.422, 2.578] e per B [5.615, 6.386].

Anche con R (caricata con "source" una libreria) posso procedere molto facilmente:
source("http://macosa.dima.unige.it/r.R")
A=2+EPS(1); B=A^3-6*A^2+11*A; range(B)
# 5.6151 6.3849

Con R potrei anche cercare minimo/massimo calcolando la derivata di f, o direttamente, con un algoritmo:

f <- function(x) x^3-6*x^2+11*x
a <- 1; b <-2
for(i in 1:20) { h <- (b-a)/3;y1 <- f(a); y2 <- f(a+h); y3 <- f(a+2*h)
      if(y1 < y2 & y2 < y3) a <- a+h else b <- b-h }; c(a,b); f(c(a,b))
               1.422453 1.422753   6.3849 6.3849
a <- 2; b <-3
for(i in 1:20) { h <- (b-a)/3;y1 <- f(a); y2 <- f(a+h); y3 <- f(a+2*h)
      if(y1 < y2 & y2 < y3) b <- b-h else a <- a+h }; c(a,b); f(c(a,b))
               2.584819 2.585120   5.615197 5.615205

Con altri cicli potrei trovare più cifre, ma queste sono sufficienti.

Potrei, anche, usare un algoritmo per trovare minimo e massimo che impieghi il generatore di numeri casuali:

x <- NULL; y <- NULL; e <- NULL
x[1] <- 2; e[1] <- 1
# se avessi altri dati con altre precisioni li aggiungerei
# con x[2] <- ..., e[2] <- ...
dati <- 1; n <- 1e5
# se i dati sono di più posso diminuire n
min <- 1e100; max <- -1e100
for(j in 1:n)
 {for(k in 1:dati) y[k] <- x[k] + runif( 1,min=-e[k],max=e[k]);
 u <- y[1]^3-6*y[1]^2+11*y[1]
 if (u < min) min <- u; if (u > max) max <- u}
min; max
#   5.6151  6.3849