bernsteinПолиномы Бернстайна
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
bernstein(f,n,t) bernstein(g, <var>,n,t)
bernstein(n, f, t) с одномерным функциональным f возвращает nth-порядок полином Бернстайна sum(binomial(n,k)*t^k*(1-t)^(n-k)*f(k/n),k = 0..n) оцененный в точке t. Этот полином является приближением f на интервале [0,1]. Смотрите пример 1.
bernstein(g, <var>, n, t) с символьным выражением g возвращает nth-порядок полиномиальное приближение Бернстайна g, оцененный в точке t. Этот синтаксис расценивает g как одномерная функция переменной var. Можно не использовать определение переменной var если выражение g является одномерным. Если это многомерно, необходимо задать var. Смотрите пример 2 и пример 3.
Представление Бернстайна полинома численно устойчиво при замене численными значениями между 0 и 1 для t. Тем не менее, если вы упрощаете полином Бернстайна, результат может быть нестабильным при заменении численными значениями t. Смотрите пример 4.
Задайте функцию, представляющую линейный пандус как функция MuPAD®:
f := t -> triangularPulse(1/4, 3/4, infinity, t):
Аппроксимированный f согласно пятому порядку полиномы Бернстайна в переменной t:
b5 := bernstein(f, 5, t)
![]()
Аппроксимируйте синусоидальную функцию sin(2*PI*t) 10-м и 100-й степенью полиномы Бернстайна:
b10 := bernstein(sin(2*PI*t), 10, t): b100 := bernstein(sin(2*PI*t), 100, t):
Постройте sin(2*pi*t) и его приближения:
p1 := plot::Function2d(sin(2*PI*t), t = 0..1,
LegendText = "sine function",
Color = RGB::Red):
p2 := plot::Function2d(b10, t = 0..1,
LegendText = "10th degree polynomial",
Color = RGB::Green):
p3 := plot::Function2d(b100, t = 0..1,
LegendText = "100th degree polynomial",
Color = RGB::Blue):
plot(p1, p2, p3, LegendVisible = TRUE)
Аппроксимируйте показательную функцию полиномом Бернстайна второго порядка в переменной t:
bernstein(exp(x), 2, t)
![]()
Аппроксимируйте многомерную показательную функцию y*exp(x*y). Необходимо задать переменную, потому что это выражение содержит больше чем одну переменную. bernstein рассматривает выражение как одномерную функцию той переменной. Например, чтобы обработать это выражение как одномерную функцию x, Введите:
bernstein(y*exp(x*y), x, 2, t)
![]()
Обрабатывать это выражение как одномерную функцию y, Введите:
bernstein(y*exp(x*y), y, 2, t)
![]()
Когда вы упрощаете старший символьный полином Бернстайна, результат часто не может оцениваться численно устойчивым способом.
Аппроксимируйте эту функцию меандра 100-й степенью полином Бернстайна, и затем упростите результат:
f := rectangularPulse(1/4,3/4,t): f1 := bernstein(f, 100, t): f2 := simplify(f1):
Сравните график исходной функции меандра f, его численно устойчивое представление Бернстайна f1, и его упрощенная версия f2. Упрощенная версия показывает область числовой нестабильности.
plot(f, f1, f2, t = 0..1)

|
Неотрицательное целое число. |
|
Функция, принимающая один входной параметр и возвращающая арифметическое выражение. |
|
Арифметическое выражение. |
|
Арифметическое выражение. |
|
Неопределенный, заданный как идентификатор или индексированный идентификатор. |
Арифметическое выражение.
Полином Бернстайна степени n определяется следующим образом:
![]()
Здесь
![]()
базисные полиномы Бернстайна, и
![]()
Коэффициенты
![]()
Если f непрерывная функция на интервале [0, 1] и
![]()
аппроксимация полином Бернстайна, затем
![]()
однородно в t на интервале [0, 1].