NAG Library Function Document

nag_ode_bvp_ps_lin_grid_vals (d02uwc)

 Contents

    1  Purpose
    7  Accuracy

1
Purpose

nag_ode_bvp_ps_lin_grid_vals (d02uwc) interpolates from a set of function values on a supplied grid onto a set of values for a uniform grid on the same range. The interpolation is performed using barycentric Lagrange interpolation. nag_ode_bvp_ps_lin_grid_vals (d02uwc) is primarily a utility function to map a set of function values specified on a Chebyshev Gauss–Lobatto grid onto a uniform grid.

2
Specification

#include <nag.h>
#include <nagd02.h>
void  nag_ode_bvp_ps_lin_grid_vals (Integer n, Integer nip, const double x[], const double f[], double xip[], double fip[], NagError *fail)

3
Description

nag_ode_bvp_ps_lin_grid_vals (d02uwc) interpolates from a set of n+1 function values, fxi, on a supplied grid, xi, for i=0,1,,n, onto a set of m values, f^x^j, on a uniform grid, x^j, for j=1,2,,m. The image x^ has the same range as x, so that x^j = xmin + j-1 / m-1 × xmax - xmin , for j=1,2,,m. The interpolation is performed using barycentric Lagrange interpolation as described in Berrut and Trefethen (2004).
nag_ode_bvp_ps_lin_grid_vals (d02uwc) is primarily a utility function to map a set of function values specified on a Chebyshev Gauss–Lobatto grid computed by nag_ode_bvp_ps_lin_cgl_grid (d02ucc) onto an evenly-spaced grid with the same range as the original grid.

4
References

Berrut J P and Trefethen L N (2004) Barycentric lagrange interpolation SIAM Rev. 46(3) 501–517

5
Arguments

1:     n IntegerInput
On entry: n, where the number of grid points for the input data is n+1.
Constraint: n>0 and n is even.
2:     nip IntegerInput
On entry: the number, m, of grid points in the uniform mesh x^ onto which function values are interpolated. If nip=1 then on successful exit from nag_ode_bvp_ps_lin_grid_vals (d02uwc), fip[0] will contain the value fxn.
Constraint: nip>0.
3:     x[n+1] const doubleInput
On entry: the grid points, xi, for i=0,1,,n, at which the function is specified.
Usually this should be the array of Chebyshev Gauss–Lobatto points returned in nag_ode_bvp_ps_lin_cgl_grid (d02ucc).
4:     f[n+1] const doubleInput
On entry: the function values, fxi, for i=0,1,,n.
5:     xip[nip] doubleOutput
On exit: the evenly-spaced grid points, x^j, for j=1,2,,m.
6:     fip[nip] doubleOutput
On exit: the set of interpolated values f^x^j, for j=1,2,,m. Here f^x^jfx=x^j.
7:     fail NagError *Input/Output
The NAG error argument (see Section 3.7 in How to Use the NAG Library and its Documentation).

6
Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
See Section 2.3.1.2 in How to Use the NAG Library and its Documentation for further information.
NE_BAD_PARAM
On entry, argument value had an illegal value.
NE_INT
On entry, n=value.
Constraint: n>0.
On entry, n=value.
Constraint: n is even.
On entry, nip=value.
Constraint: nip>0.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
See Section 2.7.6 in How to Use the NAG Library and its Documentation for further information.
NE_NO_LICENCE
Your licence key may have expired or may not have been installed correctly.
See Section 2.7.5 in How to Use the NAG Library and its Documentation for further information.

7
Accuracy

nag_ode_bvp_ps_lin_grid_vals (d02uwc) is intended, primarily, for use with Chebyshev Gauss–Lobatto input grids. For such input grids and for well-behaved functions (no discontinuities, peaks or cusps), the accuracy should be a small multiple of machine precision.

8
Parallelism and Performance

nag_ode_bvp_ps_lin_grid_vals (d02uwc) is not threaded in any implementation.

9
Further Comments

None.

10
Example

This example interpolates the function x+cos5x, as specified on a 65-point Gauss–Lobatto grid on -1,1, onto a coarse uniform grid.

10.1
Program Text

Program Text (d02uwce.c)

10.2
Program Data

Program Data (d02uwce.d)

10.3
Program Results

Program Results (d02uwce.r)

© The Numerical Algorithms Group Ltd, Oxford, UK. 2017