Bernstein Polynomial Approximations

EXAMPLE 1: Find the first value of n such that the nth Bernstein polynomial for f(x) = |x-0.5| has ||pn - f|| < 0.1.

> pn:= x-> sum((n!/k!/(n-k)!)*abs(k/n-0.5)*x^k*(1-x)^(n-k),k=0..n);

pn := proc (x) options operator, arrow; sum(factorial(n)*abs(k/n-.5)*x^k*(1-x)^(n-k)/(factorial(k)*factorial(n-k)), k = 0 .. n) end proc

> n:=15;

n := 15

> plot([0.1,abs(x-0.5),pn(x)],x=0..1,color=[black,gray,black],
linestyle=[2,1,1],thickness=2);

[Plot]

> pn(0.5);

.1047363281

> n:=16;

n := 16

> pn(0.5);

0.9819030762e-1

The answer is n=16.

EXAMPLE 2: Repeat for f(x) = | |x-0.5| - 0.25| and ||pn - f||<0.02.

> f:=x-> abs(abs(x-0.5)-0.25);

f := proc (x) options operator, arrow; abs(abs(x-.5)-.25) end proc

> pn:= x-> sum((n!/k!/(n-k)!)*f(k/n)*x^k*(1-x)^(n-k),k=0..n);

pn := proc (x) options operator, arrow; sum(factorial(n)*f(k/n)*x^k*(1-x)^(n-k)/(factorial(k)*factorial(n-k)), k = 0 .. n) end proc

> n:=398;

n := 398

> plot([0.02,0.23,f(x),pn(x)],x=0..1,color=[black,black,gray,black],
linestyle=[2,2,1,1],thickness=2);

[Plot]

> pn(0.5);

.2300153875

The answer is n=398.