Сделайте кусочный полином
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.