Bernstein基函数
J n , k = C n k u k ( 1 − u ) n − k J_{n,k} = C^{k}_{n}u^{k}(1-u)^{n-k} Jn,k=Cnkuk(1−u)n−k
其中, k = 0 , 1 , ⋯ , n ; u ∈ [ 0 , 1 ] k=0,1,\cdots,n; u\in[0,1] k=0,1,⋯,n;u∈[0,1]
C n k = n ! k ! ( n − k ) ! ) C^{k}_{n} = \frac{n!}{k!(n-k)!)} Cnk=k!(n−k)!)n!
导包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import math
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码
阶乘函数
def jc(x):
return math.factorial(x)
Bernstein基函数绘制
def Bernstein(n):
u = np.linspace(0,1,100)
fig = plt.figure(figsize=(10,8))
title = str(n)+"次Bernstein基函数"
fig.suptitle(title)
for i in range(n+1):
k = i
C_nk = jc(n)/(jc(k)*jc(n-k))
J_nk = C_nk*pow(u,k)*pow(1-u,n-k)
plt.plot(u,J_nk)
plt.show()
n = int(input("请输入n:"))
Bernstein(n)
请输入n:4