求最小n,使得n次Bernstein逼近是好的,关于函数x^3的[0,1]上的一致范数,误差不超过10^(-8)。在标题中,我正在努力寻找这样的n。如果这个错误是10^(-2),这将是很容易的,但我的程序在计算如此高的功率时会卡住。这是我写的一个程序,它可以很好地处理小的n,这样误差就很大了。但是错误10^(-8)呢?问题是Bernstein多项式有因子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)
Bernstein和与原始函数
x^3
的差是现在使用这些系数的上界来寻找
n
的上界。这就给出了,用图解法确定系数函数的极大值所以最小的
n
是4.4445e7+1
。通过更仔细的分析,这可以简化为n=44444445
。你知道吗相关问题 更多 >
编程相关推荐