Многочлены Бернштейна
bernstein( с дескриптором функции f,n,t)f возвращает значение nмногочлен Бернштейна 5-го порядка symsum(nchoosek(n,k)*t^k*(1-t)^(n-k)*f(k/n),k,0,n), оценено в точке t. Этот многочлен аппроксимирует функцию f за интервал [0,1].
bernstein( с символическим выражением или функцией g,n,t)g возвращает значение nмногочлен Бернштейна третьего порядка, вычисленный в точке t. Этот синтаксис касается g как одномерная функция переменной, определяемой symvar(g,1).
Если какой-либо аргумент символический, bernstein преобразует все аргументы, кроме дескриптора функции, в символьные и преобразует результаты дескриптора функции в символьные.
Аппроксимировать синусоидальную функцию многочленами Бернштейна 10-й и 100-й степени.
syms t
b10 = bernstein(@(t) sin(2*pi*t), 10, t);
b100 = bernstein(@(t) sin(2*pi*t), 100, t);График sin(2*pi*t) и его аппроксимации.
fplot(sin(2*pi*t),[0,1]) hold on fplot(b10,[0,1]) fplot(b100,[0,1]) legend('sine function','10th-degree polynomial',... '100th-degree polynomial') title('Bernstein polynomials') hold off

Аппроксимировать экспоненциальную функцию многочленом Бернштейна второго порядка в переменной t:
syms x t bernstein(exp(x), 2, t)
ans = (t - 1)^2 + t^2*exp(1) - 2*t*exp(1/2)*(t - 1)
Аппроксимация многомерной экспоненциальной функции. При аппроксимации многомерной функции bernstein рассматривает его как одномерную функцию переменной по умолчанию, определяемой symvar. Переменная по умолчанию для выражения y*exp(x*y) является x:
syms x y t symvar(y*exp(x*y), 1)
ans = x
bernstein рассматривает это выражение как одномерную функцию x:
bernstein(y*exp(x*y), 2, t)
ans = y*(t - 1)^2 + t^2*y*exp(y) - 2*t*y*exp(y/2)*(t - 1)
Рассматривать y*exp(x*y) как функция переменной y, явно укажите переменную:
bernstein(y*exp(x*y), y, 2, t)
ans = t^2*exp(x) - t*exp(x/2)*(t - 1)
Приблизительная функция f представление линейного клина многочленами Бернштейна пятого порядка в переменной t:
syms f(t) f(t) = triangularPulse(1/4, 3/4, Inf, t); p = bernstein(f, 5, t)
p = 7*t^3*(t - 1)^2 - 3*t^2*(t - 1)^3 - 5*t^4*(t - 1) + t^5
Упростите результат:
simplify(p)
ans = -t^2*(2*t - 3)
При упрощении символьного многочлена Бернштейна высокого порядка результат часто невозможно оценить численно стабильным способом.
Аппроксимируйте эту функцию прямоугольного импульса многочленом Бернштейна 100-й степени, а затем упростите результат.
f = @(x)rectangularPulse(1/4,3/4,x);
b1 = bernstein(f, 100, sym('t'));
b2 = simplify(b1);Преобразование многочлена b1 и упрощенный многочлен b2 к функциям MATLAB ®.
f1 = matlabFunction(b1); f2 = matlabFunction(b2);
Сравнение графика исходной прямоугольной импульсной функции, ее численно устойчивого представления Бернстайна f1, и его упрощенная версия f2. Упрощенная версия не стабильна в числовом отношении.
t = 0:0.001:1; plot(t, f(t), t, f1(t), t, f2(t)) hold on legend('original function','Bernstein polynomial',... 'simplified Bernstein polynomial') hold off

Символьные многочлены, возвращенные для символьных t являются численно стабильными при замене числовых значений между 0 и 1 для t.
Если упростить символический многочлен Бернштейна, результат может быть нестабильным при замене числовых значений для параметра кривой t.
bernsteinMatrix | formula | nchoosek | symsum | symvar