Mercurial > hg > octave-lojdl
changeset 14104:614505385171 stable
doc: Overhaul docstrings for polynomial functions.
* mkpp.m, mpoles.m, pchip.m, poly.m, polyaffine.m, polyder.m, polyfit.m,
polygcd.m, polyint.m, polyout.m, polyreduce.m, polyval.m, polyvalm.m, ppder.m,
ppval.m, residue.m, roots.m, spline.m, unmkpp.m: Improve docstrings.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Fri, 23 Dec 2011 20:09:27 -0800 |
parents | 47b1c1c9b06a |
children | 0970a03170ea |
files | scripts/polynomial/compan.m scripts/polynomial/conv.m scripts/polynomial/deconv.m scripts/polynomial/mkpp.m scripts/polynomial/mpoles.m scripts/polynomial/pchip.m scripts/polynomial/poly.m scripts/polynomial/polyaffine.m scripts/polynomial/polyder.m scripts/polynomial/polyfit.m scripts/polynomial/polygcd.m scripts/polynomial/polyint.m scripts/polynomial/polyout.m scripts/polynomial/polyreduce.m scripts/polynomial/polyval.m scripts/polynomial/polyvalm.m scripts/polynomial/ppder.m scripts/polynomial/ppval.m scripts/polynomial/residue.m scripts/polynomial/roots.m scripts/polynomial/spline.m scripts/polynomial/unmkpp.m |
diffstat | 22 files changed, 97 insertions(+), 120 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/polynomial/compan.m +++ b/scripts/polynomial/compan.m @@ -51,8 +51,7 @@ ## @end ifnottex ## The eigenvalues of the companion matrix are equal to the roots of the ## polynomial. -## @seealso{poly, roots, residue, conv, deconv, polyval, polyder, -## polyint} +## @seealso{roots, poly, eig} ## @end deftypefn ## Author: Tony Richardson <arichard@stark.cc.oh.us>
--- a/scripts/polynomial/conv.m +++ b/scripts/polynomial/conv.m @@ -36,7 +36,7 @@ ## Return the central part of the convolution with the same size as @var{a}. ## @end table ## -## @seealso{deconv, fftconv, conv2, poly} +## @seealso{deconv, conv2, convn, fftconv} ## @end deftypefn ## Author: Tony Richardson <arichard@stark.cc.oh.us>
--- a/scripts/polynomial/deconv.m +++ b/scripts/polynomial/deconv.m @@ -26,7 +26,7 @@ ## If @var{y} and @var{a} are polynomial coefficient vectors, @var{b} will ## contain the coefficients of the polynomial quotient and @var{r} will be ## a remainder polynomial of lowest order. -## @seealso{conv, poly, roots, residue, polyval, polyder, polyint} +## @seealso{conv, residue} ## @end deftypefn ## Author: Tony Richardson <arichard@stark.cc.oh.us>
--- a/scripts/polynomial/mkpp.m +++ b/scripts/polynomial/mkpp.m @@ -20,7 +20,7 @@ ## @deftypefn {Function File} {@var{pp} =} mkpp (@var{breaks}, @var{coefs}) ## @deftypefnx {Function File} {@var{pp} =} mkpp (@var{breaks}, @var{coefs}, @var{d}) ## -## Construct a piece-wise polynomial (pp) structure from sample points +## Construct a piecewise polynomial (pp) structure from sample points ## @var{breaks} and coefficients @var{coefs}. @var{breaks} must be a vector of ## strictly increasing values. The number of intervals is given by ## @code{@var{ni} = length (@var{breaks}) - 1}. @@ -40,7 +40,7 @@ ## In any case @var{coefs} is reshaped to a 2-D matrix of ## size @code{[@var{ni}*prod(@var{d} @var{m})] } ## -## @seealso{unmkpp, ppval, spline} +## @seealso{unmkpp, ppval, spline, pchip, ppder, ppint, ppjumps} ## @end deftypefn function pp = mkpp (x, P, d)
--- a/scripts/polynomial/mpoles.m +++ b/scripts/polynomial/mpoles.m @@ -17,20 +17,21 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{multp}, @var{indx}] =} mpoles (@var{p}) -## @deftypefnx {Function File} {[@var{multp}, @var{indx}] =} mpoles (@var{p}, @var{tol}) -## @deftypefnx {Function File} {[@var{multp}, @var{indx}] =} mpoles (@var{p}, @var{tol}, @var{reorder}) -## Identify unique poles in @var{p} and associates their multiplicity, -## ordering them from largest to smallest. +## @deftypefn {Function File} {[@var{multp}, @var{idxp}] =} mpoles (@var{p}) +## @deftypefnx {Function File} {[@var{multp}, @var{idxp}] =} mpoles (@var{p}, @var{tol}) +## @deftypefnx {Function File} {[@var{multp}, @var{idxp}] =} mpoles (@var{p}, @var{tol}, @var{reorder}) +## Identify unique poles in @var{p} and their associated multiplicity. The +## output is ordered from largest pole to smallest pole. ## -## If the relative difference of the poles is less than @var{tol}, then +## If the relative difference of two poles is less than @var{tol} then ## they are considered to be multiples. The default value for @var{tol} ## is 0.001. ## ## If the optional parameter @var{reorder} is zero, poles are not sorted. ## -## The value @var{multp} is a vector specifying the multiplicity of the -## poles. @var{multp}(:) refers to multiplicity of @var{p}(@var{indx}(:)). +## The output @var{multp} is a vector specifying the multiplicity of the +## poles. @code{@var{multp}(n)} refers to the multiplicity of the Nth pole +## @code{@var{p}(@var{idxp}(n))}. ## ## For example: ## @@ -44,7 +45,7 @@ ## @end group ## @end example ## -## @seealso{poly, roots, conv, deconv, polyval, polyder, polyint, residue} +## @seealso{residue, poly, roots, conv, deconv} ## @end deftypefn ## Author: Ben Abbott <bpabbott@mac.com>
--- a/scripts/polynomial/pchip.m +++ b/scripts/polynomial/pchip.m @@ -19,16 +19,19 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {@var{pp} =} pchip (@var{x}, @var{y}) ## @deftypefnx {Function File} {@var{yi} =} pchip (@var{x}, @var{y}, @var{xi}) +## Return the Piecewise Cubic Hermite Interpolating Polynomial (pchip) of +## points @var{x} and @var{y}. ## -## Piecewise Cubic Hermite interpolating polynomial. Called with two -## arguments, the piecewise polynomial @var{pp} is returned, that may -## later be used with @code{ppval} to evaluate the polynomial at -## specific points. +## If called with two arguments, return the piecewise polynomial @var{pp} +## that may be used with @code{ppval} to evaluate the polynomial at specific +## points. When called with a third input argument, @code{pchip} evaluates +## the pchip polynomial at the points @var{xi}. The third calling form is +## equivalent to @code{ppval (pchip (@var{x}, @var{y}), @var{xi})}. ## ## The variable @var{x} must be a strictly monotonic vector (either -## increasing or decreasing). While @var{y} can be either a vector or -## an array. In the case where @var{y} is a vector, it must have the -## length @var{n}. If @var{y} is an array, then the size of @var{y} must +## increasing or decreasing) of length @var{n}. @var{y} can be either a +## vector or array. If @var{y} is a vector then it must be the same length +## @var{n} as @var{x}. If @var{y} is an array then the size of @var{y} must ## have the form ## @tex ## $$[s_1, s_2, \cdots, s_k, n]$$ @@ -36,7 +39,7 @@ ## @ifnottex ## @code{[@var{s1}, @var{s2}, @dots{}, @var{sk}, @var{n}]} ## @end ifnottex -## The array is then reshaped internally to a matrix where the leading +## The array is reshaped internally to a matrix where the leading ## dimension is given by ## @tex ## $$s_1 s_2 \cdots s_k$$ @@ -44,14 +47,9 @@ ## @ifnottex ## @code{@var{s1} * @var{s2} * @dots{} * @var{sk}} ## @end ifnottex -## and each row in this matrix is then treated separately. Note that this -## is exactly the opposite treatment than @code{interp1} and is done -## for compatibility. -## -## Called with a third input argument, @code{pchip} evaluates the -## piecewise polynomial at the points @var{xi}. There is an equivalence -## between @code{ppval (pchip (@var{x}, @var{y}), @var{xi})} and -## @code{pchip (@var{x}, @var{y}, @var{xi})}. +## and each row of this matrix is then treated separately. Note that this +## is exactly opposite to @code{interp1} but is done for @sc{matlab} +## compatibility. ## ## @seealso{spline, ppval, mkpp, unmkpp} ## @end deftypefn @@ -168,4 +166,4 @@ %!assert(yi3(:,:,1),[1,0;2,1;0,-1],1e-14); %!assert(squeeze(yi1(1,2,:)),[1/sqrt(2); 0; -1/sqrt(2);-1],1e-14); %!assert(size(yi2),[3,2,5,4]); -%!assert(squeeze(yi2(1,2,3,:)),[1/sqrt(2); 0; -1/sqrt(2);-1],1e-14); \ No newline at end of file +%!assert(squeeze(yi2(1,2,3,:)),[1/sqrt(2); 0; -1/sqrt(2);-1],1e-14);
--- a/scripts/polynomial/poly.m +++ b/scripts/polynomial/poly.m @@ -38,13 +38,12 @@ ## numerical performance the @code{eig} function should be used to compute ## eigenvalues. ## -## If @var{x} is a vector, @code{poly (@var{x})} is a vector of the coefficients -## of the polynomial whose roots are the elements of @var{x}. That is, -## if @var{c} is a polynomial, then the elements of -## @code{@var{d} = roots (poly (@var{c}))} are contained in @var{c}. -## The vectors @var{c} and @var{d} are not identical, however, due to sorting -## and numerical errors. -## @seealso{eig, roots} +## If @var{x} is a vector, @code{poly (@var{x})} is a vector of the +## coefficients of the polynomial whose roots are the elements of @var{x}. +## That is, if @var{c} is a polynomial, then the elements of @code{@var{d} = +## roots (poly (@var{c}))} are contained in @var{c}. The vectors @var{c} and +## @var{d} are not identical, however, due to sorting and numerical errors. +## @seealso{roots, eig} ## @end deftypefn ## Author: KH <Kurt.Hornik@wu-wien.ac.at>
--- a/scripts/polynomial/polyaffine.m +++ b/scripts/polynomial/polyaffine.m @@ -27,7 +27,7 @@ ## g(x) = f((x-@var{mu}(1))/@var{mu}(2)). ## @end example ## -## @seealso{polyval} +## @seealso{polyval, polyfit} ## @end deftypefn @@ -70,25 +70,19 @@ endfunction +%!demo +%! f = [1/5 4/5 -7/5 -2]; +%! g = polyaffine (f, [1, 1.2]); +%! x = linspace (-4, 4, 100); +%! plot(x, polyval (f, x), x, polyval (g, x)); +%! legend ("original", "affine"); +%! axis ([-4 4 -3 5]); +%! grid ("on"); + %!test %! f = [1/5 4/5 -7/5 -2]; -%! %! mu = [1, 1.2]; -%! %! g = polyaffine (f, mu); -%! %! x = linspace (-4, 4, 100); -%! -%! assert (polyval(f, x, [], mu), polyval (g, x), 1e-10); +%! assert (polyval (f, x, [], mu), polyval (g, x), 1e-10); -%!demo -%! f = [1/5 4/5 -7/5 -2]; -%! -%! g = polyaffine (f, [1, 1.2]); -%! -%! x = linspace (-4, 4, 100); -%! -%! plot(x, polyval (f, x), x, polyval (g, x)); -%! -%! axis ([-4 4 -3 5]); -%! grid ("on");
--- a/scripts/polynomial/polyder.m +++ b/scripts/polynomial/polyder.m @@ -26,8 +26,7 @@ ## If two inputs and two outputs are given, return the derivative of the ## polynomial quotient @math{@var{b}/@var{a}}. The quotient numerator is ## in @var{q} and the denominator in @var{d}. -## @seealso{poly, polyint, polyreduce, roots, conv, deconv, residue, -## filter, polygcd, polyval, polyvalm} +## @seealso{polyint, polyval, polyreduce} ## @end deftypefn ## Author: Tony Richardson <arichard@stark.cc.oh.us>
--- a/scripts/polynomial/polyfit.m +++ b/scripts/polynomial/polyfit.m @@ -21,11 +21,12 @@ ## @deftypefnx {Function File} {[@var{p}, @var{s}] =} polyfit (@var{x}, @var{y}, @var{n}) ## @deftypefnx {Function File} {[@var{p}, @var{s}, @var{mu}] =} polyfit (@var{x}, @var{y}, @var{n}) ## Return the coefficients of a polynomial @var{p}(@var{x}) of degree -## @var{n} that minimizes the least-squares-error of the fit. +## @var{n} that minimizes the least-squares-error of the fit to the points +## @code{[@var{x}, @var{y}]}. ## ## The polynomial coefficients are returned in a row vector. ## -## The second output is a structure containing the following fields: +## The optional output @var{s} is a structure containing the following fields: ## ## @table @samp ## @item R @@ -53,7 +54,7 @@ ## Where @var{mu}(1) = mean (@var{x}), and @var{mu}(2) = std (@var{x}). ## This linear transformation of @var{x} improves the numerical ## stability of the fit. -## @seealso{polyval, residue} +## @seealso{polyval, polyaffine, roots, vander, zscore} ## @end deftypefn ## Author: KH <Kurt.Hornik@wu-wien.ac.at> @@ -80,8 +81,6 @@ error ("polyfit: N must be a non-negative integer"); endif - y_is_row_vector = (rows (y) == 1); - ## Reshape x & y into column vectors. l = numel (x); x = x(:); @@ -98,7 +97,7 @@ if (nargout > 1) yf = v*p; - if (y_is_row_vector) + if (isrow (y)) s.yf = yf.'; else s.yf = yf;
--- a/scripts/polynomial/polygcd.m +++ b/scripts/polynomial/polygcd.m @@ -23,12 +23,11 @@ ## Find the greatest common divisor of two polynomials. This is equivalent ## to the polynomial found by multiplying together all the common roots. ## Together with deconv, you can reduce a ratio of two polynomials. -## Tolerance defaults to @code{sqrt(eps)}. +## The tolerance @var{tol} defaults to @code{sqrt(eps)}. ## -## Note that this is a numerically unstable algorithm, and should not be used -## on large polynomials. +## @strong{Caution:} This is a numerically unstable algorithm and should not be used on large polynomials. ## -## Example: +## Example code: ## ## @example ## @group @@ -39,8 +38,7 @@ ## @result{} [ 0, 0, 0 ] ## @end group ## @end example -## @seealso{poly, polyint, polyder, polyreduce, roots, conv, deconv, -## residue, filter, polyval, polyvalm} +## @seealso{poly, roots, conv, deconv, residue} ## @end deftypefn function x = polygcd (b, a, tol)
--- a/scripts/polynomial/polyint.m +++ b/scripts/polynomial/polyint.m @@ -22,8 +22,7 @@ ## Return the coefficients of the integral of the polynomial whose ## coefficients are represented by the vector @var{p}. The variable ## @var{k} is the constant of integration, which by default is set to zero. -## @seealso{poly, polyder, polyreduce, roots, conv, deconv, residue, -## filter, polyval, polyvalm} +## @seealso{polyder, polyval} ## @end deftypefn ## Author: Tony Richardson <arichard@stark.cc.oh.us>
--- a/scripts/polynomial/polyout.m +++ b/scripts/polynomial/polyout.m @@ -31,11 +31,9 @@ ## @end example ## ## @end ifnottex -## and return it as a string or write it to the screen (if -## @var{nargout} is zero). -## @var{x} defaults to the string @code{"s"}. -## @seealso{polyval, polyvalm, poly, roots, conv, deconv, residue, -## filter, polyder, polyint} +## and return it as a string or write it to the screen (if @var{nargout} is +## zero). @var{x} defaults to the string @code{"s"}. +## @seealso{polyreduce} ## @end deftypefn ## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu>
--- a/scripts/polynomial/polyreduce.m +++ b/scripts/polynomial/polyreduce.m @@ -20,8 +20,7 @@ ## @deftypefn {Function File} {} polyreduce (@var{c}) ## Reduce a polynomial coefficient vector to a minimum number of terms by ## stripping off any leading zeros. -## @seealso{poly, roots, conv, deconv, residue, filter, polyval, -## polyvalm, polyder, polyint} +## @seealso{polyout} ## @end deftypefn ## Author: Tony Richardson <arichard@stark.cc.oh.us>
--- a/scripts/polynomial/polyval.m +++ b/scripts/polynomial/polyval.m @@ -24,15 +24,15 @@ ## (@var{x}-@var{mu}(1))/@var{mu}(2). ## If @var{x} is a vector or matrix, the polynomial is evaluated for each of ## the elements of @var{x}. +## ## @deftypefnx {Function File} {[@var{y}, @var{dy}] =} polyval (@var{p}, @var{x}, @var{s}) ## @deftypefnx {Function File} {[@var{y}, @var{dy}] =} polyval (@var{p}, @var{x}, @var{s}, @var{mu}) ## In addition to evaluating the polynomial, the second output ## represents the prediction interval, @var{y} +/- @var{dy}, which ## contains at least 50% of the future predictions. To calculate the ## prediction interval, the structured variable @var{s}, originating -## form `polyfit', must be present. -## @seealso{polyfit, polyvalm, poly, roots, conv, deconv, residue, filter, -## polyder, polyint} +## from @code{polyfit}, must be supplied. +## @seealso{polyvalm, polyaffine, polyfit, roots, poly} ## @end deftypefn ## Author: Tony Richardson <arichard@stark.cc.oh.us>
--- a/scripts/polynomial/polyvalm.m +++ b/scripts/polynomial/polyvalm.m @@ -23,11 +23,10 @@ ## ## @code{polyvalm (@var{c}, @var{x})} will evaluate the polynomial in the ## matrix sense, i.e., matrix multiplication is used instead of element by -## element multiplication as is used in polyval. +## element multiplication as used in @code{polyval}. ## ## The argument @var{x} must be a square matrix. -## @seealso{polyval, poly, roots, conv, deconv, residue, filter, -## polyder, polyint} +## @seealso{polyval, roots, poly} ## @end deftypefn ## Author: Tony Richardson <arichard@stark.cc.oh.us>
--- a/scripts/polynomial/ppder.m +++ b/scripts/polynomial/ppder.m @@ -17,10 +17,10 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {ppd =} ppder (pp, m) +## @deftypefn {Function File} {ppd =} ppder (pp) +## @deftypefnx {Function File} {ppd =} ppder (pp, m) ## Compute the piecewise @var{m}-th derivative of a piecewise polynomial -## struct @var{pp}. If @var{m} is omitted the first derivate is -## calculated. +## struct @var{pp}. If @var{m} is omitted the first derivative is calculated. ## @seealso{mkpp, ppval, ppint} ## @end deftypefn
--- a/scripts/polynomial/ppval.m +++ b/scripts/polynomial/ppval.m @@ -18,18 +18,13 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {@var{yi} =} ppval (@var{pp}, @var{xi}) -## Evaluate piece-wise polynomial structure @var{pp} at the points @var{xi}. +## Evaluate the piecewise polynomial structure @var{pp} at the points @var{xi}. ## If @var{pp} describes a scalar polynomial function, the result is an ## array of the same shape as @var{xi}. ## Otherwise, the size of the result is @code{[pp.dim, length(@var{xi})]} if ## @var{xi} is a vector, or @code{[pp.dim, size(@var{xi})]} if it is a ## multi-dimensional array. -## -##, the dimensions are permuted as -## in interp1, to -## @code{[pp.d, length(@var{xi})]} and @code{[pp.d, size(@var{xi})]} -## respectively. -## @seealso{mkpp, unmkpp, spline, pchip, interp1} +## @seealso{mkpp, unmkpp, spline, pchip} ## @end deftypefn function yi = ppval (pp, xi)
--- a/scripts/polynomial/residue.m +++ b/scripts/polynomial/residue.m @@ -136,7 +136,7 @@ ## @end example ## ## @end ifnottex -## @seealso{poly, roots, conv, deconv, mpoles, polyval, polyder, polyint} +## @seealso{mpoles, poly, roots, conv, deconv} ## @end deftypefn ## Author: Tony Richardson <arichard@stark.cc.oh.us>
--- a/scripts/polynomial/roots.m +++ b/scripts/polynomial/roots.m @@ -50,7 +50,7 @@ ## @example ## @group ## c = [1, 0, -5]; -## roots(c) +## roots (c) ## @result{} 2.2361 ## @result{} -2.2361 ## @end group @@ -70,7 +70,7 @@ ## @ifnottex ## @math{+/- 2.2361}. ## @end ifnottex -## @seealso{compan} +## @seealso{poly, compan, fzero} ## @end deftypefn ## Author: KH <Kurt.Hornik@wu-wien.ac.at>
--- a/scripts/polynomial/spline.m +++ b/scripts/polynomial/spline.m @@ -20,23 +20,22 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {@var{pp} =} spline (@var{x}, @var{y}) ## @deftypefnx {Function File} {@var{yi} =} spline (@var{x}, @var{y}, @var{xi}) +## Return the cubic spline interpolant of points @var{x} and @var{y}. +## +## When called with two arguments, return the piecewise polynomial @var{pp} +## that may be used with @code{ppval} to evaluate the polynomial at specific +## points. When called with a third input argument, @code{spline} evaluates +## the spline at the points @var{xi}. The third calling form @code{spline +## (@var{x}, @var{y}, @var{xi})} is equivalent to @code{ppval (spline +## (@var{x}, @var{y}), @var{xi})}. ## -## Return the cubic spline interpolant of @var{y} at points @var{x}. -## If called with two arguments, @code{spline} returns the piecewise -## polynomial @var{pp} that may later be used with @code{ppval} to -## evaluate the polynomial at specific points. -## If called with a third input argument, @code{spline} evaluates the -## spline at the points @var{xi}. There is an equivalence -## between @code{ppval (spline (@var{x}, @var{y}), @var{xi})} and -## @code{spline (@var{x}, @var{y}, @var{xi})}. -## -## The variable @var{x} must be a vector of length @var{n}, and @var{y} -## can be either a vector or array. In the case where @var{y} is a -## vector, it can have a length of either @var{n} or @code{@var{n} + 2}. -## If the length of @var{y} is @var{n}, then the 'not-a-knot' end -## condition is used. If the length of @var{y} is @code{@var{n} + 2}, -## then the first and last values of the vector @var{y} are the values -## of the first derivative of the cubic spline at the end-points. +## The variable @var{x} must be a vector of length @var{n}. @var{y} can be +## either a vector or array. If @var{y} is a vector it must have a length of +## either @var{n} or @code{@var{n} + 2}. If the length of @var{y} is +## @var{n}, then the "not-a-knot" end condition is used. If the length of +## @var{y} is @code{@var{n} + 2}, then the first and last values of the +## vector @var{y} are the values of the first derivative of the cubic spline +## at the endpoints. ## ## If @var{y} is an array, then the size of @var{y} must have the form ## @tex @@ -52,7 +51,7 @@ ## @ifnottex ## @code{[@var{s1}, @var{s2}, @dots{}, @var{sk}, @var{n} + 2]}. ## @end ifnottex -## The array is then reshaped internally to a matrix where the leading +## The array is reshaped internally to a matrix where the leading ## dimension is given by ## @tex ## $$s_1 s_2 \cdots s_k$$ @@ -61,9 +60,10 @@ ## @code{@var{s1} * @var{s2} * @dots{} * @var{sk}} ## @end ifnottex ## and each row of this matrix is then treated separately. Note that this -## is exactly the opposite treatment than @code{interp1} and is done -## for compatibility. -## @seealso{ppval, mkpp, unmkpp} +## is exactly opposite to @code{interp1} but is done for @sc{matlab} +## compatibility. +## +## @seealso{pchip, ppval, mkpp, unmkpp} ## @end deftypefn ## This code is based on csape.m from octave-forge, but has been
--- a/scripts/polynomial/unmkpp.m +++ b/scripts/polynomial/unmkpp.m @@ -20,7 +20,7 @@ ## @deftypefn {Function File} {[@var{x}, @var{p}, @var{n}, @var{k}, @var{d}] =} unmkpp (@var{pp}) ## ## Extract the components of a piecewise polynomial structure @var{pp}. -## These are as follows: +## The components are: ## ## @table @asis ## @item @var{x} @@ -43,7 +43,7 @@ ## Number of polynomials defined for each interval. ## @end table ## -## @seealso{mkpp, ppval, spline} +## @seealso{mkpp, ppval, spline, pchip} ## @end deftypefn function [x, P, n, k, d] = unmkpp (pp)