Сделать кусочно-многочленовый
Создайте кусочный многочлен, который имеет кубический многочлен в интервале [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]. Многочлен равен
x24 + x.
На третьем вложенном графике показан кусочный многочлен, построенный путем чередования этих двух квадратичных отрезков в течение четырех интервалов. Вертикальные линии добавляются, чтобы показать точки, в которых встречаются многочлены.
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], соответствующий многочлен
2 + c (x − x1) + d.
Примечания и ограничения по использованию:
Структура вывода pp отличается от pp структура в MATLAB ®. В MATLAB ,ppval не может использовать pp структура из генератора кода. Для создания кода, ppval не может использовать pp структура, созданная MATLAB. unmkpp может использовать MATLAB pp структура для создания кода.
Создание MATLAB pp структура из 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+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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.