function [x, DM] = herdif(N, M, b); % The function [x, DM] = herdif(N, M, b) computes the % differentiation matrices D1, D2, ..., DM on Hermite points. % % Input: % N: Number of points, i.e., order of differentiation matrices (integer). % M: Number of derivatives required (integer). % b: Scaling parameter (real, positive). % % Note: 0 < M < N-1. % % Output: % x: Vector of nodes (zeros of Hermite polynomial of degree N, % scaled by the parameter b.) % DM: DM(1:N,1:N,l) contains l-th derivative matrix, l=1..M. % J.A.C Weideman, S.C. Reddy 1998. x = herroots(N); % Compute Hermite roots. alpha = exp(-x.^2/2); % Compute weights. beta(1,:) = ones(size(x')); % Set up beta matrix s.t. beta(l,j) = beta(2,:) = -x'; % (l-th derivative of alpha(x))/alpha(x), % evaluated at x = x(j). for ell = 3:M+1 beta(ell,:) = -x'.*beta(ell-1,:)-(ell-2)*beta(ell-2,:); end beta(1,:) = []; % Remove initializing row from beta DM = poldif(x, alpha, beta); % Compute differentiation matrix (b=1). x = x/b; % Scale nodes by the factor b. for ell = 1:M % Adjust for b not equal to 1. DM(:,:,ell) = (b^ell)*DM(:,:,ell); end