exponenta event banner

mkpp

Сделать кусочно-многочленовый

Описание

пример

pp = mkpp(breaks,coefs) строит кусочный многочлен pp по его разрывам и коэффициентам. Использовать ppval для оценки кусочного многочлена в определенных точках, или unmkpp для извлечения подробностей о кусочном многочлене.

pp = mkpp(breaks,coefs,d) указывает, что кусочный многочлен является векторно-значимым, так что значение каждого из его коэффициентов является вектором длины 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')

Figure contains an axes. The axes contains 3 objects of type line.

Создайте и постройте график кусочного многочлена с четырьмя интервалами, чередующимися между двумя квадратичными многочленами.

Первые два вложенных графика показывают квадратичный многочлен и его отрицание смещается к интервалам [-8, -4] и [-4,0]. Многочлен равен

1- (x2-1) 2 = -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

Figure contains 3 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line. Axes 3 contains 4 objects of type line.

Входные аргументы

свернуть все

Точки разрыва, заданные как вектор длины L+1 со строго увеличивающимися элементами, которые представляют начало и конец каждого из L интервалы.

Типы данных: single | double

Полиномиальные коэффициенты, указанные как 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.

Типы данных: single | double

Выходные аргументы

свернуть все

Кусочный многочлен, возвращенный как структура. Используйте эту структуру с ppval функция для вычисления кусочного многочлена в одной или нескольких точках запроса. Структура имеет эти поля.

ОбластьОписание
form

'pp' для кусочного многочлена

breaks

Вектор длины L+1 со строго увеличивающимися элементами, которые представляют начало и конец каждого из L интервалы

coefs

Lоколо-k матрица с каждой строкой coefs(i,:) содержащий локальные коэффициенты порядка k полином на i-ом интервале, [breaks(i),breaks(i+1)]

pieces

Количество штук, L

order

Порядок многочленов

dim

Размерность цели

Так как полиномиальные коэффициенты в coefs являются локальными коэффициентами для каждого интервала, необходимо вычесть нижнюю конечную точку соответствующего узлового интервала, чтобы использовать коэффициенты в обычном полиномиальном уравнении. Другими словами, для коэффициентов [a,b,c,d] на интервале [x1,x2], соответствующий многочлен

f (x) = a (x x1) 3 + b (x x1) 2 + c (x − x1) + d.

Расширенные возможности

.

См. также

| | |

Представлен до R2006a