Сделайте кусочный полином
pp = mkpp(breaks,coefs)
pp = mkpp(breaks,coefs,d)
Создайте кусочный полином, который имеет кубический полином в интервале [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
-by-k
матрица с ith строкой coefs(i,:)
, содержащий локальные коэффициенты порядка полином k
на ith интервале, [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]
, соответствующий полином
Указания и ограничения по применению:
Выходная структура 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
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.