function c = idwts( s, n, m ) % Build weights c(j,k) such that % f(s) = \sum_{j=1}^n c( j, 1 ) f( j - 1 ) % f'(s) = (1/h) \sum_{j=1}^n c( j, 2 ) f( j - 1 ) % f''(s) = (1/h^2) \sum_{j=1}^n c( j, 3 ) f( j - 1 ) % ... % f^(m-1)(s) = (1/h^{m-1})\sum_{j=1}^n c( j, m ) f( j - 1 ) % for polynomials f of maximum possible degree. c1 = 1.0; c4 = -s; c = zeros( n, m ); c( 1, 1 ) = 1.0; for i = 1 : n - 1 c2 = 1.0; c5 = c4; c4 = i - s; for j = 0 : i - 1 c3 = i - j; c2 = c2 * c3; for k = min( i, m - 1 ) : -1 : 1 c( i + 1, k + 1 ) = c1 * ( k * c( i, k ) - c5 * c( i, k + 1 ) ) / c2; end c( i + 1, 1 ) = -c1 * c5 * c( i, 1 ) / c2; for k = min( i, m - 1 ) : -1 : 1 c( j + 1, k + 1 ) = ( c4 * c( j + 1, k + 1 ) - k * c( j + 1, k ) ) / c3; end c( j + 1, 1 ) = c4 * c( j + 1, 1 ) / c3; end c1 = c2; end end