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')

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

Первые два подграфика показывают квадратичный полином и его отрицание, переключенное к интервалам [-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

Входные параметры

свернуть все

Кусочный полином в виде структуры. Можно создать pp использование splinepchip, makimainterp1, или служебная функция сплайна mkpp.

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

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

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

свернуть все

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

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

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

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

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

Смотрите также

| | |

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