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)

аппроксимация полином Бернстайна, затем

lim nBn(f)(t)=f(t)

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

Советы

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

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

Смотрите также

| | | |

Введенный в R2013b

Для просмотра документации необходимо авторизоваться на сайте