exponenta event banner

bernstein

Многочлены Бернштейна

Описание

пример

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 преобразует все аргументы, кроме дескриптора функции, в символьные и преобразует результаты дескриптора функции в символьные.

пример

bernstein(g,var,n,t) с символическим выражением или функцией g возвращает аппроксимирующее nмногочлен Бернштейна 5-го порядка, относительно 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 (1  −  t) n k, k = 0,..., n

- базисные многочлены Бернштейна, а (nk) - биномиальный коэффициент.

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

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

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

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

limn→ ∞Bn (f) (t) = f (t)

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

Совет

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

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

См. также

| | | |

Представлен в R2013b