bernstein

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

Синтаксис

bernstein(f,n,t)
bernstein(g,n,t)
bernstein(g,var,n,t)

Описание

пример

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

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

пример

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

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