# include # include # include # include # include "annulus_rule.h" /******************************************************************************/ void rule_adjust ( double a, double b, double c, double d, int order, double x[], double w[] ) /******************************************************************************/ /* Purpose: RULE_ADJUST maps a quadrature rule from [A,B] to [C,D]. Discussion: Most quadrature rules are defined on a special interval, like [-1,1] or [0,1]. To integrate over an interval, the abscissas and weights must be adjusted. This can be done on the fly, or by calling this routine. If the weight function W(X) is not 1, then the W vector will require further adjustment by the user. Licensing: This code is distributed under the GNU LGPL license. Modified: 11 March 2008 Author: John Burkardt Parameters: Input, double A, B, the endpoints of the definition interval. Input, double C, D, the endpoints of the integration interval. Input, int ORDER, the number of abscissas and weights. Input/output, double X[ORDER], W[ORDER], the abscissas and weights. */ { int i; for ( i = 0; i < order; i++ ) { x[i] = ( ( b - x[i] ) * c + ( x[i] - a ) * d ) / ( b - a ); } for ( i = 0; i < order; i++ ) { w[i] = ( ( d - c ) / ( b - a ) ) * w[i]; } return; }