找到最小的 n 使得 n-th Bernstein 近似是好的,误差最多为 10^(-8)

Find minimal n such that n-th Bernstein approximation is good with error at most 10^(-8)

找到最小的 n,使得 n-th Bernstein 近似是好的,关于函数 x^3 的 [0,1] 上的统一范数,误差最多为 10^(-8)。如标题所示,我正在努力寻找这样的 n。如果这个错误是 10^(-2) 就很容易了,但是我的程序在计算如此高的幂时卡住了。这是我写的一个程序,这对寻找小的n很有用,这样错误就很大了。但是错误 10^(-8) 呢?问题是伯恩斯坦多项式有因子 x^k(1-x)^(n-k) 所以当 n 很大时,乘法的数量很大。

import scipy.special
import scipy.optimize
import pylab
import numpy
def cub(x):
    return x*x*x

def bernstein(k,n,x):
    a=scipy.special.binom(n, k)
    return cub(k/n)*a*x**k*(1-x)**(n-k)
def suma(n,x):
    s=0
    for k in range (0,n+1):
        s=s+bernstein(k,n,x)
    return s
def error(x,n):
    b=abs(cub(x)-suma(n,x))
    return b
def errorn(x,n):
    b=-error(x,n)
    return b
a=0
for n in range (1,100):
    def funkcja(x):
        f=errorn(x,n)
        return f
    normax=scipy.optimize.fminbound(funkcja, 0, 1)
    norma=-errorn(normax,n)
    if norma<0.01:
        a=norma
        break
    else:
        continue
print(n)

伯恩斯坦和与原函数x^3的差

x*(1-x)*(1-2*x)/n^2 + 3*x^2*(1-x)/n

现在使用这些系数的上限来找到 n 上的界限。这给出,以图形方式确定系数函数的最大值,

error <= 0.0963/n^2+0.44445/n <= 1e-8

n >= 4.4445e7 + 0.963e7/n

所以最小的 n4.4445e7+1。通过更仔细的分析,这可以减少到 n=44444445.