d02 Chapter Contents
d02 Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_ode_bvp_ps_lin_cgl_vals (d02ubc)

## 1  Purpose

nag_ode_bvp_ps_lin_cgl_vals (d02ubc) evaluates a function, or one of its lower order derivatives, from its Chebyshev series representation at Chebyshev Gauss–Lobatto points on $\left[a,b\right]$. The coefficients of the Chebyshev series representation required are usually derived from those returned by nag_ode_bvp_ps_lin_coeffs (d02uac) or nag_ode_bvp_ps_lin_solve (d02uec).

## 2  Specification

 #include #include
 void nag_ode_bvp_ps_lin_cgl_vals (Integer n, double a, double b, Integer q, const double c[], double f[], NagError *fail)

## 3  Description

nag_ode_bvp_ps_lin_cgl_vals (d02ubc) evaluates the Chebyshev series
 $S x- = 12 c1 T0 x- + c2 T1 x- + c3T2 x- +⋯+ cn+1 Tn x- ,$
or its derivative (up to fourth order) at the Chebyshev Gauss–Lobatto points on $\left[a,b\right]$. Here ${T}_{j}\left(\stackrel{-}{x}\right)$ denotes the Chebyshev polynomial of the first kind of degree $j$ with argument $\stackrel{-}{x}$ defined on $\left[-1,1\right]$. In terms of your original variable, $x$ say, the input values at which the function values are to be provided are
 $xr = - 12 b - a cos πr-1 /n + 1 2 b + a , r=1,2,…,n+1 , ​$
where $b$ and $a$ are respectively the upper and lower ends of the range of $x$ over which the function is required.
The calculation is implemented by a forward one-dimensional discrete Fast Fourier Transform (DFT).

## 4  References

Canuto C (1988) Spectral Methods in Fluid Dynamics 502 Springer
Canuto C, Hussaini M Y, Quarteroni A and Zang T A (2006) Spectral Methods: Fundamentals in Single Domains Springer
Trefethen L N (2000) Spectral Methods in MATLAB SIAM

## 5  Arguments

1:     nIntegerInput
On entry: $n$, where the number of grid points is $n+1$. This is also the largest order of Chebyshev polynomial in the Chebyshev series to be computed.
Constraint: ${\mathbf{n}}>0$ and n is even.
On entry: $a$, the lower bound of domain $\left[a,b\right]$.
Constraint: ${\mathbf{a}}<{\mathbf{b}}$.
3:     bdoubleInput
On entry: $b$, the upper bound of domain $\left[a,b\right]$.
Constraint: ${\mathbf{b}}>{\mathbf{a}}$.
4:     qIntegerInput
On entry: the order, $q$, of the derivative to evaluate.
Constraint: $0\le {\mathbf{q}}\le 4$.
5:     c[${\mathbf{n}}+1$]const doubleInput
On entry: the Chebyshev coefficients, ${c}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n+1$.
6:     f[${\mathbf{n}}+1$]doubleOutput
On exit: the derivatives ${S}^{\left(q\right)}{x}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n+1$, of the Chebyshev series, $S$.
7:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
NE_INT
On entry, ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{n}}>0$.
On entry, ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: n is even.
On entry, ${\mathbf{q}}=〈\mathit{\text{value}}〉$.
Constraint: $0\le {\mathbf{q}}\le 4$.
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.
NE_REAL_2
On entry, ${\mathbf{a}}=〈\mathit{\text{value}}〉$ and ${\mathbf{b}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{a}}<{\mathbf{b}}$.

## 7  Accuracy

Evaluations of DFT to obtain function or derivative values should be a small multiple of machine precision assuming full accuracy to machine precision in the given Chebyshev series representation.

The number of operations is of the order $n\mathrm{log}n$ and the memory requirements are $\mathit{O}\left(n\right)$; thus the computation remains efficient and practical for very fine discretizations (very large values of $n$).