找到最小的 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
所以最小的 n
是 4.4445e7+1
。通过更仔细的分析,这可以减少到 n=44444445
.
找到最小的 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
所以最小的 n
是 4.4445e7+1
。通过更仔细的分析,这可以减少到 n=44444445
.