求最小n,使n次Bernstein逼近好,误差不超过10^(8)

2024-06-26 02:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

求最小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)

Tags: import程序returndef错误scipy误差optimize
1条回答
网友
1楼 · 发布于 2024-06-26 02:25:46

Bernstein和与原始函数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。你知道吗

相关问题 更多 >