bernstein

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

Описание

пример

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

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

пример

bernstein(g,var,n,t) с символьным выражением или функциональным g возвращает аппроксимацию nth-порядок полином Бернстайна, относительно 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

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

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

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

свернуть все

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