bernstein

Полиномы Бернштейна

Описание

пример

bernstein(f,n,t) с указателем на функцию f возвращает nполином Бернштейна I-го порядка 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полином Бернштейна I-го порядка, оцениваемый в точке t. Этот синтаксис относится к g как одномерная функция переменной, определяемая symvar(g,1).

Если любой аргумент символичен, bernstein преобразует все аргументы, кроме указателя на функцию, в символьные и преобразует результаты указателя на функцию в символьные.

пример

bernstein(g,var,n,t) с символическим выражением или функцией g возвращает аппроксимацию nполином Бернштейна I-го порядка, относительно g как одномерная функция переменной var.

Примеры

Приближение функции синуса, заданная как указатель на функцию

Аппроксимируйте функцию синуса полиномами Бернштейна 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

Figure contains an axes. The axes with title Bernstein polynomials contains 3 objects of type functionline. These objects represent sine function, 10th-degree polynomial, 100th-degree polynomial.

Приближение экспоненциальной функции, заданная как символьное выражение

Аппроксимируйте экспоненциальную функцию полиномом Бернштейна второго порядка в переменной 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

Figure contains an axes. The axes contains 3 objects of type line. These objects represent original function, Bernstein polynomial, simplified Bernstein polynomial.

Входные параметры

свернуть все

Функция, которая будет аппроксимирована полиномом, заданным как указатель на функцию. f должен принять один скалярный входной параметр и вернуть скалярное значение.

Функция, которая будет аппроксимирована полиномом, заданным как символьное выражение или функция.

Полиномиальный порядок Бернштейна, заданный как неотрицательное число.

Точка оценки, заданная как число, символьное число, переменная, выражение или функция. Если t является символьной функцией, точка оценки является математическим выражением, которое задает t. Чтобы извлечь математическое выражение, определяющее t, bernstein использует formula(t).

Свободная переменная, заданная как символьная переменная.

Подробнее о

свернуть все

Бернштейн- Полиномы

Полином Бернштейна является линейной комбинацией базисных полиномов Бернштейна.

Полином Бернштейна со степенью n определяется следующим образом:

B(t)=k=0nβkbk,n(t).

Вот,

bk,n(t)=(nk)tk(1t)nk,   k=0,,n

являются базисными полиномами Бернштейна, и (nk) является биномиальным коэффициентом.

Коэффициенты βk называются коэффициентами Бернштейна или коэффициентами Безье.

Если f является непрерывной функцией на интервале [0, 1] и

Bn(f)(t)=k=0nf(kn)bk,n(t)

- аппроксимирующий полином Бернштейна, тогда

limnBn(f)(t)=f(t)

равномерно в t по интервалу [0, 1].

Совет

  • Символьные полиномы, возвращенные для символьных t численно стабильны при подстановке числовых значений между 0 и 1 для t.

  • Если упростить символьный полином Бернштейна, результат может оказаться нестабильным при подстановке числовых значений для параметра кривой t.

См. также

| | | |

Введенный в R2013b