orthopoly(x, n, [,polycode [,parameters]]), x a REAL vector with no MISSING values, n >= 0 an integer, polycode one of p, j, g, t, u,l, h and d, parameters a REAL scalar or vector |

orthopoly() is a macro which computes values of several of the standard orthogonal polynomials. P <- orthopoly(x, n), where x is a REAL vector with no MISSING values and n > 0 is an integer, computes the matrix P = hconcat(P0(x), P1(x), ..., Pn(x)) where Pj(x) = vector(Pj(x[1], Pj(x[2]), ...) and Pj is the j-th Legendre polynomial. When x is a scalar, P is vector(P0(x),..., Pn(x)). P <- orthopoly(x, n, polycode [,parameters]) does the same except the type of polynomials is determined by polycode, an unquoted letter which must be one of p, j, g, t, T, u, U, l, h and d. parameters is required when polycode is j, G, or l, is optional when polycode is d and should not be an argument otherwise. The following table summarizes the options Polynomial type polycode parameters Legendre p none Jacobi j vector(alpha,beta) Gegenbauer g alpha Chebyshev 1 t none Shifted Chebyshev 1 T none Chebyshev 2 u none Shifted Chebyshev 2 U none Laguerre l alpha Hermite h none Discrete d vector w of with w[i] > 0; default is w = rep(1,length(x)). The discrete polynomials are defined by both vector x and the vector of weights. They are orthogonal on the discrete set x[1], ..., x[m], where m = length(x). That is, they satisfy w[1]*Pj(x[1])*Pk(x[1]) + w[2]*Pj(x[2])*Pk(x[2]) + . . . + w[m]*Pj(x[m])*Pk(x[m]) = 0, j != k All but the discrete polynomials are computed from the recurrence relations in Table 22.7 of Handbook of Mathematical Functions by Abramowitz and Stegun and satisfy the normalizations in Table 22.4. The discrete polynomials are also computed by recursion and are standardized so that sum(wj*poly(x[j])^2)/sum(wj) = 1

Gary Oehlert 2003-01-15