exponenta event banner

ppval

Вычислить кусочный многочлен

Синтаксис

Описание

пример

v = ppval(pp,xq) вычисляет кусочный многочлен pp в точках запроса xq.

Примеры

свернуть все

Создайте кусочный многочлен, который имеет кубический многочлен в интервале [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.

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

свернуть все

Кусочный многочлен, заданный как структура. Можно создавать pp использование spline, pchip, makima, interp1или вспомогательная функция сплайна mkpp.

Точки запроса, указанные как вектор или массив. xq указывает точки, где ppval вычисляет кусочный многочлен.

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

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

свернуть все

Кусочные полиномиальные значения в точках запроса, возвращаемые как вектор, матрица или массив.

Если pp имеет [d1,..,dr]-значимые коэффициенты (нескалярные значения коэффициентов), затем:

  • Когда xq - вектор длины N, v имеет размер [d1,...,dr,N], и v(:,...,:,j) - значение при xq(j).

  • Когда xq имеет размер [N1,...,Ns], v имеет размер [d1,...,dr,N1,...,Ns], и v(:,...,:, j1,...,js) - значение при xq(j1,...,js).

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

.

См. также

| | |

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