Сделайте кусочный полином
Создайте кусочный полином, который имеет кубический полином в интервале [0,4], квадратичный полином в интервале [4,10] и биквадратный полином в интервале [10,15].
breaks = [0 4 10 15]; coefs = [0 1 -1 1 1; 0 0 1 -2 53; -1 6 1 4 77]; pp = mkpp(breaks,coefs)
pp = struct with fields:
form: 'pp'
breaks: [0 4 10 15]
coefs: [3x5 double]
pieces: 3
order: 5
dim: 1
Оцените кусочный полином во многих точках в интервале [0,15] и постройте результаты. Постройте вертикальные пунктирные графики в точках останова, где полиномы встречаются.
xq = 0:0.01:15; plot(xq,ppval(pp,xq)) line([4 4],ylim,'LineStyle','--','Color','k') line([10 10],ylim,'LineStyle','--','Color','k')
Создайте и постройте кусочный полином с четырьмя интервалами, которые чередуются между двумя квадратичными полиномами.
Первые два подграфика показывают квадратичный полином и его отрицание, переключенное к интервалам [-8,-4] и [-4,0]. Полином
Третий подграфик показывает кусочный полином, созданный путем чередования этих двух квадратичных частей более чем четыре интервала. Вертикальные линии добавлены, чтобы показать точки, где полиномы встречаются.
subplot(2,2,1) cc = [-1/4 1 0]; pp1 = mkpp([-8 -4],cc); xx1 = -8:0.1:-4; plot(xx1,ppval(pp1,xx1),'k-') subplot(2,2,2) pp2 = mkpp([-4 0],-cc); xx2 = -4:0.1:0; plot(xx2,ppval(pp2,xx2),'k-') subplot(2,1,2) pp = mkpp([-8 -4 0 4 8],[cc;-cc;cc;-cc]); xx = -8:0.1:8; plot(xx,ppval(pp,xx),'k-') hold on line([-4 -4],ylim,'LineStyle','--') line([0 0],ylim,'LineStyle','--') line([4 4],ylim,'LineStyle','--') hold off
breaks
— Точки остановаТочки останова в виде вектора из длины L+1
со строго увеличивающимися элементами, которые представляют начало и конец каждого L
интервалы.
Типы данных: single
| double
coefs
— Полиномиальные коэффициентыПолиномиальные коэффициенты в виде L
- k
матрица с i-ой строкой coefs(i,:)
содержа локальные коэффициенты порядка k
полином на i-ом интервале, [breaks(i), breaks(i+1)]
. Другими словами, полиномом является coefs(i,1)*(X-breaks(i))^(k-1) + coefs(i,2)*(X-breaks(i))^(k-2) + ... + coefs(i,k-1)*(X-breaks(i)) + coefs(i,k)
.
Типы данных: single
| double
d
— РазмерностьРазмерность в виде скаляра или вектора из целых чисел. Задайте d
показать, что кусочный полином имеет содействующие значения размера d
.
Типы данных: single
| double
pp
— Кусочный полиномКусочный полином, возвращенный как структура. Используйте эту структуру с ppval
функция, чтобы оценить кусочный полином в одной или нескольких точках запроса. Структура имеет эти поля.
Поле | Описание |
---|---|
form |
|
breaks | Вектор из длины |
coefs |
|
pieces | Количество частей, |
order | Порядок полиномов |
dim | Размерность цели |
Начиная с полиномиальных коэффициентов в coefs
локальные коэффициенты для каждого интервала, необходимо вычесть более низкую конечную точку соответствующего интервала узла, чтобы использовать коэффициенты в обычном полиномиальном уравнении. Другими словами, для коэффициентов [a,b,c,d]
на интервале [x1,x2]
, соответствующий полином
Указания и ограничения по применению:
Структура output pp
отличается от pp
структура в MATLAB®. В MATLAB, ppval
не может использовать pp
структура из генератора кода. Для генерации кода, ppval
не может использовать pp
структура создается MATLAB. unmkpp
может использовать pp
MATLAB структура для генерации кода.
Создать pp
MATLAB структура от
pp
структура создается генератором кода:
В генерации кода использовать unmkpp
возвратить полиномиальные детали в MATLAB.
В MATLAB использовать mkpp
создать pp
структура.
Если вы не обеспечиваете d
, затем coefs
должно быть двумерным и иметь постоянное число столбцов. В этом случае количество столбцов является порядком.
Задавать кусочный постоянный полином, coefs
должен быть вектор-столбец или d
должен иметь по крайней мере два элемента.
Если вы обеспечиваете d
и d
1
, затем d
должна быть константа. В противном случае, если вход к ppval
является нескалярным, затем форма выхода ppval
может отличаться от ppval
в MATLAB.
Если вы обеспечиваете d
, затем это должно иметь фиксированную длину. Один из следующих наборов операторов должен быть верным:
Предположим тот m = length(d)
и npieces = length(breaks) - 1
.
size(coefs,j) = d(j) size(coefs,m+1) = npieces size(coefs,m+2) = order
j
= 1,2..., m. Размерность m+2
должна быть фиксированная длина.Предположим тот m = length(d)
и npieces = length(breaks) - 1
.
size(coefs,1) = prod(d)*npieces size(coefs,2) = order
Если вы не обеспечиваете d
, затем следующие операторы должны быть верными:
Предположим тот m = length(d)
и npieces = length(breaks) - 1
.
size(coefs,1) = prod(d)*npieces size(coefs,2) = order
backgroundPool
или ускорьте код с Parallel Computing Toolbox™ ThreadPool
.Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.